Как настроить уравнение, которое включает в себя сумму от х = 1 до бесконечности и циклов? - PullRequest
0 голосов
/ 14 февраля 2019

Я не понимаю, как правильно настроить это уравнение.Найти значение V (i, j).Конечным результатом будет построение графика V со временем.Я понимаю, что должны быть циклы, чтобы это уравнение работало, однако я теряюсь, когда дело доходит до его настройки.По сути, я пытаюсь взять сумму от n = 1 до бесконечности (1-(-1)^n)/(n^4 *pi^4)*sin((n*pi*c*j)/L)*sin((n*pi*i)/L). Сначала я думал, что должен сделать цикл while, чтобы увеличить n на 1, пока я не достигну, скажем, 10 или около того, просто чтобы понять, что на выходебудет выглядеть так.Все переменные были неизвестны, и значения были добавлены снова, чтобы увидеть, как будет выглядеть график.У меня есть другой код, где уравнение зависит только от i и j.Однако с этим русским термином меня скинули.Любой совет был бы хорош в настройке уравнения.Спасибо.

L=10;
x=linspace(0,L,30);
t1= 50;
X=30;
p=1
c=t1/1000;
V=zeros(X,t1);
V(1,:)=0;
V(30,:)=0;
R=((4*p*L^3)/c);
n=1;
t=1:50;
while n < 10
    for i=1:31
     for j=1:50
         V(i,j)=R*sum((1-(-1)^n)/(n^4 *pi^4)*sin((n*pi*c*j)/L)*sin((n*pi*i)/L));
     end
    end
    n=n+1;
end


figure(1)
plot(V(i,j),t)

1 Ответ

0 голосов
/ 14 февраля 2019

Различные способы сделать это:

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.
  • Учитывая, что нужно так мало терминов, первый подход, вероятно, лучше.Также пропустите четные индексы, так как они вам не нужны.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...