Возможные ошибки в коде у matlab о функции - PullRequest
0 голосов
/ 22 февраля 2020

Пусть Sn = 8Σ (1 / ((4κ-3) (4κ-1))). Известно, что lim Sn, когда n стремится к инфинитиву, равен pi. Напишите функцию [sn, n] = mySumPi (tol), которая выводит Sn и n для наименьшего n, такого, что абсолютное значение Sn-pi

Я написал следующий код, но кажется, что он не работает.

function [sn,n] = mySumPi(tol)
%[sn,n] = mySumPi(tol)
%lim as n approaches infinity is pi
% n is the smallest numbers such that the abs(sn-pi) <tol
count = 0;
sn=0
while abs(sn-pi) >= tol
    sn = sn + (8*sn)*(((4*n)-3)*((4*n)-1)) 
    count = count+1;
    n = count - 1;   
end
end

1 Ответ

1 голос
/ 22 февраля 2020

Я думаю, вы можете попробовать код ниже.

function [sn,n] = mySumPi(tol)
n = 1; 
sn = 0;
while 1 % repeat the procedure until the termination condition is valid
  sn = sn + 8/(((4*n)-3)*((4*n)-1)); % you had wrong formula in you code
  if abs(sn-pi) < tol % termination condition
    break;
  else
    n = n + 1;
  end
end
end

такой, что

>> [sn,n] = mySumPi(1e-1)
sn =  3.0418
n =  5

>> [sn,n] = mySumPi(1e-3)
sn =  3.1406
n =  500

>> [sn,n] = mySumPi(1e-5)
sn =  3.1416
n =  50000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...