
一道matlab不动点迭代求高手指点
function[k,p,err]=fixpt(g,p0)P(1)=p0;tol=1.e-8;max1=50;fork=2:max1P(k)=feval(g,P(k-1)...
function [k,p,err]=fixpt(g,p0)
P(1)=p0;
tol=1.e-8;
max1=50;
for k=2:max1
P(k)=feval(g,P(k-1));
err=abs(P(k)-P(k-1));
relerr=err/(abs(P(k))+eps);
p=P(k);
if(err<tol)|(relerr<tol)
break;
end
end
if k==max1
disp('maximum number of iterations exceeded')
end
然后输入
[k,p,err]=fixpt('x^5-3*x^3-2*x^2+2',3.8)
出现错误提示
??? Error using ==> fixpt
Too many input arguments.
这是哪里出错了 展开
P(1)=p0;
tol=1.e-8;
max1=50;
for k=2:max1
P(k)=feval(g,P(k-1));
err=abs(P(k)-P(k-1));
relerr=err/(abs(P(k))+eps);
p=P(k);
if(err<tol)|(relerr<tol)
break;
end
end
if k==max1
disp('maximum number of iterations exceeded')
end
然后输入
[k,p,err]=fixpt('x^5-3*x^3-2*x^2+2',3.8)
出现错误提示
??? Error using ==> fixpt
Too many input arguments.
这是哪里出错了 展开
2个回答
展开全部
我报的错不是这样的...
>> [k,p,err]=fixpt('x^5-3*x^3-2*x^2+2',3.8)
??? Invalid function name 'x^5-3*x^3-2*x^2+2'.
Error in ==> fixpt at 7
P(k)=feval(g,P(k-1));
这是因为不能把字符串作为一个函数句柄传过去,把这一句:P(k)=feval(g,P(k-1));改为
x = P(k-1); P(k) = eval(g);
就可以了。不过这个迭代好像有问题,迭代两步就溢出了~~
用solve('x^5-3*x^3-2*x^2+2-x','x')可以算出你输入的函数有以下几个不动点,作为参考:
2.0000
-1.6180
0.6180
-0.5000 - 0.8660i
-0.5000 + 0.8660i
>> [k,p,err]=fixpt('x^5-3*x^3-2*x^2+2',3.8)
??? Invalid function name 'x^5-3*x^3-2*x^2+2'.
Error in ==> fixpt at 7
P(k)=feval(g,P(k-1));
这是因为不能把字符串作为一个函数句柄传过去,把这一句:P(k)=feval(g,P(k-1));改为
x = P(k-1); P(k) = eval(g);
就可以了。不过这个迭代好像有问题,迭代两步就溢出了~~
用solve('x^5-3*x^3-2*x^2+2-x','x')可以算出你输入的函数有以下几个不动点,作为参考:
2.0000
-1.6180
0.6180
-0.5000 - 0.8660i
-0.5000 + 0.8660i

2025-09-30 广告
上海艾羽信息科技有限公司是一家以CAE软件销售、技术咨询及服务,仿真咨询及规划布局为一体的高科技公司。作为ANSYS的合作伙伴,艾羽致力于将ANSYS推出的产品,通过业界性能颇佳、丰富的工程仿真软件产品组合帮助客户解决复杂的仿真难题。力求与...
点击进入详情页
本回答由VSH艾羽提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询