matlab编程问题请教

来源:百度知道 编辑:UC知道 时间:2024/05/16 23:47:52
function y=newton(x0,eps);
%x0为初始值
%eps为精确度
x(1)=x0;
x(2)=x(1)-(x(1)*exp(x(1))-3)/(exp(x(1))+x(1)*exp(x(1)));
if exp(x(1))+x(1)*exp(x(1))~=0;
k=2;
n=1;
while abs(x(k)*exp(x(k))-x(k-1)*exp(x(k-1)))>eps;
if n<100;
x(k+1)=x(k)-(x(k)*exp(x(k)))/(exp(x(k))+x(k)*exp(x(k)));
k=k+1;
n=n+1;
else
break
end
end
else
%出错
end
y=x'
代码那里错了?用的是newton法求解

在你的基础上修改的。
你应当是求解x*exp(x)=3这个方程。

function y=newton(x0,eps);
%x0为初始值
%eps为精确度
x(1)=x0;
x(2)=x(1)-(x(1)*exp(x(1))-3)/(exp(x(1))+x(1)*exp(x(1)));
if exp(x(1))+x(1)*exp(x(1))~=3; %这里应当是3
k=2;
n=1;
while abs(x(k)*exp(x(k))-x(k-1)*exp(x(k-1)))>eps;
if n<100;
x(k+1)=x(k)-(x(k)*exp(x(k))-3)/(exp(x(k))+x(k)*exp(x(k))); %这里也漏了3
k=k+1;
n=n+1;
else
break
end
end
else
%出错 %这个else可以去掉
end
y=x'

没有什么错误,就是没有输入数据而已
function y=newton(x0,eps);
%x0为初始值
%eps为精确度
x0=input('Input x0 please.'); %输入初始值
eps=input('Input eps please.');%输入精确度
x(1)=x0;
x(2)=x(1)-(x(1)*exp(x(1))-3)/(exp(x(1))+x(1)*exp(x(1)));
if exp(x(1))+x(1)*exp(x(1))~=0;
k=2;
n=1;
while abs(x(k)*exp(x(k))-x(k-1)*exp(x(k-1)))>eps;
if n<100;
x(k+1)=x(k)-(x(k)*exp(x(k)))/(e