【问题标题】:how do I compute this infinite sum in matlab?如何在matlab中计算这个无限和?
【发布时间】:2013-04-12 02:29:32
【问题描述】:

对于给定的 x 和 tau,我想在 Matlab 中计算以下无限和:

在给定 x=0.5 和 tau=1 的情况下,我尝试了以下代码:

symsum((8/pi/pi)*sin(n*pi*0.5)*sin(n*pi*0.5)*exp(-n*n*pi*pi)/n/n,1,inf)

但我明白了:

(228155022448185*sum((exp(-pi^2*n^2)*((exp(-(pi*n*i)/2)*i)/2 - (exp((pi*n*i)/2)*i)/2)^2)/n^2, n == 1..Inf))/281474976710656

我想要一个明确的值,假设总和收敛。我究竟做错了什么?返回 symsum 结果时,Matlab 似乎不计算 exp() 。如何告诉 Matlab 计算评估指数?

【问题讨论】:

    标签: matlab


    【解决方案1】:

    转换为双精度

    double(symsum(...))
    

    【讨论】:

      【解决方案2】:

      只是为了向您展示一种不同的方式,一种不需要符号工具箱的方式,

      summ  = 0;
      summP = inf;
      n = 1;
      while abs(summP-summ) > 1e-16
          summP = summ;    
          summ = summ + sin(n*pi*0.5)*sin(n*pi*0.5)*exp(-n*n*pi*pi)/n/n;
          n = n + 1;
      end
      
      8/pi/pi * summ
      

      仅在 1 次迭代后收敛(很明显,因为 exp(-4*6.28..)/n/n 非常小,而 sin(..) 总是在 [-1 1] 中的某个位置)。所以给定tau==1x==0.5,无限和本质上就是n==1 的值。

      【讨论】:

        【解决方案3】:

        您应该首先使用 syms 定义变量“n”。然后,您可以将此变量包含在您的 symsum 代码中。

        这就是我所做的:

        syms n; AA = symsum((8/pi/pi)*sin(n*pi*0.5)*sin(n*pi*0.5)*exp(-n*n*pi*pi)/n/n,n,1,inf); BB = double(AA)
        BB = 4.1925e-05
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-02-19
          • 1970-01-01
          • 2012-03-27
          • 1970-01-01
          • 1970-01-01
          • 2016-09-02
          • 2021-05-03
          相关资源
          最近更新 更多