【问题标题】:Double integral in MATLABMATLAB中的二重积分
【发布时间】:2012-02-07 08:16:13
【问题描述】:

我正在尝试从高斯光束中找到孔径中的功率,其中孔径偏离光束中心。解决方案是以下等式(reference)(对不起,这里没有 LaTeX):

Wz 是一个常数,与 ar 一样。我不确定如何用 MATLAB 做这样的事情。有人有建议吗?我知道有一个dblquad() 函数,但它假定集成的限制是固定的,并且不相互依赖。

【问题讨论】:

    标签: matlab integration


    【解决方案1】:

    使用一些数学步法,您可以将双积分减少为一个(尽管包含误差函数),这应该更容易在 MATLAB 中进行数值计算:

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

    【讨论】:

    • 干得好@You。我发现了一个更新的 MATLAB 函数“quad2d()”,它似乎可以满足我的要求,但您的解决方案看起来也非常好。
    【解决方案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);
    

    相当漂亮。感谢您的帮助。

    【讨论】:

      【解决方案3】:

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

      免责声明:我自己从未真正使用过它。

      【讨论】:

        【解决方案4】:

        一般来说,对于数值积分,您可以通过乘以一个函数将具有独立边界条件的积分转换为具有独立边界的积分,如果您在原始边界内则为 1,如果您在原始边界外则为 0。然后将您的限制视为包含原始条件的正方形。换句话说,在这里你会乘以

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

        你的限制是 -a

        您必须对集成方法中的连续性假设稍加小心,但除非出现非常奇怪的情况,否则您应该没问题。您始终可以通过更改像元大小并确保计算的积分值不会改变来进行检查。

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

        x = rcos(t)

        y = rsin(t)

        dxdy = rdrdt

        那么你的积分限制将是 r 从 0 到 a 和 t 从 0 到 2*pi

        【讨论】:

          猜你喜欢
          • 2017-10-16
          • 2020-08-27
          • 2018-05-11
          • 1970-01-01
          • 2019-05-07
          • 2013-01-19
          • 1970-01-01
          • 2013-12-12
          • 1970-01-01
          相关资源
          最近更新 更多