matlab求解非線性方程組_第1頁
matlab求解非線性方程組_第2頁
matlab求解非線性方程組_第3頁
matlab求解非線性方程組_第4頁
matlab求解非線性方程組_第5頁
已閱讀5頁,還剩13頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、非線性方程組求解l.mulStablePoint用不動點迭代法求非線性方程組的一個根function r,n=mulStablePoint(F,x0,eps)線性方程組:f%U始解:a嗨軍的精度:eps%求得的一組解:r旭代步數(shù):nif nargin=2eps=1.0e-6;end x0 = transpose(x0);n=1;tol=1;while toleps迭代公式注意矩陣的誤差求法,norm為矩陣的歐幾里迭代步數(shù)控制1);r= subs(F,findsym(F),x0);%tol=norm(r-x0);%德范數(shù)n=n+1;x0=r;if(n100000)%disp( 迭代步數(shù)太多,可能

2、不收斂! return; end endmulNewton用牛頓法法求非線性方程組的一個根function r,n=mulNewton(F,x0,eps)if nargin=2eps=1.0e-4;endx0 = transpose(x0);Fx = subs(F,findsym(F),x0);var = findsym(F);dF = Jacobian(F,var);dFx = subs(dF,findsym(dF),x0);r=x0-inv(dFx)*Fx;n=1;tol=1;while tolepsx0=r;Fx = subs(F,findsym(F),x0);dFx = subs(dF

3、,findsym(dF),x0);核心迭代公式迭代步數(shù)控制r=x0-inv(dFx)*Fx;%tol=norm(r-x0);n=n+1;if(n100000)%disp(迭代步數(shù)太多,可能不收斂!,);return;endendmulDiscNewton用離散牛頓法法求非線性方程組的一個根 function r,m=mulDiscNewton(F,x0,h,eps)format long;if nargin=3eps=1.0e-8;endn = length(x0);fx = subs(F,findsym(F),x0);J = zeros(n,n);for i=1:nx1 = x0;x1(i)

4、 = x1(i)+h(i);J(:,i) = (subs(F,findsym(F),x1)-fx)/h(i);endr=transpose(x0)-inv(J)*fx;m=1;tol=1;while tolepsxs=r;fx = subs(F,findsym(F),xs);J = zeros(n,n);for i=1:nx1 = xs;x1(i) = x1(i)+h(i);J(:,i) = (subs(F,findsym(F),x1)-fx)/h(i);end核心迭代公式迭代步數(shù)控制r=xs-inv(J)*fx;%tol=norm(r-xs);m=m+1;if(m100000)%disp(迭

5、代步數(shù)太多,可能不收斂!,);return;end endformat short;mulMix用牛頓-雅可比迭代法求非線性方程組的一個根function r,m=mulMix(F,x0,h,l,eps)if nargin=4eps=1.0e-4;endn = length(x0);J = zeros(n,n);Fx = subs(F,findsym(F),x0);for i=1:nx1 = x0;x1(i) = x1(i)+h(i);J(:,i) = (subs(F,findsym(F),x1)-Fx)/h(i);endD = diag(diag(J);C = D - J;inD = inv

6、(D);H = inD*C;Hm = eye(n,n);for i=1:l-1Hm = Hm + power(H,i);enddr = Hm*inD*Fx;r = transpose(x0)-dr;m=1;tol=1;while tolepsx0=r;Fx = subs(F,findsym(F),x0);J = zeros(n,n);for i=1:nx1 = x0;x1(i) = x1(i)+h(i);J(:,i) = (subs(F,findsym(F),x1)-Fx)/h(i);endD = diag(diag(J);C = D - J;inD = inv(D);H = inD*C;Hm

7、 = eye(n,n);for i=1:l-1Hm = Hm + power(H,i);enddr = Hm*inD*Fx;r = x0-dr;%核心迭代公式tol=norm(r-x0);m=m+1;if(m100000)%迭代步數(shù)控制disp( 迭代步數(shù)太多,可能不收斂!,);return;endendmulNewtonSOR用牛頓-SOR迭代法求非線性方程組的一個根function r,m=mulNewtonSOR(F,x0,w,h,l,eps)if nargin=5eps=1.0e-4;endn = length(x0);J = zeros(n,n);Fx = subs(F,findsy

8、m(F),x0);for i=1:nx1 = x0;x1(i) = x1(i)+h(i);J(:,i) = (subs(F,findsym(F),x1)-Fx)/h(i);endD = diag(diag(J);L = -tril(J-D);U = -triu(J-D);inD = inv(D-w*L);H = inD*(D - w*D+w*L);Hm = eye(n,n);for i=1:l-1Hm = Hm + power(H,i);enddr = w*Hm*inD*Fx;r = transpose(x0)-dr;m=1;tol=1;while tolepsx0=r;Fx = subs(F

9、,findsym(F),x0);J = zeros(n,n);for i=1:nx1 = x0;x1(i) = x1(i)+h(i);J(:,i) = (subs(F,findsym(F),x1)-Fx)/h(i);endD = diag(diag(J);L = -tril(J-D);U = -triu(J-D);inD = inv(D-w*L);H = inD*(D - w*D+w*L);Hm = eye(n,n);for i=1:l-1Hm = Hm + power(H,i);enddr = w*Hm*inD*Fx;r = x0-dr;%核心迭代公式tol=norm(r-x0);m=m+1

10、;if(m100000)%迭代步數(shù)控制disp( 迭代步數(shù)太多,可能不收斂!,);return;end endmulDNewton用牛頓下山法求非線性方程組的一個根function r,m=mulDNewton(F,x0,eps)線性方程組:F%5始解:x0%軍的精度:eps%求得的一組解:r%代步數(shù):nif nargin=2eps=1.0e-4;endx0 = transpose(x0);dF = Jacobian(F);m=1;tol=1;while tolepsttol=1;w=1;Fx = subs(F,findsym(F),x0);dFx = subs(dF,findsym(dF),

11、x0);卜面的循環(huán)是選取下山因子w的過核心的迭代公式迭代步數(shù)控制F1=norm(Fx);while ttol=0%程r=x0-w*inv(dFx)*Fx;%Fr = subs(F,findsym(F),r);ttol=norm(Fr)-F1;w=w/2;endtol=norm(r-x0);m=m+1;x0=r;if(m100000)%disp(迭代步數(shù)太多,可能不收斂!,);return;endendmulGXF1用兩點割線法的第一種形式求非線性方程組的一個根function r,m=mulGXF1(F,x0,x1,eps)format long;if nargin=3eps=1.0e-4;e

12、ndx0 = transpose(x0);x1 = transpose(x1);n = length(x0);fx = subs(F,findsym(F),x0);fx1 = subs(F,findsym(F),x1);h = x0 - x1;J = zeros(n,n);for i=1:nxt = x1;xt(i) = x0(i);J(:,i) = (subs(F,findsym(F),xt)-fx1)/h(i);endr=x1-inv(J)*fx1;m=1;tol=1;while tolepsx0 = x1;x1 = r;fx = subs(F,findsym(F),x0);fx1 = s

13、ubs(F,findsym(F),x1);h = x0 - x1;J = zeros(n,n);for i=1:nxt = x1;xt(i) = x0(i);J(:,i) = (subs(F,findsym(F),xt)-fx1)/h(i);endr=x1-inv(J)*fx1;tol=norm(r-x1);m=m+1;if(m100000)%迭代步數(shù)控制disp(迭代步數(shù)太多,可能不收斂!,);return;endendformat short;mulGXF2用兩點割線法的第二種形式求非線性方程組的一個根function r,m=mulGXF2(F,x0,x1,eps)format long

14、;if nargin=3eps=1.0e-4;endx0 = transpose(x0);x1 = transpose(x1);n = length(x0);fx = subs(F,findsym(F),x0);fx1 = subs(F,findsym(F),x1);h = x0 - x1;J = zeros(n,n);xt = x1;xt(1) = x0;J(:,1) = (subs(F,findsym(F),xt)-subs(F,findsym(F),x1)/h(1);for i=2:nxt = x1;xt(1:i) = x0(1:i);xt_m = x1;xt_m(1:i-1) = x0

15、(1:i-1);J(:,i) = (subs(F,findsym(F),xt)-subs(F,findsym(F),xt_m)/h(i);endr=x1-inv(J)*fx1;m=1;tol=1;while tolepsx0 = x1;x1 = r;fx = subs(F,findsym(F),x0);fx1 = subs(F,findsym(F),x1);h = x0 - x1;J = zeros(n,n);xt = x1;xt(1) = x0;J(:,1) = (subs(F,findsym(F),xt)-subs(F,findsym(F),x1)/h(1);for i=2:nxt = x

16、1;xt(1:i) = x0(1:i);xt_m = x1;xt_m(1:i-1) = x0(1:i-1);J(:,i) = (subs(F,findsym(F),xt)-subs(F,findsym(F),xt_m)/h(i); endr=x1-inv(J)*fx1;tol=norm(r-x1);m=m+1;迭代步數(shù)控制if(m100000)%disp(迭代步數(shù)太多,可能不收斂!,);return;endendformat short;mulVNewton用擬牛頓法求非線性方程組的一組解function r,m=mulVNewton(F,x0,A,eps)%?程組:F附程組的初始解:x0%初

17、始A矩陣:A%軍的精度:eps%求得的一組解:r%代步數(shù):mif nargin=2A=eye(length(x0); %A 取為單位陣eps=1.0e-4;elseif nargin=3eps=1.0e-4;endend x0 = transpose(x0);Fx = subs(F, findsym(F),x0);r=x0-AFx;m=1;tol=1;while tolepsx0=r;Fx = subs(F, findsym(F),x0);r=x0-AFx;y=r-x0;Fr = subs(F, findsym(F),r);z= Fr-Fx;A1=A+(z-A*y)*transpose(y)/

18、norm(y);%調(diào)整 AA=A1;m=m+1;if(m100000)%迭代步數(shù)控制disp(迭代步數(shù)太多,可能不收斂!,);return;endtol=norm(r-x0);endmulRank1用對稱秩1算法求非線性方程組的一個根function r,n=mulRank1(F,x0,A,eps)if nargin=2l = length(x0);A=eye(l);%A取為單位陣eps=1.0e-4;elseif nargin=3 eps=1.0e-4;endendfx = subs(F,findsym(F),x0);r=transpose(x0)-inv(A)*fx;n=1;tol=1;w

19、hile tolepsx0=r;fx = subs(F,findsym(F),x0);r=x0-inv(A)*fx;y=r-x0;fr = subs(F,findsym(F),r);z = fr-fx;A1=A+ fr *transpose(fr)/(transpose(fr)*y);%調(diào)整 AA=A1; n=n+1; if(n100000)%迭代步數(shù)控制disp(迭代步數(shù)太多,可能不收斂!,);return; end tol=norm(r-x0); end 11. mulDFP用D-F-P算法求非線性方程組的一組解 function r,n=mulDFP(F,x0,A,eps) if nar

20、gin=2 l = length(x0); B=eye(l);%A取為單位陣eps=1.0e-4; else if nargin=3 eps=1.0e-4; end end fx = subs(F,findsym(F),x0); r=transpose(x0)-B*fx; n=1; tol=1; while toleps x0=r; fx = subs(F,findsym(F),x0); r=x0-B*fx; y=r-x0; fr = subs(F,findsym(F),r); z = fr-fx; B1=B+ y*y/(y*z)-B*z*z*B/(z*B*z);%調(diào)整 AB=B1; n=n+

21、1; if(n100000)%迭代步數(shù)控制disp(迭代步數(shù)太多,可能不收斂!,);return; end tol=norm(r-x0); end 12. mulBFS用B-F-S算法求非線性方程組的一個根function r,n=mulBFS(F,x0,B,eps) if nargin=2 l = length(x0);B=eye(l);%Beps=1.0e-4; else if nargin=3 eps=1.0e-4; end end fx = subs(F,findsym(F),x0); r=transpose(x0)-B*fx; n=1; tol=1; while toleps x0=

22、r; fx = subs(F,findsym(F),x0); r=x0-B*fx; y=r-x0; fr = subs(F,findsym(F),r); z = fr-fx; u = 1 + z*B*z/(y*z);B1= B+ (u*y*y-B*z*y-y*z*B)/(y*z);B=B1; n=n+1; if(n100000)%disp(迭代步數(shù)太多,可能不收斂!return; end tol=norm(r-x0);取為單位陣%調(diào)整B迭代步數(shù)控制1);endmulNumYT用數(shù)值延拓法求非線性方程組的一組解 function r,m=mulNumYT(F,x0,h,N,eps) format

23、 long;if nargin=4 eps=1.0e-8;endn = length(x0);fx0 = subs(F,findsym(F),x0);x0 = transpose(x0);J = zeros(n,n);for k=0:N-1fx = subs(F,findsym(F),x0);for i=1:nx1 = x0;x1(i) = x1(i)+h(i);J(:,i) = (subs(F,findsym(F),x1)-fx)/h(i);endinJ = inv(J);r=x0-inJ*(fx-(1-k/N)*fx0);x0 = r;endm=1;tol=1;while tolepsxs

24、=r;fx = subs(F,findsym(F),xs);J = zeros(n,n);for i=1:nx1 = xs;x1(i) = x1(i)+h(i);J(:,i) = (subs(F,findsym(F),x1)-fx)/h(i);endr=xs-inv(J)*fx;%核心迭代公式tol=norm(r-xs); m=m+1; if(m100000)%迭代步數(shù)控制disp(迭代步數(shù)太多,可能不收斂!,);return;endendformat short;DiffParam1用參數(shù)微分法中的歐拉法求非線性方程組的一組解function r=DiffParam1(F,x0,h,N) 線

25、性方程組:f%5始解:x0喊值微分增量步大?。篽哪可比迭代參量:l%軍的精度:eps%求得的一組解:r%代步數(shù):nx0 = transpose(x0);n = length(x0);ht = 1/N;Fx0 = subs(F,findsym(F),x0);for k=1:NFx = subs(F,findsym(F),x0);J = zeros(n,n);for i=1:nx1 = x0;x1(i) = x1(i)+h(i);J(:,i) = (subs(F,findsym(F),x1)-Fx)/h(i);endinJ = inv(J);r = x0 - ht*inJ*Fx0; x0 = r;

26、endDiffParam2用參數(shù)微分法中的中點積分法求非線性方程組的一組解function r=DiffParam2(F,x0,h,N)線性方程組:f劑始解:x0喊值微分增量步大?。篽%推可比迭代參量:l%軍的精度:eps%求得的一組解:r旭代步數(shù):nx0 = transpose(x0);n = length(x0);ht = 1/N;Fx0 = subs(F,findsym(F),x0);J = zeros(n,n);for i=1:nxt = x0;xt(i) = xt(i)+h(i);J(:,i) = (subs(F,findsym(F),xt)-Fx0)/h(i);endinJ = i

27、nv(J);x1 = x0 - ht*inJ*Fx0;for k=1:Nx2 = x1 + (x1-x0)/2;Fx2 = subs(F,findsym(F),x2);J = zeros(n,n);for i=1:nxt = x2;xt(i) = xt(i)+h(i);J(:,i) = (subs(F,findsym(F),xt)-Fx2)/h(i); endinJ = inv(J);r = x1 - ht*inJ*Fx0;x0 = x1;x1 = r;endmulFastDown用最速下降法求非線性方程組的一組解function r,m=mulFastDown(F,x0,h,eps)form

28、at long;if nargin=3eps=1.0e-8;endn = length(x0);x0 = transpose(x0);m=1;tol=1;while tolepsfx = subs(F,findsym(F),x0);J = zeros(n,n);for i=1:nx1 = x0;x1(i) = x1(i)+h;J(:,i) = (subs(F,findsym(F),x1)-fx)/h;endlamda = fx/sum(diag(transpose(J)*J);r=x0-J*lamda; % 核心迭代公式fr = subs(F,findsym(F),r);tol=dot(fr,

29、fr);x0 = r;m=m+1;if(m100000)%迭代步數(shù)控制disp(迭代步數(shù)太多,可能不收斂!,);return;endendformat short;mulGSND用高斯牛頓法求非線性方程組的一組解function r,m=mulGSND(F,x0,h,eps)format long;if nargin=3eps=1.0e-8;endn = length(x0);x0 = transpose(x0);m=1;tol=1;while tolepsfx = subs(F,findsym(F),x0);J = zeros(n,n);for i=1:nx1 = x0;x1(i) = x1

30、(i)+h;J(:,i) = (subs(F,findsym(F),x1)-fx)/h;endDF = inv(transpose(J)*J)*transpose(J);r=x0-DF*fx; % 核心迭代公式tol=norm(r-x0);x0 = r;m=m+1;if(m100000)%迭代步數(shù)控制disp(迭代步數(shù)太多,可能不收斂!,);return;endendformat short;mulConj用共軻梯度法求非線性方程組的一組解function r,m=mulConj(F,x0,h,eps)format long;if nargin=3eps=1.0e-6;endn = length(x0);x0 = transpose(x0);fx0 = subs(F,findsym(F),x0);p0 = zeros(n,n);for i=1:nx1 = x0;x1(i) = x1(i)*(1+h);p0(:,i) = -(subs(F,findsym(F),x1)-fx0)/h;endm=1;tol=1;while tolepsfx = subs(F,findsym(F),x0);J = zeros(n,n);for i=1:nx1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論