Форум программистов, компьютерный форум CyberForum.ru

вычислить сумму - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.92
oops
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 8
13.12.2009, 15:28     вычислить сумму #1
При некоторых заданных x,N и E определяемых вводом вычислите сумму N слагаемых заданного вида, затем сумму тех слагаемых которые по абсолютной величине больше E.Для второго случая выполните суммирование для двух значений E отличающихся на порядок,и при этом определите кол-во слагаемых, включенных в сумму. Сравните результат с точным значением функции, для которой данная сумму определяет приближенное значение при x, лежащем в интервале (-R,R)
фор-ла : ch(x)=1 + pow(x,2)/2! + pow(x,4)/4! + pow(x,6)/6! + ... ; R=бесконечности

1-ю часть я вроде сделал а вот как 2-ю делать чето непойму помогите пожалуйста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
void main (){
char x;
sin>>x;
while (x!=3){
cout<<"1.если вы хотите вычислить сумму N слагаемых, нажмите "1" "<<"если сумму слагаемых больших по abs E то нажмите "2" "<<"3. выход "<<endl;
{
    if (x==1){
        int n;
        int S=1;
        int n0;
        int f;
        int h=1;
        n0=f;
         for (int i=0,i<n,i++);
        while (n0>0){
          h*=n0;
          n0 --;
        }
        S+=pow(x,f)/h;
        f+=2;
   }
    if (x==2){
где while с n0 это я считал факториал f это степень h это конечное число при подсчете
cout это менюшка
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
manfeese
 Аватар для manfeese
128 / 127 / 16
Регистрация: 04.01.2009
Сообщений: 415
13.12.2009, 15:51     вычислить сумму #2
Все можно сделать немного иначе:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void main (){
char x;
double s1=0;
 
sin>>x;
while (x!=3){
cout<<"1.если вы хотите вычислить сумму N слагаемых, нажмите "1" "<<"если сумму слагаемых больших по abs E то нажмите "2" "<<"3. выход "<<endl;
{
    if (x==1)
    {
       int N;
       cout<<"Vvedite N ";  cin>>N;   
       for(int i=0,k=1,f=1;i<N;i++,k*=x*x,f*=i+1)
          s1+=k/f;
    }
    if (x==2)
   {
        double E,sl;
        cout<<"Vvedite E ";  cin>>E;   
 
        int k=1,f=1 i=1;
        do
        {
          sl=s1;
          s1+=k/f;
          i++;
          k*=x*x;
          f*= i;
        }while (fabs(s1-sl)>E);
     }
oops
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 8
13.12.2009, 22:16  [ТС]     вычислить сумму #3
спасибо
только вот здесь помоему наверно надо s1 присвоить сразу 1
C++
1
double s1=0;
manfeese
 Аватар для manfeese
128 / 127 / 16
Регистрация: 04.01.2009
Сообщений: 415
13.12.2009, 23:23     вычислить сумму #4
в таком случае все коэффициенты надо будет изсенить "на шаг больше"
oops
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 8
13.12.2009, 23:40  [ТС]     вычислить сумму #5
а все понял
а что у вас такое f и k?
manfeese
 Аватар для manfeese
128 / 127 / 16
Регистрация: 04.01.2009
Сообщений: 415
13.12.2009, 23:53     вычислить сумму #6
k - значение числителя
f - значение знаменятеля

Нет необходимости постоянно вычислять x^2, x^4 x^6... и факториал числа, когда это можно сделать на каждом пройденном шаге. Например
Код
i=1. k=1 f=1 s=k/f=1;
i=2. k=k*x*x, f=f*i=2, s+=k/f=1+x*x/2;
i=3. k=k*x*x, f=f*i=6, s+=k/f=1+x*x/2+x*x*x*x/6
.....
i=n k=k*x*x, f=f*n, s+=k/f=1+(x^2)/2+(x^4)/6+.....+(x^(2n-2))/n!
oops
0 / 0 / 0
Регистрация: 28.11.2009
Сообщений: 8
14.12.2009, 00:50  [ТС]     вычислить сумму #7
при этом определите кол-во слагаемых, включенных в сумму. Сравните результат с точным значением функции, для которой данная сумму определяет приближенное значение при x, лежащем в интервале (-R,R)
а вот это можете тоже помочь написать и еще что у вас такое sl?
Том Ардер
Модератор
 Аватар для Том Ардер
3617 / 2236 / 271
Регистрация: 15.06.2009
Сообщений: 3,917
14.12.2009, 01:46     вычислить сумму #8
oops,
manfeese,

1)х в меню и в вычислениях - это же две больших разницы!
2)факториал считается неправильно
3)его вообще не надо считать!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
char choice;
cout menu;
 
if( choice == 1 )
{
  int  N;
  double x;
  
  cin >> x >> N;
 
  double sumN = 0;
  double t =1; // текущее слагаемое
 
  for( int i = 0; i < N; i++ )
  {
    sumN += t;
    t *= x*x/double((2*i+1)*(2*i+2));
  }
  cout << x << sumN << cosh(x);
}
if( choice == 2 )
{
  double x;
  double E;
 
  cin >> x >> E;
 
  double sumE = 0;
  double t =1; // текущее слагаемое
  int i = 0;
 
  do
  {
    sumE += t;
    t *= x*x/double((2*i+1)*(2*i+2));
    i++;
  } while( t > E );
  cout << x << i << sumE << cosh(x);
}
manfeese
 Аватар для manfeese
128 / 127 / 16
Регистрация: 04.01.2009
Сообщений: 415
14.12.2009, 10:42     вычислить сумму #9
Том Ардер, Вы хотите сказать, что в таком случае факториал считаеться правильно?
C++
1
t*=.../double((2*i+1)*(2*i+2));
Код
i=0  t=.../2;
i=1 t=.../24;  // уже неправильно так как должно быть 6
i=2 t=.../720  // а должно быть 24
Том Ардер
Модератор
 Аватар для Том Ардер
3617 / 2236 / 271
Регистрация: 15.06.2009
Сообщений: 3,917
14.12.2009, 11:14     вычислить сумму #10
manfeese,

Строки 17,18

i = 0
sum = 1
t = x*x/2!

i = 1
sum = 1 + x*x/2!
t = t*x*x/(3*4) = x^4/4!

i = 2
sum = 1+ x^2/2! + x^4/4!
t = t*x*x/(5*6) = x^6/6!

Что же здесь неправильно?
manfeese
 Аватар для manfeese
128 / 127 / 16
Регистрация: 04.01.2009
Сообщений: 415
14.12.2009, 14:01     вычислить сумму #11
Том Ардер, Да, согласен!!!
Том Ардер
Модератор
 Аватар для Том Ардер
3617 / 2236 / 271
Регистрация: 15.06.2009
Сообщений: 3,917
14.12.2009, 22:42     вычислить сумму #12
Поскольку первое слагаемое = 1, то код (пост 8) можно слегка оптимизировать:

C++
1
2
3
4
5
6
7
8
9
double sumN = 1;
double t = 1; // текущее слагаемое
double x2 = x*x;
 
for( int i = 1; i < N; i++ ) 
{ 
  t *= x2 / double((2*i-1)*(2*i));
  sumN += t; 
}
Второй вариант аналогично.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.04.2010, 04:14     вычислить сумму
Еще ссылки по теме:

Даны матрицы А(4,3) и В(3,5). Для каждой матрицы вычислить сумму элементов над главной диагональю. Ввод,вывод,сумму в виде отдельных процедур C++
Вычислить сумму четных и сумму нечетных чисел натурального ряда от 1 до N C++
C++ Вычислить сумму

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Дима$
2 / 2 / 0
Регистрация: 08.09.2009
Сообщений: 8
22.04.2010, 04:14     вычислить сумму #13
Цитата Сообщение от Том Ардер Посмотреть сообщение
manfeese,

Строки 17,18

i = 0
sum = 1
t = x*x/2!

i = 1
sum = 1 + x*x/2!
t = t*x*x/(3*4) = x^4/4!

i = 2
sum = 1+ x^2/2! + x^4/4!
t = t*x*x/(5*6) = x^6/6!

Что же здесь неправильно?
что по вашему такое факториал?? 6!= 5*6???=)
6! = 1*2*3*4*5*6
можно написать функцию бна её результат и делить!=)
C++
1
2
3
4
5
6
7
8
int Fact(int x) ////функция находит факториал 'x'
{
 int f=1;
 for(int i=1;i<=x;i++)
 f*=i;
 
 return f; 
}
Yandex
Объявления
22.04.2010, 04:14     вычислить сумму
Ответ Создать тему
Опции темы

Текущее время: 19:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru