Matlab 數值計算----牛頓法解非線性方程組
阿新 • • 發佈:2018-12-26
Newtons.m函式
function[x_star,index,it]=Newtons(fun,x,ep,it_max) %求解非線性方程組的牛頓法,其中,fun(x)為需要求根的函式 %第一個分量是函式值,第二個分量是導數值 %x為初始向量(列向量) % ep為精度,當 | |x(k)-x(k-1)| |<ep時,終止計算,預設值為1e-5 % it_max為最大迭代次數,預設值為100 % x_star為當迭代成功時,輸出方程的根 % 當迭代失敗時,輸出最後的迭代值 % index為指標向量,當index=1時,表明迭代成功 % 當index=0時,表明迭代失敗(迭代次數>=in+max) % it為迭代次數 if nargin<4 it_max=100;end if nargin<3 ep=1e-5;end index=0;k=1; while k<it_max x1=x;[f,J]=feval(fun,x); if abs(det(J))<ep break;end x=x-J\f; if norm(x-x1)<ep index=1;break; end k=k+1; end x_star=x;it=k;
funs.m函式(輸入任意一個非線性方程組進行測試)
function[f,J]=funs(x)
f=[x(1)^2+x(2)^2-5;(x(1)+1)*x(2)-(3*x(1)+1)];
J=[2*x(1) 2*x(2);x(2)-3 x(1)+1];
結果: