matlab实现牛顿迭代法求解非线性方程组.docVIP

matlab实现牛顿迭代法求解非线性方程组.doc

  1. 1、本文档共12页,可阅读全部内容。
  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文档。上传文档
查看更多

matlab实现牛顿迭代法求解非线性方程组

建立函数dfun?

用来求方程组的雅克比矩阵将dfun.m保存到工作路径中:?

function?df=dfun(x);?

%用来求解方程组的雅克比矩阵储存在dfun中?

f=fun(x);?

df=[diff(f,x1);diff(f,x2);diff(f,x3)];

df=conj(df);

————————————————————————————————

编程牛顿法求解非线性方程组将newton.m保存到工作路径中:?

function?x=newton(x0,eps,N);?

con=0;?

%其中x0为迭代初值eps为精度要求N为最大迭代步数con用来记录结果是否收敛?

for?i=1:N;

f=subs(fun(x0),{x1?x2?x3},{x0(1)?x0(2)?x0(3)});

df=subs(dfun(x0),{x1?x2?x3},{x0(1)?x0(2)?x0(3)});?

x=x0-f/df;

for?j=1:length(x0);?

il(i,j)=x(j);?

end?

if?norm(x-x0)eps?

con=1;?

break;?

end?

x0=x;?

end?

%以下是将迭代过程写入txt文档文件名为iteration.txt?

fid=fopen(iteration.txt,w);?

fprintf(fid,iteration);

for?j=1:length(x0)?

fprintf(fid,?x%d,j);

end

for?j=1:i

fprintf(fid,\n%6d?,j);

for?k=1:length(x0)

fprintf(fid,?%10.6f,il(j,k));

end?

end

if?con==1

fprintf(fid,\n计算结果收敛!);?

end

if?con==0

fprintf(fid,\n迭代步数过多可能不收敛!);

end

fclose(fid);

————————————————————————————————

运行程序在matlab中输入以下内容?

newton([0.1?0.1?-0.1],0.00001,20)

————————————————————————————————

输出结果?

——————————————————————————————————————————???

在iteration中查看迭代过程?iteration?x1?x2?x3?

.mulStablePoint用不动点迭代法求非线性方程组的一个根

?

function?[r,n]=mulStablePoint(F,x0,eps)?

%非线性方程组:f?

%初始解:a?

%解的精度:eps?

%求得的一组解:r?

%迭代步数:n??

if?nargin==2?

????eps=1.0e-6;?

end??

x0?=?transpose(x0);?

n=1;?

tol=1;?

while?toleps?

????r=?subs(F,findsym(F),x0);???????????????????????????%迭代公式?

????tol=norm(r-x0);????????????????????%注意矩阵的误差求法,

norm为矩阵的欧几里德范数?

????n=n+1;?

????x0=r;?

????if(n100000)????????????????????????%迭代步数控制

?

????????disp(迭代步数太多,可能不收敛!);?

????????return;?

????end?

end?

x0=[000];

??[r,n,data]=budong(x0);

??disp(不动点计算结果为)

??x1=[111];

??x2=[222];

??[x,n,data]=new_ton(x0);

??disp(’初始值为0,牛顿法计算结果为:’)

??[x,n,data]=new_ton(x1);

??disp(初始值为1,牛顿法计算结果为:)

??[x,n,data]=new_ton(x2);

??disp(初始值为2,牛顿法计算结果为:)

??budong.m

??function[r,n,data]=budong(x0,tol)

??ifnargin=-1

??tol=1e-3:

??end

??x1=budongfun(x0);

??n=1;

??while(norm(x1-x0))tol)(n500)

??x0=x1;

??x1=budong_fun(x0);

??n=n+1:

??data(:,n)=x1;

??end

??

您可能关注的文档

文档评论(0)

175****4659 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档