yanzi12 发表于 2007-3-27 17:14

帮忙看一下 triplequad 的用法,谢谢!

我想算一个三重积分,程序如下,为什么总编译错误,帮忙指导一下吧。

sigma1 = 0.25;
sigma2 = 0.25;
hl=1;% 元素浓度 含量
rxs=22.5;% 入射质量吸收系数
fxs=114.2;%反射质量吸收系数
md=4.54;%物质密度
rj=pi/4;
fj=pi/4;
III=triplequad(@(x,y,z) (1/(sqrt(2*pi)*sigma1*sigma2)*exp(-((x)^2/(2*sigma1^2)+(y)^2/(2*sigma2^2)+(sigma1^2+sigma2^2)*z^2/(2*sigma1^2*sigma2^2)))*hl*md*rxs*exp(-(rxs*csc(rj)+rxs*csc(fj))*sqrt(x^2+y^2)*md)),-1,0,-1,0,-1,1)
谢谢!!

yanzi12 发表于 2007-3-27 22:17

我简化了一下,如下:
triplequad(@(x,y,z) exp(-(x^2/2+y^2/2+z^2/2)),-1,1,-1,1,-1,1)

显示错误如下:
??? Error using ==> mpower
Matrix must be square.

Error in ==> quad at 62
y = f(x, varargin{:});
.......

帮忙解决一下吧,help 我已经用了,例子很简单,但我的就不行:@(

xjzuo 发表于 2007-3-28 10:07

我用的是Matlab6.5,用inline函数试了一下,没有问题.

yanzi12 发表于 2007-3-28 10:29

回复 #3 xjzuo 的帖子

‘inline ’ 是定义函数用的,不是求积分的呀,
===================
相当有意思的说法...
===================

你是怎么作的,怎样求积分呀? 谢谢,帮帮忙吧。

我的是 MATLAB 7.0

[ 本帖最后由 xjzuo 于 2007-3-28 10:33 编辑 ]

xjzuo 发表于 2007-3-28 10:34

用inline定义你的被积函数就行了.
另:注意"点"运算的正确写法.

eight 发表于 2007-3-28 10:35

原帖由 yanzi12 于 2007-3-28 10:29 发表
‘inline ’ 是定义函数用的,不是求积分的呀,
===================
相当有意思的说法...
===================

你是怎么作的,怎样求积分呀? 谢谢,帮帮忙吧。

我的是 MATLAB 7.0


有可能是 .^ 和 ^ 的区别

yanzi12 发表于 2007-3-28 10:41

谢谢,搞明白了,:@) 也搞定了!

但是它给的例题为什么不加 . 呢?真奇怪。

eight 发表于 2007-3-28 10:45

原帖由 yanzi12 于 2007-3-28 10:41 发表
谢谢,搞明白了,:@) 也搞定了!

但是它给的例题为什么不加 . 呢?真奇怪。


例题是数学语言,matlab是编程语言

yanzi12 发表于 2007-3-28 11:50

不好意思,又有问题了,

用 inline 之后,所有的参数,也都变成变量了。如果用下面的形式:

I=inline('1/(sqrt(2*pi)*sigma1*sigma2).*exp(-((x-MU(1)).^2./(2*sigma1^2)+(y-MU(2)).^2./(2*sigma2^2)+(sigma1^2+sigma2^2).*z.^2./(2*sigma1^2*sigma2^2))).*hl.*md.*rxs.*exp(-(rxs*csc(rj)+rxs*csc(fj)).*sqrt(x.^2+y.^2).*md)','x','y','z')
之后,变量是 xyz,但是参数的值不能带入呀。
怎么办呀?谢谢!!
页: [1]
查看完整版本: 帮忙看一下 triplequad 的用法,谢谢!