另一個牛頓法求解非線性方程的程式,優點是速度特别快,缺點是需要建立兩個子程式,分别是待求函數子程式和待求函數的導數子程式。
主函數如下:
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