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

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

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

Author24 — интернет-сервис помощи студентам
По заданию дано число 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
Ответ Создать тему
Новые блоги и статьи
Списки и кортежи в Python: различия, особенности, применение
py-thonny 13.04.2025
Python славится своей гибкостью при работе с данными. В арсенале языка есть две основные последовательные структуры данных, которые программисты используют ежедневно — списки и кортежи. Эти структуры. . .
Middleware в ASP.NET Core
UnmanagedCoder 13.04.2025
В ASP. NET Core термин "middleware" занимает особое место. Что же это такое? Middleware представляет собой программные компоненты, которые формируют конвейер обработки HTTP-запросов в приложении. . . .
Таблицы лута в Unity с MinMaxCurve и AnimationCurve
GameUnited 12.04.2025
Создание сбалансированного лута в играх — задача не из простых. Разработчики постоянно ищут способы настройки систем выпадения предметов, которые будут одновременно справедливыми для игроков и. . .
std::expected в C++: Управление ошибками
bytestream 12.04.2025
Обработка ошибок всегда была важной и одновременно сложной задачей в программировании на C++. На протяжении долгого времени разработчики использовали различные подходы: возвращаемые коды ошибок,. . .
Nullable типы и операторы объединения null в C#
UnmanagedCoder 12.04.2025
Многие шутят, что null — это миллиардная ошибка в программировании. И в этой шутке только доля шутки. Тони Хоар, создатель null-ссылки, сам назвал её своей "ошибкой на миллиард долларов". Почему?. . .
Аутентификация и авторизация JWT в микросервисах с API Gateway
stackOverflow 12.04.2025
В традиционных монолитных приложениях безопасность часто реализуется как единый защитный периметр - пользователь проходит аутентификацию один раз, после чего получает доступ ко всем функциям системы. . . .
TypeScript: Интерфейсы vs Типы
run.dev 11.04.2025
Современная разработка на JavaScript сталкивается с множеством проблем при масштабировании проектов. Типизация кода стала хорошим инструментом, помогающим избежать ошибок во время выполнения,. . .
Управление топиками и разделами Kafka
Javaican 11.04.2025
Apache Kafka — распределенная платформа потоковой передачи данных, которая стала стандартом для построения высоконагруженных систем обмена сообщениями. В современной архитектуре микросервисов,. . .
Миграция монолита в Event-Driven микросервисную архитектуру на C#
stackOverflow 11.04.2025
Монолитная архитектура – классический подход к разработке программного обеспечения. Это приложение, построенное как единое целое, где все компоненты тесно связаны между собой. Большинство проектов. . .
Go в Kubernetes: Управление ресурсами
golander 11.04.2025
Разработчики Go-приложений в Kubernetes часто сталкиваются с неожиданными проблемами производительности и даже внезапными отказами контейнеров. Причина этого кроется в особенностях взаимодействия. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер