用牛顿方法求方程的解,并输出重数
clear
clc
f=zou;
x1=input('请输入初值:');
eps=input('请输入误差精度:');
b=qiudao(x1);
x2=x1-eval(subs(f,x1))/b;
i=1;
while abs(x2-x1)>=eps
x1=x2;
b=qiudao(x1);
x2=x1-eval(subs(f,x1))/b;
i=i+1;
if i==1000
break;
end
end
if i>=1000
disp('newton迭代法很可能不收敛!')
else
n=chongshu(x2,eps);
disp(['方程的根是:x=',num2str(x2),'它的重数是:
',num2str(n)]);
end
function y=zou
syms x
y=x^4+x^2+x-8;
end
function y=qiudao(a)
f=zou;
h=0.001;
while abs(subs(f,a+h)-subs(f,a-h))>=0.0001
h=h/10;
end
y=eval((subs(f,a+h)-subs(f,a-h))/(2*h));
end
function y=chongshu(x2,eps) f=myf;
s3=eval(subs(f,x2));
f=diff(f);
s1=eval(subs(f,x2))^2; f=diff(f);
s2=eval(subs(f,x2));
s=s1/(s1-s2*s3);
y=s;
end
继续阅读