视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
数值计算上机实习题目(matlab编程)
2025-09-28 02:22:27 责编:小OO
文档
非线性方程求根

一、实验目的

    本次实验通过上机实习,了解迭代法求解非线性方程数值解的过程和步骤。

二、实验要求

1、用迭代法求方程的根。

要求:确定迭代函数(x),使得x=(x),并求一根。提示:构造迭代函数。

2、对上面的方程用牛顿迭代计算。

3、用割线法求方程在附近的根。误差限为,取。

三、实验内容

1、(1)首先编写迭代函数,记为iterate.m

function y=iterate(x)

x1=g(x);    % x为初始值。

n=1;

while(abs(x1-x)>=1.0e-6)&(n<=1000) % 迭代终止的原则。

x=x1;

x1=g(x);

n=n+1;

end

x1       %近似根

n        %迭代步数

(2)后编制函数文件(x),记为g.m

function y=g(x)

y=log(3*x.^2);

            (3)设初始值为0、3、-3、1000,观察初始值对求解的影响。将结果记录在文档中。

>>iterate(0)

>>iterate(3) 等等

2、(1)首先编制牛顿迭代函数如下,记为newton.m

function y=newton(x0)

x1=x0-fc(x0)/df(x0);  % 牛顿迭代格式

n=1;

while(abs(x1-x0)>=1.0e-6)&(n<=1000000) % 迭代终止的原则。

x0=x1;

      x1=x0-fc(x0)/df(x0);

      n=n+1;

      end

x1       %近似根

n        %迭代步数

(2)对题目中的方程编制函数文件,记为fc.m

function y=fc(x)

y=3*x.^2-exp(x)

编制函数的导数文件,记为df.m

function y=df(x)

y=6*x-exp(x)

(3)在MATLAB命令窗计算,当设初始值为0时, newton(0);给定不同的初始值,观察用牛顿法求解时所需要的迭代步数,并与上面第一题的迭代步数比较。将得到的结果记录下来。

3、参考上面两题的程序,编写割线法的MATLAB程序,并求解问题的近似根。

四、课外练习

1.迭代函数对收敛性的影响

实验题目

用迭代法求方程的根。

方案1   化方程为等价方程

            

取初值,迭代10次。

方案2   化为等价方程

取初值,迭代10次,观察其计算值,并加以分析。

2.初值的选取对迭代法的影响

实验题目

用牛顿法求方程在附近的根。

方案1  使用牛顿法并取,由

迭代10次。

方案2   取,使用同样的公式

迭代10次,观察比较并分析原因。

3.收敛性与收敛速度的比较

实验题目

求方程的全部实根,.

方案1.用牛顿法求解;

方案2.用简单迭代法;

取相同迭代法初值,比较各方法的收敛速度。

线性方程组的数值解法

实验一

实验目的:

练习引入迭代和矩阵的形式来解决方程组问题。巩固方程与矩阵相互关系的概念。

实验要求: 

         学会用矩阵的形式来解决方程组问题在计算机上的实现。分析雅可比迭代与其它迭代的异同。

实验内容:

题目:用雅可比迭代求方程组: AX=B

      已知:A、B如下:

A =                                         B =

    -4    -1     0    -1     0     0           0

    -1     4    -1     0    -1     0           5

     0    -1     4     0     0    -1           0

    -1     0     0     4    -1     0           6

     0    -1     0    -1     4    -1           2

     0     0    -1     0    -1     4           6

     

原理: 先找出下三角阵-L,再找出上对角阵-U,还有主对角阵D。

       迭代公式x=inv(D)*(L+U)*x+inv(D)*B

设计思想: 利用迭代即可在循环中实现的原则来完成此方程组的求解,所用的迭代公式为:x=inv(D)*(L+U)*x+inv(D)*B

实验二

实验目的:加强编程能力和编程技巧,练习从数值分析的角度看问题。同时用Matlab编写代码。如果编程有困难,就利用已经给出的命令来求解。

实验要求: 用选主元素法和高斯消去法两种方法解方程组。熟悉直接求解的方法。

实验内容:

题目:用选主元素法和高斯消去法求解下列方程组:

