牛顿法matlab程序及例题
【程序】
function [x_iter,k]=newton(f,df,x0,tol,maxit)
%牛顿法
%输出:x_iter-迭代结果,k-迭代次数
k=0;
x_iter=x0;
err=tol+1;
while(err>tol && k<maxit)
x=x_iter;
x_iter=x-f(x)/df(x);
err=abs(x_iter-x);
k=k+1;
end
if(k==maxit)
fprintf('未收敛
');
else
fprintf('迭代次数:%d
',k);
end
【例题】
example:求解非线性方程f(x)=x^3-5x^2+3x+7=0,初始值为x0=2,精度为1e-6。
解法:首先求导得df(x)=3x^2-10x+3,然后代入程序:
>> f=@(x)x^3-5*x^2+3*x+7;
>> df=@(x)3*x^2-10*x+3;
>> [x_iter,k]=newton(f,df,2,1e-6,100);
>> x_iter
ans =
4.3793
>> k
k =
5
故该非线性方程的根为x=4.3793,迭代次数为5次。
matlab求导 【总结】
通过以上例题,我们可以发现牛顿法是一种十分有效的求解非线性方程的方法,其程序简洁高效,对于复杂的非线性方程求解也能得到较好的结果。因此在实际应用中,我们可以采用牛顿法来求解非线性方程,提高计算效率和精度。
发布评论