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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Ruslanishe
25 / 9 / 1
Регистрация: 17.10.2010
Сообщений: 203
#1

Вычисление функций с использованием их разложения в степенной ряд - C++

15.09.2011, 07:50. Просмотров 1711. Ответов 9
Метки нет (Все метки)

Здраствуйте, форумчане!!! У меня такая задачка!!!!

Для х изменяющегося от a до b с шагом (b-a)/k, где (k=10), вычислить функцию f(x), используя ее разложение в степенной ряд в двух случаях:
а) для заданного n;
б) для заданной точности е (е=0.0001).

вот что у меня получилось:
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
#include <iostream.h>
#include <conio.h>
#include <math.h>
 
int main()
{
    
double x=0.1,f,m; 
double a=0.1,b=1;
double k=10;
double n=1;
double SN,SE;
double const eps=0.0001;
SN=0;
SE=0;
while (x<=b)
{
      while(n<=20)
      {
                  m=m*n;
                  SN+=cos(n*x)/m;
                  cout << "SN[" << n << "]=" << SN << endl;
                  n++;
                  }       
       while (SE<=eps)
       {
                  m=m*n;
                  SE+=cos(n*x)/m;
                  cout << "SE[" << n << "]=" << SE << endl;
                  n++; 
                  }         
                  
       f=exp(cos(x))*cos(sin(x));
       x+=(b-a)/k;
       cout << f << endl;
       
}
getch();
}
только цикл по SE считается неправильно(зацикливается)!!! и цикл по SN каждый раз считает по разному! В чём проблема не пойму!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.09.2011, 07:50     Вычисление функций с использованием их разложения в степенной ряд
Посмотрите здесь:

C++ Вычисление функций с использованием их разложения в степенной ряд
Вычисление функции с заданной точностью с использованием разложения в ряд C++
Вычисление функций с использованием их разложения в степенной ряд C++
Написать программу вычисляющую sin X по формуле разложения в степенной ряд C++
Вычисление функций с использованием их разложения в степенной ряд ощибки исправте пожалуйста C++
C++ Вычисление функций с использованием их разложения в степенной ряд
Вычислить функции с использованием их разложения в степенной ряд. Функции и Перегрузка функций C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Чистый
Автор FAQ
2692 / 1388 / 71
Регистрация: 08.09.2011
Сообщений: 3,714
Записей в блоге: 1
15.09.2011, 10:38     Вычисление функций с использованием их разложения в степенной ряд #2
а где у вас инициализация переменной m?
Thinker
Эксперт C++
4220 / 2194 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
15.09.2011, 12:24     Вычисление функций с использованием их разложения в степенной ряд #3
Ruslanishe, а какие функции вы в ряд раскладываете? И почему перед каждым внутренним while все переменные заново не инициализируете
Ruslanishe
25 / 9 / 1
Регистрация: 17.10.2010
Сообщений: 203
15.09.2011, 14:36  [ТС]     Вычисление функций с использованием их разложения в степенной ряд #4
Цитата Сообщение от Чистый Посмотреть сообщение
а где у вас инициализация переменной m?
C++
1
double x=0.1,f,m;
Ruslanishe
25 / 9 / 1
Регистрация: 17.10.2010
Сообщений: 203
15.09.2011, 14:42  [ТС]     Вычисление функций с использованием их разложения в степенной ряд #5
Цитата Сообщение от Thinker Посмотреть сообщение
Ruslanishe, а какие функции вы в ряд раскладываете?
Сорри забыл сразу поставить картинку!
Миниатюры
Вычисление функций с использованием их разложения в степенной ряд  
Ruslanishe
25 / 9 / 1
Регистрация: 17.10.2010
Сообщений: 203
15.09.2011, 14:48  [ТС]     Вычисление функций с использованием их разложения в степенной ряд #6
Цитата Сообщение от Thinker Посмотреть сообщение
И почему перед каждым внутренним while все переменные заново не инициализируете
т.е. перед каждым циклом while по SN и SE, надо их занулять?

Добавлено через 4 минуты
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
40
41
42
43
#include <iostream.h>
#include <conio.h>
#include <math.h>
 
