Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Надо написать код на c++ к заданию

Aa Aa Ученик (108), открыт 5 дней назад
1 ответ
Ксения Райт Гений (97138) 4 дня назад
Вот из чего надо исходить:
P = 1/[П(n=1;∞)(1-0,25/n²)]
А дальше самое простое - сверять частные произведения с уже известным значением этого бесконечного произведения:
 #include <iomanip> 
#include <iostream>

using namespace std;

double Abs(double x) { return x < 0. ? - x : x; }

int main()
{
double E = 0.001, error, fourth = 0.25, n, one = 1.,
p = one, P = 1.57079632679489661923, x;
for (n = one;; n += one)
{
p *= one - fourth / n / n;
x = one / p;
error = x - P;
cout << setprecision(0) << setw(5) << fixed << n << ')' <<
setprecision(16) << setw(22) << x << setprecision(6) <<
setw(16) << scientific << error << endl;
if (Abs(error) < E) break;
}
}
Какая точность Е имеется в виду (относительная или абсолютная) у Вас не указано, значит берём абсолютную. В общем для получения требуемой точности потребуется взять по меньшей мере 393 сомножителя. Кстати, такой апостериорный подход может быть не защитан, а алгоритм оценки априорной точности у Вас не указан также как и сам род точности, которую нужно достичь. Да, и ещё: бесконечное произведение - это именно произведение, а никакой не ряд!
Похожие вопросы