MATLAB中的双积分

时间:2012-01-10 22:23:32

标签: matlab integration

我试图从高斯光束中找到光圈中的光焦度,光圈偏离光束中心。解决方案是以下等式(reference)(抱歉,这里没有LaTeX):

enter image description here

Wz 是一个常量,以及 a r 。我不确定如何用MATLAB做这样的事情。有没有人有建议?我知道有一个dblquad()函数,但它假定集成的限制是固定的,而不是相互依赖。

4 个答案:

答案 0 :(得分:3)

使用一些数学步法,你可以将双积分减少到一个(虽然包含误差函数),这应该更容易在MATLAB中以数字方式计算:

enter image description here

(预留错误;如果可能,请自行检查计算。)

答案 1 :(得分:2)

事实证明,更新版本的MATLAB现在具有quad2d()功能,它在表面上执行2d积分。参考页面上的Example 2详细介绍了进行此类集成的示例。

我的代码最终看起来像这样:

powerIntegral = @(x,y) 2/(pi*W^2)*exp(-2*((x - offsetDist).^2 + y.^2)/(W^2)); 
ymin = @(x) -sqrt(radius.^2 - x.^2);
ymax = @(x) sqrt(radius.^2 - x.^2);
powerRatioGaussian = quad2d(powerIntegral,-radius,radius,ymin,ymax);

非常漂亮。谢谢你的帮助。

答案 2 :(得分:1)

我不确定,但我认为symbolic toolbox可以帮到你。它适合这种问题。您可以使用 syms 命令将变量定义为符号变量,并以符号方式计算积分。然后,您可以分配变量值并查找实际值。

免责声明:我自己从未实际使用过它。

答案 3 :(得分:0)

一般来说,对于数值积分,您可以将具有相关边界条件的积分转换为具有独立边界的积分,方法是,如果您在原始边界内,则乘以1,如果在外部,则为0。然后将您的极限设为包含原始条件的正方形。换句话说,你会乘以

  

g(x,y)=((x ^ 2 + y ^ 2)< a ^ 2)

你的限制是-a

你必须对集成方法中的连续性假设有点小心,但除非有些奇怪,否则你应该没事。您可以随时通过更改单元格大小进行检查,并确保计算的积分值不会发生变化。

在这种特殊情况下,您还可以进行从笛卡儿坐标到极坐标的转换;

  

x = rcos(t)

     

y = rsin(t)

     

dxdy = rdrdt

然后你的积分极限将是从0到a和t从0到2 * pi