登录论坛

查看完整版本 : 大家帮我看一个程序呗,谢了


xxuffei
2008-10-16, 01:14
各位方家好:
我写了一段程序,大家给看看有什么毛病
function y=ceshi(x)
if x>=0
y=1;
else y=0
end
然后把它保存为ceshi.m
接着用数值积分
quad('ceshi',0,1)
这时出现错误
??? Attempted to access y(7); index out of bounds because numel(y)=1.

Error in ==> quad at 71
if ~isfinite(y(7))
这是怎么回事呀?
谢谢!

zqh0260
2008-10-16, 10:34
quad采用逼近法来求函数积分,它要求ceshi函数值在数值逼近过程中为一个矩阵,但是原ceshi函数只能得到一个元素,而它用该方法无法求的结果。用int可得到正确积分。

xxuffei
2008-10-16, 11:14
谢谢zqh0260。
我用int做过,也不行。如果把quad改为int,会有如下出错信息
??? Function 'ge' is not defined for values of class 'sym'.

Error in ==> ceshi4 at 2
if x>=0。
另外,如果我把上面那段程序改为
function y=ceshi(x)
if x>=0
y=x;
else y=0
end
然后运行quad('ceshi',0,1)则完全没有问题。
很奇怪。

xiezhh
2008-10-16, 22:23
用不着那么麻烦

quad('x>=0',0,1)

ans =

1