Различные способы сделать это:
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 и т. Д. Визуально, есть небольшая разница между n=1
и n=1
+ n=3
но едва заметный для n=1
+ n=3
+ n=5
. - Учитывая, что нужно так мало терминов, первый подход, вероятно, лучше.Также пропустите четные индексы, так как они вам не нужны.