《数值计算方法》课程设计.doc

《数值计算方法》课程设计.doc

ID:58913513

大小:178.00 KB

页数:6页

时间:2020-10-26

《数值计算方法》课程设计.doc_第1页
《数值计算方法》课程设计.doc_第2页
《数值计算方法》课程设计.doc_第3页
《数值计算方法》课程设计.doc_第4页
《数值计算方法》课程设计.doc_第5页
资源描述:

《《数值计算方法》课程设计.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、《数值计算方法》课程设计非线性方程(组)的解法问题的提出分析比较Newton法、Newton法的变形格式。然后分别用Newton法、简化Newton法、选取不同的初值求解下面方程组,对于相同的精度要求,比较这两种方法的运行时间。背景分析牛顿法是一种重要迭代法,他是逐步线性化方法的典型代表,牛顿法的特点是每一步都需要计算以及,其计算量比较大,为了减少计算量,提出简化牛顿法。算法思想1、牛顿法设有非线性方程组其中由偏导数作成的矩阵记为,称为的雅克比矩阵设为的解,且设为的近似解。现利用多元函数在点的泰勒公式有其中,在与的所连的线段内。如果用上式中的线性函数近似替代,并将线性方程组…

2、..(1)的解作为的第次近似解记为将(1)式写成矩阵形式,即为非奇异矩阵,则牛顿迭代公式:……………………………(2)求解非线性方程组牛顿方法为2、简化牛顿法在牛顿法的基础上,为了减少计算量,将均取为,得如下简化牛顿公式:…………………(3)其中(2)(3)式均为线性收敛的。算法设计将一个非线性方程组写成向量的形式有:F(x)=0     牛顿迭代法的公式就是:x(k+1)=x(k)-F’(x(k))-1F(x(k))     其中F’(x(k))为Jacobi矩阵,我写的这段程序就是根据这个公式来的。运用MATLAB中的jacobian求出F的雅克比矩阵,用inv求逆mat

3、rix=@(varargin)[varargin{:}]构造迭代函数在比较牛顿法和简化牛顿法运行时间方面,我们主要是通过比较迭代次数。程序清单牛顿法源程序:functionx=newton_solve(F,v,x0,e)if(~ischar(F)

4、

5、~ischar(v))%定义类型error('ParameterFandvshouldbechartype!');endif(~isnumeric(x0)

6、

7、~isnumeric(e))error('Parameterx0andeshouldbenumerictype!');endF=sym(F);v=sym(v);dF=jaco

8、bian(F,v);tF=inv(dF)*Fforindex=1:numel(v)tF=subs(tF,v(index),['x('num2str(index)')']);%把x分量化,把x1变成x(1),把x2变成x(2)endmatrix=@(varargin)[varargin{:}].';%构造迭代函数phi=['x-'char(tF)];eval(['phi=@(x)'phi';']);err=inf;%无穷大xold=phi(x0);n=0;whileerr>exnew=phi(xold);%用本次结果与上次结果差的范数来衡量误差err=norm(xnew-xol

9、d);xold=xnew;n=n+1;%迭代次数大于10000是退出循环if(n>10000)break;endn%迭代次数endx=xold;简化牛顿法的源程序:functionx=simnewton_solve(F,v,x0,e)if(~ischar(F)

10、

11、~ischar(v))%定义类型error('ParameterFandvshouldbechartype!');endif(~isnumeric(x0)

12、

13、~isnumeric(e))error('Parameterx0andeshouldbenumerictype!');endF=sym(F);v=sym(v);

14、dF=jacobian(F,v);tF=inv(dF)%dF的逆矩阵tF11=-x0(2)/(-x0(2)+4*x0(1));tF12=1/(-x0(2)+4*x0(1));tF21=2*x0(1)/(-x0(2)+4*x0(1));tF22=-1/2/(-x0(2)+4*x0(1));tF=[tF11,tF12;tF21,tF22]%把dF的逆矩阵用初始值x0代入,得到一常数矩阵,(简化牛顿法的思想)tF=tF*F;forindex=1:numel(v)tF=subs(tF,v(index),['x('num2str(index)')']);%把x分量化,把x1变成x(1)

15、,把x2变成x(2)endmatrix=@(varargin)[varargin{:}].';%构造迭代函数phi=['x-'char(tF)];eval(['phi=@(x)'phi';']);err=inf;%无穷大xold=phi(x0);n=0;whileerr>exnew=phi(xold);%用本次结果与上次结果差的范数来衡量误差err=norm(xnew-xold);xold=xnew;n=n+1;%迭代次数大于10000是退出循环if(n>10000)break;endn%迭代次数end

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。