高斯赛德尔迭代和牛顿迭代matlab实践.docxVIP

高斯赛德尔迭代和牛顿迭代matlab实践.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

PAGE1

《MATLAB与数学建模》

课内实验报告

姓名:

学号:

学院:

班级:

课程名称:

MATLAB与数学建模

实验题目:

MATLAB的程序设计

指导教师:

2023年03月24日

-PAGE1-

一、实验目的

1.掌握MATLAB的流程控制;

2.了解Gauss-Seidel迭代求解线性代数方程组和Newton迭代求解非线性方程的算法;

3.掌握MATLAB程序设计的基本过程。

二、实验内容和结果

1.利用Gauss-Seidel迭代求解线性代数方程组。

Gauss-Seidel迭代公式x(k+1)=-L-1Ux(k)+L

[注:要求给出不同规模(即系数矩阵是几阶、十几阶、几十阶等等)的算例]

Gauss-Seidel迭代法简要介绍:

Gauss-Seidel迭代法是解线性方程组的常用迭代法之一,设线性方程组为

Gauss-Seidel迭代法的迭代公式为

x

(其中L是系数矩阵A的下三角矩阵(含主对角线),U是系数矩阵A的上三角矩阵(不含主对角线)。

当然,此处假定aii不等于0(i=1,2,…,n),在很多情况下,它比简单迭代法收敛快,它和简单迭代法的不同点在于计算xi(k+1)时,利用了刚刚迭代出的

的值,当系数矩阵A严格对角占优或对称正定时,高斯-赛德尔迭代法必收敛。

算法实现步骤:

首先判断系数矩阵的行列式的值是否等于0;若等于,则Gauss-Seidel迭代法不收敛,则不能用Gauss-Seidel迭代法,中断并返回!若不等于,则将系数矩阵分解成下三角矩阵L(含主对角线)和上三角矩阵U(不含主对角线),判断-U/L的谱半径是否大于1,若大于1,则Gauss-Seidel迭代法不收敛,则不能用Gauss-Seidel迭代法,中断并返回!前面两步判断了能否用利用Gauss-Seidel迭代法进行迭代。通过前面两步判断,说明可以使用Gauss-Seidel迭代法,运用迭代公式进行迭代,得到xk和xk+1。当xk和xk+1相差小于规定精度,说明迭代得到的值达到精度要求,迭代结束,存储当前值以及迭代次数。

需要注意的是调用函数时,函数的必要参数和可选参数,系数矩阵、对应b的值和迭代初值是必要参数,必须在调用时给出,否则参数不足无法进行运算。而迭代精度是可选参数,若无则函数会给出默认值!

函数文件:

给出不同规模的(即系数矩阵是几阶、十几阶、几十阶等等)的算例:

测试结果:

2.利用Newton迭代求解非线性方程。

Newton迭代公式xk+1=x

[注:要求给出不同类型方程(代数方程或超越方程)的算例]

Newton迭代法简要介绍:

Newton迭代法用来迭代的求解一个方程的解,原理如下:

对于一个函数f(x),它的泰勒级数展开式是这样的

当使用牛顿法来求一个方程解的时候,它使用泰勒级数前两项来代替这个函数,即用?(x)代替f(x)其中:

令?(x)=0,则?x=x0?f(x0)/f′(x0)

所以,牛顿迭代法的公式是:x

算法实现步骤:

将代数方程或超越方程用句柄函数的形式传参,在函数文件内部将句柄函数转换成匿名函数,再使用迭代公式进行迭代,得到xk和xk+1。当xk和xk+1相差小于规定精度,说明迭代得到的值达到精度要求,迭代结束,存储当前值。牛顿迭代可能不收敛,判断是否得到了我们想要的结果,主要凭借迭代次数,如果迭代次数到达规定的迭代次数,则存储当前的结果,并在屏幕上显示“迭代次数过多,可能不收敛”,提示得到的结果可能不是我们想要的结果!需要注意的是:调用函数时,函数的必要参数和可选参数,待解方程和迭代初值是必要参数,必须要给出,迭代初值要合适,迭代初值可以根据函数图象确定。否则参数不足无法进行运算。而迭代次数以及迭代精度是可选参数,若无则可以函数会给出默认值!

函数文件:

测试案例:

测试结果:

三、思考及总结

1.原理遗忘。本次实验的遇到的主要问题就是高斯赛德尔迭代法以及牛顿迭代法原理的遗忘,和没有思路对这两种算法进行实现!

2.牛顿迭代法的进一步认识。牛顿迭代法求解时要给出合适的迭代初值,迭代初值的选择可能会影响求解结果。牛顿迭代法得到的结果是离迭代初值最近的那个解,给定不同的迭代初值,可能会得到不同的解。

3.学会了表达式做函数参数。表达式作为函数的参数需要在内部进行转换,在牛顿迭代法中,需要对代数方程以及超越方程进行传参,我使用了很多方法,结果都报错,最终使用句柄函数得到了解决,并需要在函数内部要转换成匿名函数,再进行迭代!

文档评论(0)

177****0141 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档