Консультация № 172489
22.09.2009, 17:52
0.00 руб.
0 10 2
Здравствуйте уважаемые знатоки.
Помогите с решением следующей задачи: Найти сумму ряда с точностью E=10^(-4), общий член которого An=((n!)^2)/(2^n^2).
Заранее благодарю. PS. Желательно с хорошими пояснениями что к чему...

Обсуждение

давно
Специалист
246813
155
22.09.2009, 18:19
общий
В условиях не сказано как меняется n(например от единицы до бесконечности)?
давно
Специалист
246813
155
22.09.2009, 19:44
общий
это ответ
Здравствуйте, Roland Deschain.
Допустим, что n меняется от единицы до бесконечности.
Код программы приведен в Приложении и проверен на Microsoft Visual C++ 6.0

Приложение:
#include <iostream>
#include <cmath>
using namespace std;

int main()
{
int n,i,f;
double a, s, E=0.0001;

s=0;//Сумма ряда
n=1;
a=1;//Частичная сумма
while(a>=E)
{
f=1;
for(i=1;i<=n;i++)//вычисление факториала
{
f=f*i;
}

a=pow(f,2)/pow(2,pow(n,2));
s+=a;
cout << a <<"\n";
n++;

}
cout<<"Znacenie summy ryada:"<<s<<"\n";
return 0;
}
давно
Академик
320937
2216
22.09.2009, 20:54
общий
это ответ
Здравствуйте, Roland Deschain.
Код в приложении.

Выдача:
e=0.0001 n=5 summa=1.82953

Приложение:
// MS Visual 6
// Найти сумму ряда с точностью E=10^(-4),
// общий член которого An=((n!)^2)/(2^n^2).
#include <iostream>
#include <cmath> // для использования функции pow
using namespace std;

int main()
{
int n; //текущий номер члена ряда
double a; //n-й член ряда
double e=0.0001; // ошибка
double s;

s=0;//Сумма ряда
n=0;
a=1; // нулевой член ряда равен единице
// каждый член ряда, начиная с первого, выражаем рекуррентно через предыдущий
// a[n] = a[n-1]
while(a>=e)
{
s += a;
// прибавили к сумме текущий член
++n;
a *= n*n*pow(2,(-2*n+1)); // вычисляем следующий член
}
cout << "e=" << e << " n=" << n-1 << " summa=" << s << endl;
return 0;
}
давно
Специалист
246813
155
22.09.2009, 22:51
общий
leonid59, ваша программа не совсем правильно написана и выдает неправильный ответ. В цикле строчку "s += a;" следует писать в конце цикла, а не в начале, так как первоначально сумма должна быть равна 0.
Неизвестный
22.09.2009, 23:07
общий
Как Вы верно заметили, "В условиях не сказано как меняется n". Вы предполагаете, что начальный n равен единице, я предполагаю, что начальный n равен нулю, стало быть, сумма ряда отличается от суммы ряда по Вашей программе ровно на 1 единицу, что было проверено, то есть я запустил Вашу программу и получил 0.82953, так как значение a[0]=1.

Однако я направил свой код не из-за этого, а потому, что он работает эффективней. (Расчет факториала в цикле!)
давно
Специалист
246813
155
22.09.2009, 23:20
общий
В этом случае я с Вами солидарен. В следующий раз постарайтесь сразу пояснять в ответе условия по которым решали задачу, чтобы избегать подобных ситуаций.
Неизвестный
22.09.2009, 23:27
общий
LfiN:
В моем варианте программы есть такие строчки, причем с комментариями. Жаль, что они остались незамеченными :)
...........
n=0;
a=1; // нулевой член ряда равен единице
..........
давно
Старший Модератор
17042
808
23.09.2009, 19:18
общий
LfiN:
Итак, всё разъяснилось? Снимаем пометку для модераторов?
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
давно
Специалист
246813
155
23.09.2009, 22:28
общий
Да, все разъяснилось.
давно
Старший Модератор
31795
6196
23.09.2009, 22:37
общий
LfiN & leonid59:
Снял метку модераторам.
Удачи!
Об авторе:
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.

Форма ответа