Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.68/47: Рейтинг темы: голосов - 47, средняя оценка - 4.68
0 / 0 / 1
Регистрация: 10.10.2012
Сообщений: 14

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

10.10.2012, 23:26. Показов 9632. Ответов 25
Метки cos (Все метки)

Студворк — интернет-сервис помощи студентам
По заданию дано число 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);
}
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.10.2012, 23:26
Ответы с готовыми решениями:

Вычислить функцию и сумму членов соответствующего ряда Тейлора
Составление программ с помощью функций. Необходимо вычислить функцию и сумму членов соответствующего ряда. z=x, y=pi/2 - 4/pi(cosx +...

Вычислить сумму ряда Тейлора для ch(x)
Программирование итерационных процессов . Создать блок-схему и программу на языке Pascal Помогите!

Вычислить значение суммы бесконечного ряда с точностью 10-4 для x=0,70. Определить число членов ряда, вошедших в сумму
помогите плиз мозг уже закипел тему вообше не понял по си шарп

25
 Аватар для nullpointer
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
10.10.2012, 23:47
Я так думаю нужно что-то вроде этого

C
1
2
3
4
5
6
7
while (fabs(с - sum)>eps){
        
                      for (i = 2; i < n; i+=2) {
                           part *= mx2/((i-1)*i);
                           sum += part;
                      }
}
0
10 / 10 / 1
Регистрация: 02.10.2011
Сообщений: 69
10.10.2012, 23:47
Цитата Сообщение от SKILHUNT Посмотреть сообщение
C++
1
double x,n,c,mx2 = -x*x,part=1,sum=1;
что за -x*x? у меня как я стал запускать вашу программу выдало ошибку с ошибкой обращения к х
могу выложить похожую программу
0
0 / 0 / 1
Регистрация: 10.10.2012
Сообщений: 14
10.10.2012, 23:50  [ТС]
У меня все запускается, но работает не совсем корректно
0
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
10.10.2012, 23:54
Цитата Сообщение от SKILHUNT Посмотреть сообщение
double x,n,c,mx2 = -x*x,part=1,sum=1;
использование переменной х без инициализации
должна быть ошибка компиляции или предупреждение
1
10 / 10 / 1
Регистрация: 02.10.2011
Сообщений: 69
10.10.2012, 23:59
Цитата Сообщение от I.M. Посмотреть сообщение
использование переменной х без инициализации
должна быть ошибка компиляции или предупреждение
при запуски программы выдает ошибку
0
0 / 0 / 1
Регистрация: 10.10.2012
Сообщений: 14
11.10.2012, 00:00  [ТС]
Однако Dev-c++ никаких предупреждений не делает, а программа запускается
0
10 / 10 / 1
Регистрация: 02.10.2011
Сообщений: 69
11.10.2012, 00:02
Цитата Сообщение от SKILHUNT Посмотреть сообщение
Однако Dev-c++ никаких предупреждений не делает, а программа запускается
Советую использовать Visual Studio 2010/2012 есть экспресс версии бесплатные на сайте microsoft
1
0 / 0 / 1
Регистрация: 10.10.2012
Сообщений: 14
11.10.2012, 00:03  [ТС]
Цитата Сообщение от Dima249 Посмотреть сообщение
Советую использовать Visual Studio 2010/2012 есть экспресс версии бесплатные на сайте microsoft
Надо будет скачать, но всеже отелось бы довести до ума програмку
0
10 / 10 / 1
Регистрация: 02.10.2011
Сообщений: 69
11.10.2012, 00:25
Цитата Сообщение от SKILHUNT Посмотреть сообщение
Надо будет скачать, но всеже отелось бы довести до ума програмку
напишите формулу вашу пожалуйста
0
0 / 0 / 1
Регистрация: 10.10.2012
Сообщений: 14
11.10.2012, 00:30  [ТС]
Приложил фото с заданием, там формула есть
Миниатюры
Вычислить сумму n членов ряда Тейлора для косинуса  
0
10 / 10 / 1
Регистрация: 02.10.2011
Сообщений: 69
11.10.2012, 00:52
Цитата Сообщение от SKILHUNT Посмотреть сообщение
Приложил фото с заданием, там формула есть
вы не так указали формулу
там у меня когда я пробовал сделать вашу программу возникла проблема с факториалом, а так вот формула
C++
1
 part *=(pow(-1.0,i))*(pow(x,2*n)/(/*факториал*/));
0
0 / 0 / 1
Регистрация: 10.10.2012
Сообщений: 14
11.10.2012, 01:07  [ТС]
вообще с факториалом как я понял требуется его реализовать без factorial
0
 Аватар для I.M.
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
11.10.2012, 01:19
Цитата Сообщение от SKILHUNT Посмотреть сообщение
Однако Dev-c++ никаких предупреждений не делает, а программа запускается
Это не делает неправильный код правильным.
Использование переменной х должно быть после ее инициализации (после ввода значения с клавиатуры). Переносите вычисление
0
0 / 0 / 1
Регистрация: 10.10.2012
Сообщений: 14
11.10.2012, 15: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
#include<stdio.h>
#include<math.h>
int main()
{
    for(;;){
    double x,n,c,part=1,sum=1;
    int i;
    printf("Vvedite x:\n");
    scanf("%lf", &x);
    printf("Vvedite n:\n");
    scanf("%lf",&n);
    double mx2 = -x*x, fac;
    if(n<=0)break;
    for (i = 2; i < n; i+=2) {
        fac=i*(i-1);
        part *= mx2/fac;
        sum += part;
        }
    c=cos(x);
    printf("cos(%lf) = %lf\n", x, sum); 
    printf("cos(%lf) = %lf\n", x, c);
}
}
Ведь в моем случае от n зависит точность как я понял?

Добавлено через 1 час 15 минут
Кто может, покажите как надо, ато я чет вожусь, опыта нету, еще не до конца понимаю.

Добавлено через 11 часов 48 минут
В общем догнал я задание, надо в итоге чтобы выводилась сумма n членов ряда и косинус для сравнения, x и n задаются пользователем, но у меня всегда в итоге сумма выдает 1
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include<stdio.h>
#include<math.h>
    int main()
{
    double x,n,c,part=1,sum=1;
    int i;
    for(;;){
    printf("Vvedite x:\n");
    scanf("%lf", &x);
    printf("Vvedite n:\n");
    scanf("%d",&n);
    if(n<=0)break;
    for (i = 2; i < n; i+=2) {
        part *= ((pow(-1.0,i))*(pow(x,2*n)))/((2*i-1)*i);
        sum += part;
    }
    printf("S=%lf\ncos(%lf) = %lf\n", sum, x, cos(x));
}
}
0
 Аватар для nullpointer
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
11.10.2012, 16:08
Ну вообще я не вижу,что в задании написано n вводить с клавиатуры. Смысл этого задания как раз и состоит в том,чтобы программа автоматически рассчитывала сколько ей нужно членов ряда использовать,чтобы получилсь достаточно точное значение. Я вам уже писал,что нужно сделать. Вводите какую-нибудь эпсилон равную, например, 0.0001, и ставите условие выполнять вычисление до тех пор пока разность табличного косинуса(его значение у вас хранится в переменной с) и вычисленного вами значения больше этого эпсилон. Только тогда вам сначала надо табличный косинус посчитать, а уже после него цикл реализовывать.

Добавлено через 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
#include <stdio.h>
#include <conio.h>
#include <math.h>
void main ()
{
int n,a,d;
float eps,sl,sp,x;
n=0; a=10;
printf("vvedite argument x\n");
scanf("%f",&x);
sl=log(x);
printf("vvedite to4nost' Eps\n");
scanf("%f",&eps);
 
while (fabs(sl-sp)>eps){
        sp=0.0;
        for (n=0;n<a;n++){
                d=1;
                sp+=pow(x - 1, n + n + 1) / ((n + n + 1) * pow(x+1, n + n + 1));
        }   sp*=2;
        a++;
printf("\t#%d, log %f, summa %f\n",a-10,sl,sp);
}
_getch();
}
0
0 / 0 / 1
Регистрация: 10.10.2012
Сообщений: 14
11.10.2012, 16:36  [ТС]
с нас просто требуют, чтобы программа была зациклена и при введении n<=0 она выходила, поэтому я и думал, что n должно задаваться пользователем. Тобишь получается, что я должен вывести сколько n членов ряда в сумме=косинусу?
0
 Аватар для nullpointer
48 / 48 / 14
Регистрация: 30.03.2009
Сообщений: 523
11.10.2012, 16:57
Цитата Сообщение от SKILHUNT Посмотреть сообщение
Тобишь получается, что я должен вывести сколько n членов ряда в сумме=косинусу?
Исходя из того задания,что тут прикреплено программа сама должна посчитать сколько ей нужно членов ряда,чтобы его сумма равнялась косинусу. Другое дело,если вам преподаватель сказал самим вводить число членов ряда,но тогда и точность вычисления будет соответствующая,потому что может просто не хватить этих самых членов,чтобы их сумма равнялась косинусу,если вы введете их мало. А выводить количество этих члено или не выводить это уж ваше дело.
1
0 / 0 / 1
Регистрация: 10.10.2012
Сообщений: 14
12.10.2012, 14:55  [ТС]
спасиб за информацию, буду дальше ковырять

Добавлено через 3 часа 55 минут
блин, чет я на одном месте завтыкал, как (2*n)! расписать через for?

Добавлено через 17 часов 53 минуты
Никто не может подсказать такую мелочь? =(
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
12.10.2012, 15:16
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"
           "sin(x) = x - (x ^ 3) / 3! + (x ^ 5) / 5! - (x ^ 7) / 7! + ...\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 = x;
        for (z = 1; fabs(sl) >= eps; z++) {
            s += sl;
            sl = -sl * x * x / (2 * z * (2 * z + 1));
        }
        for (k = 0; eps < 1; eps *= 10, k++)
            ;
        printf("Сумма = %.*f\n", k, s);
        printf("Контрольное значение: %f\n", sin(x));
    } while (getchar() != EOF);
    return 0;
}
Code
1
2
3
4
5
6
7
8
[guest@localhost ex2_sin]$ ./sin
Программа вычисляет сумму ряда:
sin(x) = x - (x ^ 3) / 3! + (x ^ 5) / 5! - (x ^ 7) / 7! + ...
Введите x 1.5
Введите точность > 0 0.0001
Сумма = 0.9975
Контрольное значение: 0.997495
[guest@localhost ex2_sin]$
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.10.2012, 15:16
Помогаю со студенческими работами здесь

Вычислить сумму членов бесконечного ряда с точностью до члена ряда, меньшего заданного ξ для |z| ≤ 1
x=(z+2)^2/2! - (z+2)^3/3! - (z+2)^4/4!

Вычислить частичную сумму ряда Тейлора для cos(x)
Вычислить сумму бесконечного ряда с точностью до e=0.0001. Составить программу с использованием оператора цикла с постусловием. ...

Вычислить частичную сумму ряда Тейлора для sin(x)
Вычислить sin 0.4 с точностью е=10^-4,воспользовавшись разложением в ряд sin(x)=...

Вычислить частичную сумму ряда (Ряд Тейлора для arctg(x))
Дано действительное число Х. Вычислить ...

Найти сумму первых трех членов ряда Тейлора
Найти сумму первых трех членов ряда Тейлора для cos(kx) (k=0.1, x=3)


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru