資源描述:
《牛頓迭代法matlab程序》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、牛頓迭代法Matlab程序(帶下山因子)本文程序可用于求解線性和非線性方程組,在使用牛頓迭代法的同時(shí),加入了下山因子,加入下山因子后,對(duì)于初值的選取更為寬泛。使用方法:請(qǐng)將本文function所定義的函數(shù)存為m文件,將matlab路徑改為存儲(chǔ)newton函數(shù)的路徑,然后參照本文例子的格式定義變量、表達(dá)式、初值、收斂閾值、迭代次數(shù)后,輸入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;%定義方程表達(dá)式(方程全都移到等
2、號(hào)左邊的表達(dá)式)f=[f1;f2;f3];x=[x1;x2;x3];x0=[0;0;0];%設(shè)定初值esp=[0.00001;0.00001;0.00001];%閾值N=1000;%迭代次數(shù)X=newton(f,x,x0,esp,N)%求解%%%%真值為-10-2%%%%%%%%%%%%%%%%%%%%4functionx1=newton(f,x,x0,esp,N)%此函數(shù)用于解非線性方程,方法為牛頓下山法。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