matlab牛顿迭代法程序为什么运行不了 5
这是我弄得matlab牛顿迭代法的运行程序,为什么运行不了???求指教。function[x_star,index,it]=NNewton(f,x,ep,it_max)%...
这是我弄得matlab牛顿迭代法的运行程序,为什么运行不了???求指教。
function[x_star,index,it]=NNewton(f,x,ep,it_max)
% 求解非线性方程的Newton法,其中:
% fun(x)为需要求根的函数,有两个分量,第一个是函数值,第二个是导数值;
% x为初始点;
% ep为精度要求,当|x(k)-x(k-1)|<ep时,算法终止计算,缺省值为le-5;
% it_max为最大迭代次数,缺省值为100;
% x_star为当迭代成功时,输出方程的根,当迭代失败时,输出最后的迭代值;
% index为指标变量,当index=1时,表明迭代成功,当index=0时,表明迭代失败;
% it为迭代次数。
if nargin<4
it_max=100;
end
if nargin<3
ep=le-5;
end
index='不成功';
k=1;
while k<=it_max
x1=x;
ff=feval(f,x);
f1=diff(f,x,1);
f2=diff(f,x,2);
if abs(f2)<ep
break;
end
x=x1-f1/f2;
if abs(x-x1)<ep
index='成功';break;
end
k=k+1;
end
x_star=x;it=k; 展开
function[x_star,index,it]=NNewton(f,x,ep,it_max)
% 求解非线性方程的Newton法,其中:
% fun(x)为需要求根的函数,有两个分量,第一个是函数值,第二个是导数值;
% x为初始点;
% ep为精度要求,当|x(k)-x(k-1)|<ep时,算法终止计算,缺省值为le-5;
% it_max为最大迭代次数,缺省值为100;
% x_star为当迭代成功时,输出方程的根,当迭代失败时,输出最后的迭代值;
% index为指标变量,当index=1时,表明迭代成功,当index=0时,表明迭代失败;
% it为迭代次数。
if nargin<4
it_max=100;
end
if nargin<3
ep=le-5;
end
index='不成功';
k=1;
while k<=it_max
x1=x;
ff=feval(f,x);
f1=diff(f,x,1);
f2=diff(f,x,2);
if abs(f2)<ep
break;
end
x=x1-f1/f2;
if abs(x-x1)<ep
index='成功';break;
end
k=k+1;
end
x_star=x;it=k; 展开
展开全部
你运行的时候给输入参数了么?
追问
输入参数了,我测试的时候好像到f1=diff(f,x,1);f2=diff(f,x,2);就运行不了了.这是matlab GUI界面设计中的牛顿法函数,我在界面里设置的参数x为2,ep为0.000001,it-max为20,方程f为x^3-3x-1.
追答
判断是因为你的f这个函数没有被识别,你如果从界面设置,首先输入都是字符,不是数字,你要进行转换。特别的,你的f要转换为符号函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询