编写一函数实现用牛顿迭代法求方程ax3+bx2+cx+d=0在x=1附近的一个实根.主函
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/02 02:38:33
![编写一函数实现用牛顿迭代法求方程ax3+bx2+cx+d=0在x=1附近的一个实根.主函](/uploads/image/z/6114275-35-5.jpg?t=%E7%BC%96%E5%86%99%E4%B8%80%E5%87%BD%E6%95%B0%E5%AE%9E%E7%8E%B0%E7%94%A8%E7%89%9B%E9%A1%BF%E8%BF%AD%E4%BB%A3%E6%B3%95%E6%B1%82%E6%96%B9%E7%A8%8Bax3%2Bbx2%2Bcx%2Bd%3D0%E5%9C%A8x%3D1%E9%99%84%E8%BF%91%E7%9A%84%E4%B8%80%E4%B8%AA%E5%AE%9E%E6%A0%B9.%E4%B8%BB%E5%87%BD)
编写一函数实现用牛顿迭代法求方程ax3+bx2+cx+d=0在x=1附近的一个实根.主函
编写一函数实现用牛顿迭代法求方程ax3+bx2+cx+d=0在x=1附近的一个实根.主函
编写一函数实现用牛顿迭代法求方程ax3+bx2+cx+d=0在x=1附近的一个实根.主函
建立m文件:
function [result ,k] = newton(fun,x0,e)
% 调用形式:
% [x k] = newton(fun,x0,e)
% 功能:
% 用差商求导的牛顿法求解一元非线性方程的根
% 输入:
% -- fun 字符串,f(x)的表达式,以x作为自变量,以字符串形式输入
% -- x0 标量,求解的起始点
% -- e 标量,精度要求
% 输出:
% -- x 标量,所求得的解
% -- k 标量,
% 袁怡圃,2003/4/3
m = x0;
h=0.000001;
f=inline(fun,'x');
k=0;
f0=feval(f,m);
f2=feval(f,m+h);
f1=feval(f,m-h);
n=m-2*h*f0/(f2-f1);
while abs(1-m/n)>e
m=n;
f0=feval(f,m);
f2=feval(f,m+h);
f1=feval(f,m-h);
n=m-2*h*f0/(f2-f1);
k=k+1;
if k>999
break
end
end
if k==1000
disp('没找到方程的根!');
result = 'zero';
else
result = n;
end
在命令窗口输入:
fun = '2*x^3+x^2-3*x+4=0';
x0 = 1;
[result ,k] = newton(fun,x0,0.00001)