Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
|
![]() |
#1 |
初级会员
注册日期: 2008-10-16
年龄: 44
帖子: 3
声望力: 0 ![]() |
![]()
各位方家好:
我写了一段程序,大家给看看有什么毛病 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)) 这是怎么回事呀? 谢谢! |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2008-10-13
年龄: 41
帖子: 11
声望力: 17 ![]() |
![]()
quad采用逼近法来求函数积分,它要求ceshi函数值在数值逼近过程中为一个矩阵,但是原ceshi函数只能得到一个元素,而它用该方法无法求的结果。用int可得到正确积分。
|
![]() |
![]() |
![]() |
#3 |
初级会员
注册日期: 2008-10-16
年龄: 44
帖子: 3
声望力: 0 ![]() |
![]()
谢谢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)则完全没有问题。 很奇怪。 |
![]() |
![]() |
![]() |
#4 |
普通会员
注册日期: 2007-08-07
帖子: 64
声望力: 20 ![]() |
![]()
用不着那么麻烦
quad('x>=0',0,1) ans = 1 |
![]() |
![]() |