天天看點

matlab利用牛頓法求解非線性方程02

 另一個牛頓法求解非線性方程的程式,優點是速度特别快,缺點是需要建立兩個子程式,分别是待求函數子程式和待求函數的導數子程式。

主函數如下:

function gen=fnewton(func,dfunc,x,tol)
% func是函數表達式
% dfunc是這個函數的導數
% tol為截斷誤差
% x是初始值
x0=x;
d=feval(func,x0)/feval(dfunc,x0);将x0代入,利用feval函數求值
while abs(d)>tol
x1=x0-d;
x0=x1;
d=feval(func,x0)/feval(dfunc,x0);
end
gen=x0;
           

 待求函數子程式如下:

function fx1=func(x)
fx1=x^2-4*x-5;
           

 待求函數的導數子程式如下:

function fx2=dfunc(x)
fx2=2*x-4;
           

輸入:

fnewton(@func,@dfunc,10.5,1e-6)

運作結果如下:

ans =

   5.000000000336842

繼續閱讀