用MATLAB编出牛顿迭代法的程序 5
Newton迭代法求法f(x)=x^6-x-=0于[0,2]内的一个实根用牛顿法求f(x)=exp(-xk/4)(2-xk)-1=0在0,2]是根很急啊,论文要用,实在不...
Newton迭代法求 法f(x)=x^6-x-=0于[0,2]内的一个实根
用牛顿法求f(x)=exp(-xk/4)(2-xk)-1 =0在0,2]是根
很急啊,论文要用,实在不会呀。求大神 展开
用牛顿法求f(x)=exp(-xk/4)(2-xk)-1 =0在0,2]是根
很急啊,论文要用,实在不会呀。求大神 展开
2个回答
展开全部
function newton(x0,e,N)
%输入xo为估计的迭代初值,e为规定的误差,N为最大迭代次数.
%输出x,y为最后迭代的两个近似根,k为迭代次数.
clc
format long;
disp('迭代次数 近似根')
k=0;
x1=0;
x2=x0;
while (abs(x2-x1))>e
x1=x2;
x2=x1-f(x1)./df(x1);
k=k+1;
if k>N
return;
end
%%%%%%记录并输出%%%%%%%%%
o1=sprintf('%3d',k);
o2=sprintf('%3.8f',x2);
OL=[o1,' ' o2];
disp(OL);
y(k)=x2;
end
%%%%画图%%%%%%%
i=1:k;
figure(2)
plot(i,y,'rD-')
grid on
xlabel('迭代次数')
ylabel('近似根')
title(['牛顿法求出的该方程的近似根 x^*=', num2str(x2,9)])
function y=f(x)
y=x^2/2-sin(x)-1;
function y=df(x)
y=x-cos(x);
%输入xo为估计的迭代初值,e为规定的误差,N为最大迭代次数.
%输出x,y为最后迭代的两个近似根,k为迭代次数.
clc
format long;
disp('迭代次数 近似根')
k=0;
x1=0;
x2=x0;
while (abs(x2-x1))>e
x1=x2;
x2=x1-f(x1)./df(x1);
k=k+1;
if k>N
return;
end
%%%%%%记录并输出%%%%%%%%%
o1=sprintf('%3d',k);
o2=sprintf('%3.8f',x2);
OL=[o1,' ' o2];
disp(OL);
y(k)=x2;
end
%%%%画图%%%%%%%
i=1:k;
figure(2)
plot(i,y,'rD-')
grid on
xlabel('迭代次数')
ylabel('近似根')
title(['牛顿法求出的该方程的近似根 x^*=', num2str(x2,9)])
function y=f(x)
y=x^2/2-sin(x)-1;
function y=df(x)
y=x-cos(x);
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询