Я пишу программу Matlab для вычисления числа Пи путем суммирования рядов
A = Sum of a_i from i=1 to N
где
pi/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + 1/13 ...
Для вычисления числа Пи через суммирование рядов предлагается установить
a_i = (-1)^(i+1)/(2i-1)
Для этого я написал программу ниже
n=100;
f=[];
for jj=1:n
ii=1:jj;
f=[f 4*sum( ((-1).^(ii+1))./(2.*ii-1) )];
end;
hold on
plot(f)
title('Computing of \pi using a finite sum')
xlabel('Number of summations')
ylabel('Estimated value of \pi')
plot(1:size(f,2),ones(size(f))*pi)
Эта программа показывает, что приближение ряда является несколько точным вблизи N=80
.
Я сейчас пытаюсь настроить мою программу так, чтобы y-axis displays total calculation time T_N
и x-axis displays N (the number of summations)
. Общее время расчета T_N должно увеличиваться с увеличением N. В идеале, я хочу, чтобы график отображал что-то близкое к линейному отношению между T(N)
и N
Для этого я настроил свою исходную программу следующим образом
n=100;
f=[];
tic
for jj=1:n
ii=1:jj;
f=[f 4*sum( ((-1).^(ii+1))./(2.*ii-1) )];
end;
hold on
plot(f)
title('Time it takes to sum \pi using N summations')
xlabel('Number of summations (N)')
ylabel('Total Time (T_N)')
plot(1:size(f,2),toc)
slope = polyfit(1:size(f,2),toc,1);
Это выглядит неправильно. Я, должно быть, неправильно применил встроенные функции синхронизации в Matlab (tic и toc). Итак, я собираюсь проанализировать свой код и задать два вопроса -
Как я могу настроить мой код выше, чтобы ось Y правильно отображала общее время вычисления для суммирования N? Похоже, я что-то не так сделал в plot(1:size(f,2),toc)
.
После того, как я получу y-axis
для отображения правильного total calculation time (T_N)
, я смогу использовать команду polyfit
, чтобы найти наклон T(N)/N
. Это даст мне линейную зависимость между T(N) and N
. Затем я мог бы использовать значение slope = polyfit(1:size(f,2),toc,1)
для вычисления
t_N = a + b*N
, где t_N
вычисляется для каждого значения N
, а b
- это наклон, вычисленный с помощью команды polyfit.
Я думаю, что смогу найти values of a and b
после того, как правильно отобразил y-axis
и правильно сослался на команду polyfit.