lonmel 发表于 2010-11-13 11:10

Undefined function or variable 'x'求助

我们数值分析老师给的一个关于龙贝格求积分的MATLAB程序,可我老是整不明白啊,向大侠求助。
具体是:function =Romberg(f,a,b,eps);
h=b-a;
R(1,1)=h*(feval(f,a)+feval(f,b))/2;
M=1;j=0;err=1;
while err>eps;
    j=j+1;
    h=h/2;
    S=0;
    for p=1,M;
    x=a+h*(2*p-1);
    S=S+feval(f,x);
end;
R(j+1,1)=R(j,1)/2+h*S;
M=2*M;
for k=1,j;
    R(j+1,k+1)=R(j+1,k)+(R(j+1,k)-R(j,k))/(4^k-1);
end;
err=abs(R(j+1,j)-R(j+1,j+1));
end;
quad=R(j+1,j+1);
我把上述代码以m文件的的格式保存到MATLAB程序下的work文件夹里了,然后我又在command window向调用它,输入了f=x/(4+x^2);a=0;b=1;eps=10^(-4);=Romberg(f,a,b,eps);然后回车,结果就出现了Undefined function or variable 'x'.哪位大侠能告诉我这到底是怎么回事啊,我初学MATLAB啊

Happy99 发表于 2010-11-13 11:17

回复 1 # lonmel 的帖子

初学, 建议楼主看下
常见的程序出错问题整理 (eight), 2F
http://forum.vibunion.com/forum/thread-46001-1-1.html

happy 发表于 2010-11-13 11:20

f=x/(4+x^2)直接运行显然其x是没有定义的
看样子楼主没有用过matlab
你可以参考帮助文件中ode45之类的函数的用法调用这个函数

qibbxxt 发表于 2010-11-13 13:38

>> f=@(x)x/(4+x^2);a=0;b=1;eps=10^(-4);=Romberg(f,a,b,eps);
??? Attempted to access R(3,3); index out of bounds because size(R)=.

Error in ==> Romberg at 18
err=abs(R(j+1,j)-R(j+1,j+1));这是我运行的结果,建议你好好看看算法,学学程序,说实话,这个程序里面的一些东西我也看不太明白,尤其是这逗号表达式,在matlab里面用的不多

zhouyang664 发表于 2010-11-13 14:09

楼主初学吧,建议狠抓基础啊!

Happy99 发表于 2010-11-13 21:04

本帖最后由 Happy99 于 2010-11-14 00:38 编辑

建议先看下
建议提问的网友分清 编程问题 和 专业问题
http://forum.vibunion.com/forum/vi ... 36746&extra=&page=1
提问的智慧!!!!(发帖前请认真阅读)
http://forum.vibunion.com/forum/viewthread.php?tid=21991

还有看看fortran的版本 http://forum.vibunion.com/thread-31497-1-1.html


页: [1]
查看完整版本: Undefined function or variable 'x'求助