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

下載本文檔

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

文檔簡介

1、已知非線性方程組如下3*x1-cos(x2*x3)-1/2=0x1A2-81*(x2+A2+sin(x3)+=0exp(-x1*x2)+20*x3+(10*pi-3)/3=0求解要求精度達到首先建立函數fun儲存方程組編程如下將保存到工作路徑中function f=fun(x);%定義非線性方程組如下%變量x1 x2 x3%函數f1f2f3syms x1 x2 x3f1=3*x1-cos(x2*x3)-1/2;f2=x1A2-81*(x2+A2+sin(x3)+;f3=exp(-x1*x2)+20*x3+(10*pi-3)/3;f=f1 f2 f3;建立函數dfun用來求方程組的雅克比矩陣將保

2、存到工作路徑中function df=dfun(x);%用來求解方程組的雅克比矩陣儲存在dfun 中f=fun(x);df=diff(f,'x1');diff(f,'x2');diff(f,'x3');df=conj(df');編程牛頓法求解非線性方程組將保存到工作路徑中 function x=newton(x0,eps,N);con=0;%其中x0 為迭代初值eps 為精度要求N 為最大迭代步數con 用來記錄結果是否收斂for i=1:N;f=subs(fun(x0),'x1' 'x2''x3&

3、#39;,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);endif norm(x-x0)<epscon=1;break;endx0=x;end%以下是將迭代過程寫入txt 文檔文件名為fid=fopen('','w');fprintf(fid,'iteration');for j=1:length(x0)fprintf(fid,&

4、#39; x%d',j);end for j=1:ifprintf(fid,'n%6d ',j);for k=1:length(x0)fprintf(fid,'%',il(j,k);endend if con=1fprintf(fid,'n 計算結果收斂!');endif con=0fprintf(fid,'n 迭代步數過多可能不收斂!');endfclose(fid);運行程序在matlab 中輸入以下內容newton( ,20)輸出結果在 iteration 中查看迭代過程iteration x1 x2 x3.mulS

5、tablePoint 用不動點迭代法求非線性方程組的一個根function r,n=mulStablePoint(F,x0,eps)%非線性方程組:f%初始解:a%解的精度:eps %求得的一組解:9迭代步數:nif nargin=2eps=;endx0 = transpose(xO);n=1;tol=1;while tol>epsr= subs(F,findsym(F),x0);%迭代公式tol=norm(r-x0);%意矩陣的誤差求法,norm為矩陣的歐幾里德范數n=n+1;x0=r;if(n>100000)代步數控制disp('迭代步數太多,可能不收斂?。?retur

6、n;endendx0=0 0 0;r,n,data=budong(x0);disp('不動點計算結果為')x1=1 1 1;x2=2 2 2;x,n,data=new_ton(x0);disp('初始值為0,牛頓法計算結果為:)x,n,data=new_ton(x1);disp('初始值為1,牛頓法計算結果為:)x,n,data=new_ton(x2);disp ('初始值為2,牛頓法計算結果為:)functionr,n,data=budong(x0, tol)if nargin=-1tol=1e-3endx1=budong fun(x0) ;n=1;w

7、hile(norm(x1-x0)tol)&(n500)x0=x1;x1=budong_fun(x0);n=n+1:data(:,n)=x1 ;endr=x1 :function x,n,data=new_ton(x0, tol)if nargin=-1tol=1e-8 ;endx1=x0-budong_fun(x0)/df1(x0);n=1;while (norm(x1-x0)tol)x0=x1;x1=x0-budong_fun(x0)/df1(x0);n=n+1;data(:,n)=x1;endx=x1;function f=budong_fun(x)f(1)=3* x(1)-cos(x(2)*x(3)-1/2;f(2)=x(142-81*(x(2)+A2+sin(x(3)+;f(3)=exp(-x(1)*x(2)+20* x(3)+10* pi/3-1;f=f(1)*f(2)*f(3);function f=df1(x)f=3sin(x(2)*x(3)*x(3) sin(x(2)*x(3)*x(2)2* x(1)-162*(x(2)+cos(x(3)ex

溫馨提示

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

評論

0/150

提交評論