已知方程增广矩阵:a =

 

     2    -1     0     0     6

    -1    -3    -2     0     1

    -1     3    -2     0     0

     0     0    -3     5     1

原理: (1)高斯消去法:相对于约当消去法而言,总的来说就是将增广矩阵化为下三角阵。

(2) 选主元素法:相对于高斯消去法的唯一不同是每次将对角线元素化为1前,要先按当前要排列元素所在列大小进行排列。

设计思想: (1)高斯消去法:首先让每一行的元素除以该行的主对角线元素。然后利用此行使位于下一行主对角线以前的元素变为0,依次类推。

          (2)选主元素法:在高斯消去法的基础上,每次进行化上三角阵之前,重新排列各方程的位置。

三、课外练习题

   1、用雅可比迭代、高斯-塞德尔迭代求方程组:A*X= B

             A=[5 2 1 ;-1 4 2 ;2 -3 10], B=[-12 ;20 ;3]

        给定初始值            X=[0 ;0 ;0]

        并给出满足一定精度时迭代终止的步数。

   2、设A=[1 2 3;2 3 4;3 4 7],b=[6 9 14],用直接法求解方程组的解。

           3、熟悉矩阵范数的求法,生成n阶的Hilbert矩阵,并计算其条件        

                 数,了解病态矩阵。           

附:求解线性方程组的相关资料

一、直接法—矩阵除法

关于线性方程组的直接求解,如高斯消去法、选主元消去法、追赶法等,只需要矩阵左除、右除即可。求Ax=b,一般x=A\\b。

另外,有关直接解法及处理大型矩阵的运算和编程需要,还需要了解几种矩阵分解。

(1)LU分解  lu(A)

(2)Cholesky分解   chol(A)

(3)奇异值分解 svd(A)

(4)QR分解

(5)有时需要用到系数矩阵的对角部分等等,有

                上三角变换:由triu实现

                下三角变换:由tril实现

                对角变换:    由diag实现

二、迭代解法的几种形式

1、Jacobi迭代

2、G-S迭代

3、SOR迭代

插值法

一、实验目的

    本次实验通过上机实习,了解函数逼近的拉格朗日插值、分段插值、三次样条插值、最小二乘算法等。分析并比较它们的优缺点,深刻理解这些算法。

二、实验要求

1、已知f(xn)=yn ,n=0,1,2,…,N;求通过这N+1个节点{(xn,yn)| n=0,1,2,…,N }的插值函数Pn (x)。 设计出具体的程序,使用拉格朗日插值算法绘制出相应的插值曲线。对于给出的实例,理解Lagrange插值的龙格现象。并熟悉分段线性插值算法。

2、使用Matlab已有的函数,掌握分段线性插值、样条插值、最小二乘拟合等。

三、实验内容

1、Lagrange插值多项式

    实验题:取函数 

    目的:学会Lagrange插值算法,并应用算法于实际问题;观察 Lagrange插值的龙格现象。

 它在区间上的各阶导数存在,但在此区间上取n个节点所构造的 Lagrange插值多项式在全区间内并非都收敛,而且分散的很厉害.

要求:取n=10,用Lagrange插值法进行插值计算.在同一图形窗口中比较原函数和插值函数.应该可以看到,插值曲线已经严重偏离了原曲线。

2、为了解决上面这个问题,引入分段线性插值。用interp1函数来计算上例的函数插值。interp1函数具体用法可以参考《数学实验与软件》或Matlab帮助文件。

3、熟悉样条插值。

实验题:给定如下数据,试求满足自然边界条件的三次样条插值函数:

  x=28.7,28,29,30,对应的函数值为4.1,4.3,4.1,3.0,

在图形窗口中给出拟合图形。

4、曲线拟合——最小二乘法拟合

    在Matlab中实现最小二乘法拟合可以利用polyfit函数进行多项式拟合。

实验题:设y=span{1,x,x2},用最小二乘法拟合如下数据:

    x=0.5, 1.0, 1.5, 2.0, 2.5, 3.0;

    y=1.75,2.45,3.81,4.80,8.00,8.60;

   并给出拟合图形。

四、课外练习题

    给定数据x=1:6; y=[16 18 21 17 15 12];将 Lagrange插值、样条插值、线性插值曲线在一个图形窗口中用不同的颜色显示出来。

