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

синус и косинус Ряда Тейлора - C++

Восстановить пароль Регистрация
 
koektoshka
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 8
24.10.2013, 10:23     синус и косинус Ряда Тейлора #1
нужно задать диапазон до pi/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
44
45
46
47
48
49
50
51
52
53
54
55
56
#include <iostream>
#define _USE_MATH_DEFINES
#include <math.h>
using namespace std;
int main()
{
    int i,s;
    double z,n,x0,x,n2,y1,y2;
    cout.precision(18);
    cout<<"vvedite 4islo  ";
    cin>>x;
    x0=x;y2=0;y1=0;n=x;n2=1;s=0;z=0;
    if ((x<M_PI_2)&&(x>M_PI_4))
      {
          x=fmod(x,M_PI_4);
           n=1;n2=x;
    }
    else 
        {
            if ((x>M_PI_2)&&(x<M_PI))
            {
                x=fmod(x,M_PI_4);
                n=-x;n2=1;
            }
            else if((x>M_PI)&&(x<3*M_PI_2))
                {
                    x=fmod(x,M_PI_4);
                n=1;n2=x; 
            }
            else x=fmod(x,M_PI);
    }
    cout<<"\nzna4enie M_PI="<<M_PI;
    cout<<"\nzna4enie x="<<x;
    for (i=1;;i++)
    {
        y1+=n;
        y2+=n2;
        n*=-x*x/((2*i)*(2*i+1));
        n2*=-x*x/((2*i)*(2*i-1));
        s++;
        if ((y1==y1+n)&&(y2==y2+n2))
        break;
    }
    if ((x0>M_PI_2)&&(x0<M_PI))
        {
        z=y1;y1=y2;y2=z;
    }
       cout<<"     summ bilo  "<<s;
       cout<<"\nsin 4erez funkjiu="<<sin(x0);
       cout<<"\nsin 4erez pi formulu="<<y1;
       cout<<"\ncos 4erez funkjiu="<<cos(x0);
       cout<<"\ncos 4erez pi formulu="<<y2;
    cin.get();
    cin.get();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
24.10.2013, 11:03     синус и косинус Ряда Тейлора #2
Если ввожу число, большее единицы, например, 13, он x переводит в 0.433629.... но n и x0 остаются по прежнему 13, поэтому он синус считает неправильно. Если же изначально вводить 0.433629, то n и x0 становятся 0.433629 и синус считается правильно.
koektoshka
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 8
24.10.2013, 11:11  [ТС]     синус и косинус Ряда Тейлора #3
Программа сравнивает значения синуса Который по формуле Тейлора и синуса который считается функцией и разницы между приведенным значением и значением не приведенным быть по сути не должно т.к функция синуса сама выполняет все приведения
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
24.10.2013, 11:24     синус и косинус Ряда Тейлора #4
Ну дак оно и понятно. Только вот не работает.

Лечится следующей строкой, сразу после cin<<x;
C++
1
while(x>2*M_PI) x-=2*M_PI;
Миниатюры
синус и косинус Ряда Тейлора  
koektoshka
0 / 0 / 0
Регистрация: 24.10.2013
Сообщений: 8
24.10.2013, 11:48  [ТС]     синус и косинус Ряда Тейлора #5
Это решило часть проблем

Допустил для 7 и 8 радиан подсчет нормальный а вот 6 и 9 допустим криво
Yandex
Объявления
24.10.2013, 11:48     синус и косинус Ряда Тейлора
Ответ Создать тему
Опции темы

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