如何建立涉及从x = 1到无穷大且循环的方程式?

时间:2019-02-14 04:21:59

标签: matlab

我对如何正确设置此方程感到困惑。求V(i,j)的值。最终结果将是绘制随时间变化的V。我知道需要循环才能使该方程起作用,但是在设置它时我迷失了方向。基本上,我正在尝试将n = 1到pg_largeobject的无穷大 我本来以为我应该让while循环使n增加1,直到我说10左右,才知道输出是什么样子。所有变量都是未知的,并再次添加了值以查看曲线图。 我记下另一个代码,其中方程式仅取决于i和j。但是,有了这n个词,我就被甩了。关于建立方程式,任何建议都很好。谢谢。

(1-(-1)^n)/(n^4 *pi^4)*sin((n*pi*c*j)/L)*sin((n*pi*i)/L)

1 个答案:

答案 0 :(得分:2)

各种方法:

1)一次计算最多Nmax的总和:

Nmax = 30;
Vijn = @(i,j,n) R*((1-(-1)^n)/(n^4 *pi^4)*sin((n*pi*c*j)/L)*sin((n*pi*i)/L));
i = 1:31;
j = 1:50;
n = 1:Nmax;
[I,J,N] = ndgrid(i,j,n);
V = arrayfun(Vijn,I,J,N);
Vc = cumsum(V,3);
% now Vc(:,:,k) is sum_n=1^{k+1} V(i,j,n)

figure(1);clf;imagesc(Vc(:,:,end));

2)无限循环

n = 1;
V = 0;
i = 1:31;
j = 1:50;
[I,J] = meshgrid(i,j);
while true
    V = V + R*((1-(-1)^n)/(n^4 *pi^4)*sin((n*pi*c*J)/L).*sin((n*pi*I)/L));
    n = n + 1;      
    figure(1);clf;
    imagesc(V);
    title(sprintf('N = %d',n))
    drawnow;
    pause(0.25);
end

请注意,在您的示例中,您不需要很多术语,因为:

  • 第二个项都是零(对于n,项1-(-1)^n也是零)。
  • 术语以1/n^4衰减。在规范中:n=1贡献〜2e4,n=3贡献〜4e2,n=5贡献5e1,n=7贡献〜14,依此类推。在视觉上,{{ 1}}和n=1 + n=1,但对于n=3 + n=1 + n=3来说,几乎没有什么意义。
  • 鉴于只需要很少的术语,第一种方法可能是更好的方法。此外,由于不需要索引,请跳过偶数索引。