数值积分

一、实验目的

(1)学会复化梯形、复化Simpson、复化Cotes求积公式的编程与使用。

(2)了解高精度求积公式的方法,如Gauss求积公式。

(3)学会运用Matlab提供的积分函数求给定区间上的积分。

二、实验要求

(1)按照题目要求完成实验内容。

(2)写出相应的Matlab程序。

(3)给出实验结果,与精确积分值相比较。

三、实验内容

   

 1、用复化梯形公式、复化Simpson公式计算下列积分,并与精确值比较,探讨两种积分公式的精度。

(1),将区间8等分。

(2),将区间4等分。

(3),将区间6等分

 2、用复合梯形公式、复合抛物线公式、龙贝格公式求定积分

       ;

    . 

     要求绝对误差为,将计算结果与精确解做比较,并对计算结果进行分析。

 3、了解高精度求积公式的方法,如Gauss求积公式,试按照教材内容求出近似积分值。

附:数值积分的相关资料

一、关于数值积分,Matlab有以下函数:

trapz               梯形求积法

quad               Simpson求积法

quadl              Lobatto求积法

dblquad          二重积分

triplequad       三重积分

      本节课主要介绍前两种函数的用法,另外的函数同学们有兴趣,可以查看帮助文件了解其用法。

(1) trapz  函数             梯形求积法

    例1:试取9个节点分别用复化梯形公式计算.

解:输入x=0:1/8:1;

                 y=1./(1+x.^2);

                 I=trapz(x,y)

       得到 I=0.7847

(2) quad 函数              

    quad ()函数采用自适应步长的Simpson求积法,其应用格式为:

            I=quad(fun,a,b,tol)

其中fun是被积函数,有两种形式,第一种用inline()命令定义函数,第二种是写出外部函数fun.m;a,b是区间两端点;tol是积分的精度要求,缺省值为10-6

例2:用quad 函数求例1中的积分值,精度要求为10-6

 解:输入     fun=inline(‘1./(1+x.^2)’) ;  I=quad(fun,0,1)

         得到I=0.7854

         或者编写外部函数fun.m

                  function y=fun(x)

                   y=1./(1+x.^2);

             再使用quad ()函数求积分,有I=quad(@fun,0,1)

        

二、编写复化求积公式的程序来求近似积分值。

1、复化梯形法

将区间[a,b]N等分,子区间的长为,复化梯形求积公式为:

  

    

按照上式编写复化梯形求积函数。(函数名:T_quad.m)

function  I=T_quad(x,y)

n=length(x);m=length(y);

if n~=m

   error('The engths of X and Y must be equal');

   return;

end

h=(x(n)-x(1))/(n-1);

a=[1 2*ones(1,n-2)  1];

I=h/2*sum(a.*y);

例:用复化梯形公式求积分,在积分区间中点与点的间隔取为0.1。

解:输入x=-1:0.1:1;

                 y=exp(-x.^2);

                 I=T_quad(x,y)

       得到I=1.4924

2、复化Simpson法

将区间[a,b]N等分,子区间的长为,在每个子区间上使用Simpson公式,还需要将每个子区间二等分,因此有2N+1个分点。复化Simpson求积公式为:

  

    

        按照上式编写复化梯形求积函数。(函数名:S_quad.m)

         function  I=S_quad(x,y)

         n=length(x);m=length(y);

         if n~=m

             error('The engths of X and Y must be equal');

             return;

         end      

         if rem(n-1,2)~=0  %如果n-1不能被2整除,则调用复化梯形公式

             I=T_quad(x,y);

             Return;

        end

        N=(n-1)/2;h=(x(n)-x(1))/N;a=zeros(1,n);

        for  k=1:N

               a(2*k-1)=a(2*k-1)+1;   a(2*k)=a(2*k)+4;

               a(2*k+1)=a(2*k+1)+1;

        end

             I=h/6*sum(a.*y);

例:用复化Simpson公式求积分,在积分区间中点与点的间隔

取为0.1。

解:输入x=-1:0.1:1;

                 y=exp(-x.^2);

                 I=S_quad(x,y)

       得到I=1.4936下载本文

显示全文
专题