Оценка значения Пи с рядом

Вот моя проблема:

Вычислите значение π, используя следующий ряд:

((π^2)-8)/16=[sum from 1 to pos. infinity] 1/(((2n−1)^2)*((2n+1)^2))

• Найдите наименьшее количество членов, необходимых для получения абсолютного значения ошибки на π меньше, чем 10e−8.

Вот мой код:

x=0;
for i=1:1000

    x=x+(1/((((2*i)-1)^2)*(((2*i)+1)^2)));
    z=sqrt((x*16)+8);
    error=abs(z-pi);
    if (error < 10e-8)
        i
        break
    end
end

Ответ, который я получаю, это 81, когда цикл прерывается, но это не правильный ответ. Я пытался выяснить, что не так с моим кодом, что он не делает то, что мне нужно.

Я довольно долго смотрел на код и не мог понять, где я сделал ошибку.


person Johnny Hieu Le    schedule 24.01.2012    source источник
comment
ммм.. разве ты не хочешь посмотреть на z, когда вырвешься из цикла? На самом деле... Я мог бы распечатать разницу между z и pi.   -  person Justin Peel    schedule 24.01.2012
comment
›но это не правильный ответ Почему бы и нет? Все выглядит правильно. Mathematica дает тот же результат   -  person Cheery    schedule 24.01.2012
comment
Я тоже считаю, что это правильный ответ, но мне говорят, что это не означает, что я делаю ошибку.   -  person Johnny Hieu Le    schedule 24.01.2012
comment
Когда я это делаю, я получаю abs(z-pi)=9.7997e-08, так что ваш код работает. Кроме того, с i=80 вы получите ошибку ~ 1.01e-7, что соответствует › 10e-8. Какого ответа вы ожидали? Единственное, о чем я могу думать, это то, что вы неправильно прочитали, и это было (скажем) 1e-8 вместо 10e-8?   -  person mathematical.coffee    schedule 24.01.2012
comment
@Johnny Hieu Le Может быть, это ошибка не в значении числа пи, а в ((π^2)-8)/16? в этом случае это даст вам 59 терминов.   -  person Cheery    schedule 24.01.2012
comment
@Cheery В проблеме конкретно указывается ошибка на пи.   -  person Johnny Hieu Le    schedule 24.01.2012
comment
@mathematical.coffee Это 10e-8, а не 1e-8.   -  person Johnny Hieu Le    schedule 24.01.2012
comment
Возможно, что, поскольку они говорят, что используют следующую серию, они имеют в виду ошибку на ((π ^ 2) -8)/16, как говорит @Cheery, - я предлагаю вам обратиться к своему наставнику за разъяснениями, поскольку, возможно, вопрос сформулирован очень двусмысленно.   -  person mathematical.coffee    schedule 24.01.2012
comment
Нашел проблему. 10e-8 должно было быть 10^-8. Каким-то образом скопировав его, преобразовали. Спасибо всем за помощь!!!   -  person Johnny Hieu Le    schedule 24.01.2012
comment
@JohnnyHieuLe, если вы обнаружили проблему, опубликуйте ее как ответ и примите ее самостоятельно. Это помогает будущим поколениям программистов.   -  person Andrey Rubshtein    schedule 24.01.2012


Ответы (1)


Я нашел проблему. Предполагается, что ошибка должна быть меньше 10^-8, а не 10e-8. Каким-то образом номера поменялись при копировании.

person Johnny Hieu Le    schedule 24.01.2012