shuidixn 发表于 2011-8-8 17:38

matlab quadl 出现维数不一致该如何解决

如下面一个简单的code:
a=;
ff=@(x)(exp(-a.*x.^2/2)/(2*pi)^0.5);
I=quadl(ff,0,10)
运行时出现:
??? Error using ==> times
Matrix dimensions must agree.

Error in ==> @(x)(exp(-a.*x.^2/2)/(2*pi)^0.5)


Error in ==> quadl at 70
y = feval(f,x,varargin{:}); y = y(:).';
求个算法,可以不用循环,能算出a分别取3个值时I的结果,谢谢

ChaChing 发表于 2011-8-9 13:19

Ref: 5F, 常见的程序出错问题整理 http://forum.vibunion.com/thread-46001-1-1.html

rocwoods 发表于 2011-8-9 15:24

本帖最后由 rocwoods 于 2011-8-9 15:29 编辑

>> format long
>> a=;
ff=@(x,n)(exp(-a(1:n).*x.^2/2)/(2*pi)^0.5);
Qv = quadv(@(x)ff(x,3),0,10)
Qv =
   0.500000068500102   0.288675265043162   0.250000120681336或者:
>> arrayfun(@(a) quadl(@(x)(exp(-a.*x.^2/2)/(2*pi)^0.5),0,10),a)
ans =
   0.500000000033699   0.288675136866528   0.250000000214327
结果有少许出入是因为积分主要的函数quadl和quadv不同。

ChaChing 发表于 2011-8-9 23:07

Matrix dimensions must agree.
这个报错基本原因是a与x的大小不同!
LZ参考下这个帖
关于带参数的积分问题 http://forum.vibunion.com/thread-42369-1-1.html

shuidixn 发表于 2011-8-10 21:09

回复 3 # rocwoods 的帖子

学习了,多谢

shuidixn 发表于 2011-8-10 21:13

回复 4 # ChaChing 的帖子

恩恩,解决了我的问题,还学到了新的知识,多谢多谢
页: [1]
查看完整版本: matlab quadl 出现维数不一致该如何解决