欢迎来到天天文库
浏览记录
ID:10270929
大小:30.00 KB
页数:4页
时间:2018-06-14
《牛顿迭代法matlab程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、牛顿迭代法Matlab程序(带下山因子)本文程序可用于求解线性和非线性方程组,在使用牛顿迭代法的同时,加入了下山因子,加入下山因子后,对于初值的选取更为宽泛。使用方法:请将本文function所定义的函数存为m文件,将matlab路径改为存储newton函数的路径,然后参照本文例子的格式定义变量、表达式、初值、收敛阈值、迭代次数后,输入X=newton(f,x,x0,esp,N)即可求解。4%%%%%%%%%%%%%%%%%%%%例子symsx1x2x3%定义变量名称f1=x1+x2+x3+3;f2=2*x1-x2-x3;f3=x1+2*x2-2*x3-3;%定义方程表达式(方程全都移到等
2、号左边的表达式)f=[f1;f2;f3];x=[x1;x2;x3];x0=[0;0;0];%设定初值esp=[0.00001;0.00001;0.00001];%阈值N=1000;%迭代次数X=newton(f,x,x0,esp,N)%求解%%%%真值为-10-2%%%%%%%%%%%%%%%%%%%%4functionx1=newton(f,x,x0,esp,N)%此函数用于解非线性方程,方法为牛顿下山法。R=jacobian(f,x);ph=size(f,1);ty(1:ph,1)=1;coo=1;whileabs(coo-1)<1e-6%这代表coo==1coo=0;R1=subs(
3、R,x,x0);%%%f1=subs(f,x,x0);x1=x0-ty.*(R1f1);f11=subs(f,x,x1);f12=double(f1);f112=double(f11);fori=1:size(f12,1);j=i;clcjifabs(f112(i))>abs(f12(i))4ty(i)=ty(i)/2;coo=1;endendendfori=1:NclciR1=subs(R,x,x0);%%%f1=subs(f,x,x0);x1=x0-ty.*(R1f1);xx=abs(x1-x0);ifxx
此文档下载收益归作者所有