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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Kastaneda
Форумчанин
Эксперт С++
4470 / 2832 / 224
Регистрация: 12.12.2009
Сообщений: 7,202
Записей в блоге: 1
Завершенные тесты: 1
#1

Вычислить сумму ряда. Где-то напутал знаки или формула ряда не правильная. Посмотрите свежим взглядом. - C++

20.01.2012, 10:22. Просмотров 1701. Ответов 4
Метки нет (Все метки)

Привет!
Пишу простую контрольную, не могу понять, то ли я где-то со знаками туплю, то ли формула не корректна.
Задание:
написать функцию вычисления суммы ряда. для диапазона значений 0.1 .. 0.9 и шага 0.1 изменения аргумента вычислить значения суммы ряда и контрольной функции, к которой он сходится, с точностью до 4 знаков после запятой.
Ряд: sin(x) - sin(2x) / 2+..+(-1)*n * sin(nx) / n
Контрольная ф-ция: x / 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
26
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <cmath>
 
double series_sum(double, int = 1);
double chek_series_sum(double);
 
const double eps = 1E-4;
 
int main() 
{
    const double begin = 0.1, end = 0.9, step = 0.1;
    double calculated_sum, real_sum;
 
    for (double x = begin; x <= end; x += step) {
        calculated_sum = series_sum(x);
        real_sum = chek_series_sum(x);
        std::cout << "Calculated amount of series with x = " << x << ": " << calculated_sum << std::endl
                  << "Real value: " <<real_sum<<std::endl;
    }   
    return 0;
}
 
double series_sum(double x, int n)
{
    double step_val = pow(-1., n) * sin(n * x) / n;
    if (abs(step_val) <= eps) {
        return step_val;
    }
    return step_val + series_sum(x, ++n);
}
 
double chek_series_sum(double x)
{
    return x/2.;
}
Вывод:
Код
Calculated amount of series with x = 0.1: -0.0498659
Real value: 0.05
Calculated amount of series with x = 0.2: -0.100496
Real value: 0.1
Calculated amount of series with x = 0.3: -0.150405
Real value: 0.15
Calculated amount of series with x = 0.4: -0.200353
Real value: 0.2
Calculated amount of series with x = 0.5: -0.249524
Real value: 0.25
Calculated amount of series with x = 0.6: -0.298302
Real value: 0.3
Calculated amount of series with x = 0.7: -0.350978
Real value: 0.35
Calculated amount of series with x = 0.8: -0.398703
Real value: 0.4
Calculated amount of series with x = 0.9: -0.448706
Real value: 0.45
Т.е. считает правильно, только знаки не совпадают. Не могу увидеть проблему, посмотрите свежим взглядом.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.01.2012, 10:22     Вычислить сумму ряда. Где-то напутал знаки или формула ряда не правильная. Посмотрите свежим взглядом.
Посмотрите здесь:

Вычислить сумму ряда C++
Вычислить сумму ряда C++
Вычислить сумму ряда C++
C++ Дана формула. Необходимо сравнить левую и правую сумму ряда с шагом 0,01
C++ Вычислить сумму ряда
Вычислить сумму ряда y=x-(x)^3)/3!+(x)^5)/5!-(x)^7)/7! C++
Вычислить сумму ряда C++
Вычислить сумму ряда C++
C++ Посчитать сумму ряда, ограничивая число элементов ряда первым элементом, меньшим заданной величины
C++ Вычислить сумму ряда
Вычислить сумму ряда C++
C++ Вычислить сумму ряда

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
golatin
265 / 222 / 43
Регистрация: 12.10.2011
Сообщений: 323
Завершенные тесты: 1
20.01.2012, 11:03     Вычислить сумму ряда. Где-то напутал знаки или формула ряда не правильная. Посмотрите свежим взглядом. #2
Если это ряд Фурье
http://www.cyberforum.ru/cgi-bin/latex.cgi?x=\sum_{n=1}^{\propto }\frac{2}{n}{(-1)}^{n+1}sin(nx)
,то соответственно в 25 строчке измени pow(-1., n) на pow(-1., n+1)
Kastaneda
Форумчанин
Эксперт С++
4470 / 2832 / 224
Регистрация: 12.12.2009
Сообщений: 7,202
Записей в блоге: 1
Завершенные тесты: 1
20.01.2012, 11:13  [ТС]     Вычислить сумму ряда. Где-то напутал знаки или формула ряда не правильная. Посмотрите свежим взглядом. #3
golatin, спасибо) Я в первом посте неправильно ряд написал, там -1 в степени n, а не умножить на n. Все равно это дела не меняет, правильно так, как ты показал. Буду пинать препода)

Не по теме:

На сессии мозги закипают, подобных ошибок уже не вижу

silent_1991
Эксперт С++
4956 / 3032 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
20.01.2012, 11:39     Вычислить сумму ряда. Где-то напутал знаки или формула ряда не правильная. Посмотрите свежим взглядом. #4
Kastaneda, pow тут не очень разумно использовать, знак зависит только от чётности n.
Kastaneda
Форумчанин
Эксперт С++
4470 / 2832 / 224
Регистрация: 12.12.2009
Сообщений: 7,202
Записей в блоге: 1
Завершенные тесты: 1
20.01.2012, 13:45  [ТС]     Вычислить сумму ряда. Где-то напутал знаки или формула ряда не правильная. Посмотрите свежим взглядом. #5
Цитата Сообщение от silent_1991 Посмотреть сообщение
Kastaneda, pow тут не очень разумно использовать, знак зависит только от чётности n.
Да, логично) Последнее время вообще перестал думать, когда пишу. Расслабился что-то
Yandex
Объявления
20.01.2012, 13:45     Вычислить сумму ряда. Где-то напутал знаки или формула ряда не правильная. Посмотрите свежим взглядом.
Ответ Создать тему
Опции темы

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