matlab牛顿迭代法程序为什么错
symsx;f(x)=x^2-2*x*exp(-2*x)+exp(-2*x);%函数关系式a=0;%区间边界值b=1;%区间边界值forn=1:100%判断区间是否有根i...
syms x;
f(x)=x^2-2*x*exp(-2*x)+exp(-2*x);%函数关系式
a=0;%区间边界值
b=1;%区间边界值
for n=1:100%判断区间是否有根
if (f(a)*f(b)<=0)
break;
else if ((f(a)*f(b)>0))
a=(a+b)/2;
end
end
end
for n=1:100
if((diff(f,'a',1)~=0)&&(diff(f,'b',1)~=0)&&(diff(f,'a',2)*diff(f,'b',2)>0)&&(abs(f(a)/diff(f,'a',1))<b-a)&&(abs(f(b)/diff(f,'b',1))<b-a))%判断是否收敛
x=(a+b)/2;
break;
else if (abs(f(a)/diff(f,'a',1))>(b-a))
a=(a+b)/2;
else
b=(a+b)/2;
end
end
end
k=x;
for n=1:10%使用牛顿迭代
k=k-k^2-2*k*exp(-2*k)+exp(-2*k)/(2*k- 4*exp(-2*k) + 4*k*exp(-2*k));
k
end
各位大佬,输出完全是x变量连数值都没有,到底哪里错了,为什么,谢谢 展开
f(x)=x^2-2*x*exp(-2*x)+exp(-2*x);%函数关系式
a=0;%区间边界值
b=1;%区间边界值
for n=1:100%判断区间是否有根
if (f(a)*f(b)<=0)
break;
else if ((f(a)*f(b)>0))
a=(a+b)/2;
end
end
end
for n=1:100
if((diff(f,'a',1)~=0)&&(diff(f,'b',1)~=0)&&(diff(f,'a',2)*diff(f,'b',2)>0)&&(abs(f(a)/diff(f,'a',1))<b-a)&&(abs(f(b)/diff(f,'b',1))<b-a))%判断是否收敛
x=(a+b)/2;
break;
else if (abs(f(a)/diff(f,'a',1))>(b-a))
a=(a+b)/2;
else
b=(a+b)/2;
end
end
end
k=x;
for n=1:10%使用牛顿迭代
k=k-k^2-2*k*exp(-2*k)+exp(-2*k)/(2*k- 4*exp(-2*k) + 4*k*exp(-2*k));
k
end
各位大佬,输出完全是x变量连数值都没有,到底哪里错了,为什么,谢谢 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询