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

Вычислить сумму n членов ряда Тейлора для косинуса - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 23, средняя оценка - 4.70
SKILHUNT
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 14
10.10.2012, 23:26     Вычислить сумму n членов ряда Тейлора для косинуса #1
По заданию дано число X, надо вычислить сумму n членов рада тейлора для косинуса и сравнить с результатом библиотечного косинуса. Получается, что x и n задаются пользователем. Я сделал наброски, но при вычислении у меня n приходится подбирать чтобы результаты совпали.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include<stdio.h>
#include<math.h>
int main()
{
double x,n,c,mx2 = -x*x,part=1,sum=1;
int i;
    for(;;){
    printf("Vvedite x:\n");
    scanf("%lf", &x);
    printf("Vvedite n:\n");
    scanf("%lf",&n);
    if(n<=0)break;
    for (i = 2; i < n; i+=2) {
        part *= mx2/((i-1)*i);
        sum += part;
    }
    c=cos(x);
    printf("cos(%lf) = %lf\n", x, sum); 
    printf("cos(%lf) = %lf\n", x, c);
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2012, 23:26     Вычислить сумму n членов ряда Тейлора для косинуса
Посмотрите здесь:

C++ Вычислить сумму членов бесконечного ряда с заданной степенью точности > 0 и заданного значения х
Составить программу для вычисления суммы данного ряда для указанного значения аргумента х, если известно количество N членов ряда. C++
Не используя стандартные функции (за исключением abs), вычислить сумму первых n членов ряда C++
C++ определить число членов ряда, необходимых для расчета с заданной погрешностью суммы членов ряда:
Подсчитать сумму членов ряда с точностью до 0.000001 и сумму первых 10 членов ряда C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SKILHUNT
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 14
12.10.2012, 18:34  [ТС]     Вычислить сумму n членов ряда Тейлора для косинуса #21
Итак в данный момент я добился, что в роли eps у меня выступает n, то должно = количеству членов ряда а не точности, мб подкините идею как сделать?
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
#include <stdafx.h> 
#include <stdio.h>
#include <math.h>
 
double Cos(double x, double n)
{
   int i;
   double p, rez; 
   i = 0;
   rez = p = 1;
   while(fabs(p) >= n)
   {
       i += 2;
       p *= -(x*x)/((i-1)*i);
       rez += p;
   }
   return rez;
}
 
int main()
{
    double x,n,i;
    for(;;){
    printf("Vvedite x:\n");
    scanf_s("%lf", &x);
    printf("Vvedite n:\n");
    scanf_s("%lf",&n);
    if(n<=0)break;
    printf("n=%lf\nS=%lf\ncos(%lf) = %lf\n", n, Cos(x,n), x, cos(x));
    }
    }
Добавлено через 1 час 41 минуту
надо чтобы n задавался в виде 1 2 3 4...10, те просто цифрой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
12.10.2012, 19:52     Вычислить сумму n членов ряда Тейлора для косинуса #22
Цитата Сообщение от SKILHUNT Посмотреть сообщение
Итак в данный момент я добился

Не по теме:

взяли без зазрения совести мою функцию Cos из
Вычислить сумму ряда с определённой точностью,
а переделать ее для определенного количества слагаемых не можете, эх...

SKILHUNT
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 14
12.10.2012, 19:56  [ТС]     Вычислить сумму n членов ряда Тейлора для косинуса #23
я эту штуку и до этого находил, просто подтер в итоге, и нашел уже вашу версию, у меня в самом начале еще до отписывания на форум была попытка с таким же вариантом, так и не смог сделать как надо
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
12.10.2012, 20:43     Вычислить сумму n членов ряда Тейлора для косинуса #24
посмотрите здесь оба варианта для экспоненты
exp(-40)
и сами попробуйте переделать для косинуса
SKILHUNT
0 / 0 / 0
Регистрация: 10.10.2012
Сообщений: 14
12.10.2012, 21:46  [ТС]     Вычислить сумму n членов ряда Тейлора для косинуса #25
Ура, спасибо все за помощь, удалось сделать как надо, спс за совет про Visual studio, действительно не сравнить с Dev-c++, в конце столкнулся с проблемой, что rez возвращал непонятное число, за счет пошагового выполнения проги нашел где крылась ошибка, и в итоге все заработало как надо.
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
#include <stdafx.h> 
#include <stdio.h>
#include <math.h>
 
long double Cos(double x, double n)
{
   int i;
   long double p, rez;
   i=2;
   rez = p = 1;
   for(i=2;i<=n;i+=2){
       p *= (-(x*x)/((i-1)*i));
       rez += p;
   }
   return rez;
}
 
int main()
{
    double x,n;
    for(;;){
    printf("Vvedite x:\n");
    scanf_s("%lf", &x);
    printf("Vvedite n:\n");
    scanf_s("%lf",&n);
    if(n<=0)break;
    printf("\nn=%lf\nS=%lf\ncos(%lf) = %lf\n", n, Cos(x,n), x, cos(x));
    }
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2012, 02:50     Вычислить сумму n членов ряда Тейлора для косинуса
Еще ссылки по теме:

вычислить сумму членов ряда с использованием рекуррентную формулу,дано натуральное и действительное число с вычислением C++
Вычислить сумму N членов ряда C++
C++ Вычислить сумму n членов заданного ряда

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

Или воспользуйтесь поиском по форуму:
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
13.10.2012, 02:50     Вычислить сумму n членов ряда Тейлора для косинуса #26
свою добавлю ещё
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
#include <stdio.h>
#include <locale.h>
#include <math.h>
 
int main(void)
{
    double x, eps, s, sl;
    long z;
    short k;
    char line[100];
    
    if (setlocale(LC_ALL, "C") == NULL)
        fprintf(stderr, "Failed to set locale!\n");
    printf("Программа вычисляет сумму ряда:\n"
           "cos(x) = 1 - (x ^ 2) / 2! + (x ^ 4) / 4! - (x ^ 6) / 6! + ...\n");
    fflush(stdout);
    do {
        do {
            printf("Введите x ");
            fflush(stdout);
        } while (fgets(line, sizeof line, stdin) == NULL
              || sscanf(line, "%lf", &x) != 1);
        do {
            printf("Введите точность > 0 ");
            fflush(stdout);
        } while (fgets(line, sizeof line, stdin) == NULL
              || sscanf(line, "%lf", &eps) != 1
              || eps <= 0);
        x = fmod(x, 2 * acos(-1));
        s = 0;
        sl = 1;
        for (z = 0; fabs(sl) >= eps; z += 2) {
            s += sl;
            sl *= -x * x / ((z + 1) * (z + 2));
        }
        for (k = 0; eps < 1; eps *= 10, k++)
            ;
        printf("Сумма = %.*f\n", k, s);
        printf("Контрольное значение: %f\n", cos(x));
    } while (getchar() != EOF);
    return 0;
}
Код
[guest@localhost c]$ .ansi -lm cos.c -o cos
[guest@localhost c]$ ./cos
Программа вычисляет сумму ряда:
cos(x) = 1 - (x ^ 2) / 2! + (x ^ 4) / 4! - (x ^ 6) / 6! + ...
Введите x 1.2
Введите точность > 0 0.0001
Сумма = 0.3624
Контрольное значение: 0.362358
[guest@localhost c]$
Yandex
Объявления
13.10.2012, 02:50     Вычислить сумму n членов ряда Тейлора для косинуса
Ответ Создать тему

Метки
cos
Опции темы

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