- 积分
- 0
- 注册时间
- 2009-11-12
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2009-11-13 19:11:41
|
显示全部楼层
来自 安徽合肥
本帖最后由 summen2 于 2009-11-13 19:18 编辑
triplequad本身是不能对矩阵做积分,你这里的dblquad其实也还是没对矩阵做积分,而是对矩阵中的每一个变量做积分。我表述没问题。dblquad+arrayfun合作才可以遍历矩阵,并做积分.
[J,I]=meshgrid(1:2);
a1=arrayfun(@(ii,jj) dblquad(@(u,v) sin(u)*sqrt(v)*ii*jj,0,ii,0,jj),I,J)
这就是你说的那个二重矩阵积分形式,(我另外加了点东西sin(u)*sqrt(v)*ii*jj,更复杂一点)
基本方法,就是将I,J代入进去dblquad(@(u,v) sin(u)*sqrt(v)*I*J,0,I,0,J)然后遍历.
但是,不知道你看清楚我的问题没有 先讨论一重积分吧,反正一样的道理)
首先说明这个有36个分量,这个积分函数如何写进去,这东西不像上面的有相同的东西(sin(u)*sqrt(v)),可以提炼出来?需要遍历一遍36个分量函数。
function re=ss(x)
re(1)=sin(x)
re(2)=3*x
re3)=(cos(x)+1)
.....
我试过,
第一种方法,将它考虑成I,J一样。
arrayfun(@(x)quad(x,1,2),@ss),-----结果告诉我Unsupported ARRAYFUN input type:function_handle
这里的@ss哪怕写成@sdsdfas(无意义符号也一样,说明根本没有检查这个符号直接说错误)
第二种方法,
function re=ss(x,i)
sss(1)=sin(x)
sss(2)=3*x
sss(3)=(cos(x)+1)
re=sss(i)
sd=@(x)ss(x,2)----能识别
sd(3)--------------能识别
quad(@(x)ss(x,2),1,2)------不可以,出错
所以说我不是没看,是你那个和我这个问题有区别。你告诉我怎么把函数加入,我想不出来,或者是我脑筋没拐过来。你要是根据你提到的把这个解决,我跟你道歉。 |
|