int main()
{
    
double x=0.1,f,m=1; 
double a=0.1,b=1;
double k=10;
double n=1;
double SN,SE;
double const eps=0.0001;
SN=0;
SE=0;
while (x<=b)
{
      SN=0;
      m=1;
      while(n<=20)
      {
           m=m*n;
                  SN+=cos(n*x)/m;
                  cout << "SN[" << n << "]=" << SN << endl;
                  
                  n++;
                  }  
                  SE=0;     
      while (SE<=eps)
       {
                 m=m*n;
                 SE+=cos(n*x)/m;
                cout << "SE[" << n << "]=" << SE << endl;
                n++; 
                 }         
                  
       f=exp(cos(x))*cos(sin(x));
       x+=(b-a)/k;
       cout << f << endl;
       
}
getch();
}
вот вроде он SN считает правильно но вот SE нет!!!
Thinker
Эксперт C++
4220 / 2194 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
15.09.2011, 15:15     Вычисление функций с использованием их разложения в степенной ряд #7
Второй цикл:

C++
1
2
3
4
5
6
7
8
9
      SE=0;
      n = m = 1;     
      while (fabs(cos(n*x)/m) >= eps)
       {
                m=m*n;
                SE+=cos(n*x)/m;
                cout << "SE[" << n << "]=" << SE << endl;
                n++; 
       }
Ruslanishe
25 / 9 / 1
Регистрация: 17.10.2010
Сообщений: 203
15.09.2011, 16:06  [ТС]     Вычисление функций с использованием их разложения в степенной ряд #8
Цитата Сообщение от Thinker Посмотреть сообщение
while (fabs(cos(n*x)/m) >= eps)
Извините, а что такое fabs
Ruslanishe
25 / 9 / 1
Регистрация: 17.10.2010
Сообщений: 203
15.09.2011, 16:16  [ТС]     Вычисление функций с использованием их разложения в степенной ряд #9
и почему-то ответ не так даёт по идее f(x1) (x=0.1) должно быть равно SN но они не равны!! и ещё я решил пронумеровать :
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
40
41
42
43
44
45
#include <iostream.h>
#include <conio.h>
#include <math.h>
 
int main()
{
    
double x=0.1,f,m=1; 
double a=0.1,b=1;
double k=10;
double n=1;
double SN,SE;
double const eps=0.0001;
SN=0;
SE=0;
while (x<=b)
{
      SN=0;
      n=m=1;
      while(n<=20)
      {
           m=m*n;
                  SN+=cos(n*x)/m;
                  cout << "SN[" << n << "]=" << SN << endl;
                  
                  n++;
                  }  
                  SE=0;     
      SE=0;
      n = m = 1;     
      while (fabs(cos(n*x)/m) >= eps)
       {
                m=m*n;
                SE+=cos(n*x)/m;
                cout << "SE[" << n << "]=" << SE << endl;
                n++; 
       }        
                  
       f=exp(cos(x))*cos(sin(x));
       x+=(b-a)/k;
       cout << "f[x"<< n << "]=" << f << endl;
       
}
getch();
}
вот картинка результатов:
Миниатюры
Вычисление функций с использованием их разложения в степенной ряд  
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.09.2011, 16:25     Вычисление функций с использованием их разложения в степенной ряд
Еще ссылки по теме:

Вычисление функций с использованием их разложения в степенной ряд! C++
C++ "Вычисление функций с использованием их разложения в степенной ряд"
Вычисление функции с использованием их разложения в ряд C++
Вычисление функций разложением в степенной ряд C++
C++ Вычисление функций с использованием их разложения в степенной ряд

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт CЭксперт С++
6625 / 3816 / 500
Регистрация: 29.11.2010
Сообщений: 10,072
15.09.2011, 16:25     Вычисление функций с использованием их разложения в степенной ряд #10
Цитата Сообщение от Ruslanishe Посмотреть сообщение
Извините, а что такое fabs
То же самое, что и abs() , но работающее не только с числами типа int. (Модуль)
Yandex
Объявления
15.09.2011, 16:25     Вычисление функций с использованием их разложения в степенной ряд
Ответ Создать тему
Опции темы

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