【问题标题】:Integration with matlab与matlab集成
【发布时间】:2010-07-28 05:36:25
【问题描述】:

我想解决这个问题:

alt text http://img265.imageshack.us/img265/6598/greenshot20100727091025.png

我不想使用“int”,我想使用“quad”系列(quad、dblquad、triplequad) 但我不能。 你能帮帮我吗?

【问题讨论】:

  • 您的问题中缺少引号,而且您需要在问题中显示问题的相关部分以及错误消息,不要指望人们从其他网站下载东西。
  • 是的,但我不知道在这个页面上写积分。

标签: matlab


【解决方案1】:

我假设您的真正问题比这个微不足道的问题更复杂。最好的解决方案就是使用符号积分。为什么数值积分难?

一维中的数值积分通常需要大约 100 次函数评估。 (确切的数字将非常取决于所需的精度、限制等。)这使得二维积分通常需要 100^2 = 10000 个函数评估。因此,自适应 5 维积分将需要 100^5 = 1e10 次函数评估。 (这只是一个非常粗略的数量级估计。)我的意思是,你根本不想这样做!

更好的是减少问题的复杂性。如果您的积分是可分离的(就像这个一样),那么就这样做!将一个 5 维问题简化为多个 1 维问题。

此外,在许多情况下,我看到人们想要对高斯 PDF 进行数值积分。看到这很容易通过调用 erf 或 erfc 以及转换来解决。关键是在许多情况下,定义了特殊函数以大大降低问题的复杂性。

我应该补充一点,在很多情况下,解决数学难题的关键是利用数学将问题简化为更简单的问题。如果你能找到一种方法来稍微降低你的问题的维度,它就会变得更容易处理。

【讨论】:

    【解决方案2】:

    你显示的积分是

    1. 分析可解:总是做你能做的分析

    2. ?等于一个数字:常量表达式应该从数值计算中去掉

    3. 在 MATLAB 中不容易计算(或非常正确)。

    您可以使用cumtrapz 单独对每个变量进行积分,并调用trapz 进行最终积分。请记住,对于任何比简单的线性函数求和更复杂的问题,这都会导致错误。

    Mathematica 更适合 nD 集成,如果您可以访问它的话。

    【讨论】:

      【解决方案3】:

      matlab 可以做符号积分

      >> x = sym('x'); y = sym('y'); z = sym('z'); u = sym('u'); v = sym('v'); 
      >> int(int(int(int(int(x+y+z+u+v,1,5),-2,3),0,1),-1,1),0,1)
      
      ans =
      
      180
      

      【讨论】:

        【解决方案4】:

        刚刚注意到您想要进行数字积分,而不是符号积分

        如果看dblquad和triplequad的源码

        >> edit dblquad
        

        你看到他们只是调用较低的版本。 你应该可以添加一个quadquad和一个quintquad(或递归一个n-quad)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-10-19
          • 2020-11-28
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多