beyondhxf 发表于 2010-6-8 21:27

请教:数值积分的选择

我现在需要做一组积分:R=;
for i=1:...
Ra(i)=double(int(R(i)*cos(x),-160*pi/180,0));
end


上面用的是int函数,然而当R中元素过于复杂的时候,我想用数值积分。
比如quad就很好。
然而我遇到的问题是:调用quad时候,必须写出函数,如quad(@sin,-pi,0);
而我目前只能写出R(1,,j)这样的元素
因此请教如何变通可以使用quad这样的数值积分函数?
或者使用其他的数值积分函数。

[ 本帖最后由 beyondhxf 于 2010-6-8 21:29 编辑 ]

beyondhxf 发表于 2010-6-10 09:33

回复 楼主 beyondhxf 的帖子

虽然各位大侠不屑于回答我这个愚蠢的问题,但现在问题解决了,我还是回来反馈一下,以帮助后面有需要的人。
解决格式为:
quad(inline(vectorize(char(R(i)*R(j)))),-10,100000)

rocwoods 发表于 2010-6-10 10:00

7.0以后尽量不要用inline,inline效率不高。楼主MATLAB版本如果比较新的话可以用str2func构造被积函数句柄。
不过可以在得到R的时候用cell数组存储各个积分表达式的函数句柄,譬如:
>> R = {@(x) x,@(x) x.^2};
quadl(R{2},0,2)

ans =

    2.6667


[ 本帖最后由 rocwoods 于 2010-6-10 10:03 编辑 ]

beyondhxf 发表于 2010-6-10 10:19

回复 板凳 rocwoods 的帖子

非常感谢 热心的回答。
页: [1]
查看完整版本: 请教:数值积分的选择