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

Вычисление Sinx/x разложением в ряд - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.67
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
03.11.2010, 14:33     Вычисление Sinx/x разложением в ряд #1
Всем доброго время суток. Вторые сутки бьюсь, задали написать на C++ программу вычисление Sinx/x разложением в ряд:
Sinx/x = 1 – (x^2)/3! + (x^4)/5! + … = ∑((-1)^n * x^2n)/(2n+1)!

Я сделал по аналогии с разложением с Sinx в ряд: q *= (-1) * x* x /(2 * n)/(2 * n + 1),
для Sinx/x я написал: q *= (-1) * x /(2 * n)/(2 * n + 1), подскажите это правильно????
Вот сама программа, которая у меня получилась:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
const int N = 100;
int main() {
    double x, q, s = 0;
    int n;
    cout << "Enter x = ";
    cin >> x;
    q = x;
    for (n = 1; n <= N; n++) {
        s += q;
        q *= (-1) * x /(2 * n)/(2 * n + 1);}
    cout << "sin(" << x << ") = " << s << endl;
    return 0;
}
Заранее огромное спасибо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
03.11.2010, 14:40     Вычисление Sinx/x разложением в ряд #2
А что, посчитать на калькуляторе и сравнить результаты религия не позволяет?
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
03.11.2010, 14:50  [ТС]     Вычисление Sinx/x разложением в ряд #3
А при чем здесь религия

Добавлено через 1 минуту
Национальные признаки здесь не уместны
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
03.11.2010, 14:55     Вычисление Sinx/x разложением в ряд #4
Это такое выражение. Означает, что прежде, чем бежать за помощью во все доступные места, не мешало бы самому додуматься сделать то, что указывается перед "... религия не позволяет?"

Добавлено через 56 секунд
Ещё вариант:
"А что, X уже не модно?"

Добавлено через 3 минуты
Используется это всё в тех случаях, когда спрашиваются очевидные вещи. В вашем случае: вы загрузили браузер, подождали, пока прогрузится форум, долго печатали сообщение и копировали код. Да ещё и теряли время, ожидая ответа. А могли бы запустить калькулятор, ввести желаемый икс, нажать кнопочку "sin", затем "/", а затем снова ввести желаемый икс. Посмотреть на результат в калькуляторе и результат работы программы. И вопрос, правильно вы сделали или нет, отпал бы сам собой.
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
03.11.2010, 14:56  [ТС]     Вычисление Sinx/x разложением в ряд #5
Что подразумевается под Х

Добавлено через 1 минуту
Не приличное слово из трех букв????
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
03.11.2010, 15:10     Вычисление Sinx/x разложением в ряд #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <string>
 
int main()
{
    std::string X = "самостоятельно пользоваться калькулятором";
 
    setlocale(LC_ALL, "Rus");
 
    std::cout << "А что, " << X << " уже не модно?";
 
    std::cin.get();
    return 0;
}
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
03.11.2010, 15:20  [ТС]     Вычисление Sinx/x разложением в ряд #7
silent_1991 если такой крутой программист, что тогда делаешь в разделе для начинающих, или вся твоя крутость и заключается в осмеивании новичков, задевая их национальную принадлежность, на большее у тебя мозгов не хватает
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
03.11.2010, 15:27     Вычисление Sinx/x разложением в ряд #8
Во-первых - это шутка, во-вторых, подобная реакция обычно означает, что "рыльце-то в пушку", а в-третьих, я предложил вам самый простой вариант решения - проверить результат самостоятельно. Новичок - понятие растяжимое. Ваш вопрос к программированию никакого отношения не имеет, к языку - тем более.
Чтобы у вас не возникло иллюзий по поводу моей причастности к расистам, антисемитам и прочей лабуде - http://www.google.ru/search?hl=ru&so...=&oq=&gs_rfai= - скажем, вторая ссылка.
KpeHDeJIb
 Аватар для KpeHDeJIb
56 / 56 / 3
Регистрация: 31.10.2010
Сообщений: 103
03.11.2010, 16:17     Вычисление Sinx/x разложением в ряд #9
Это кстати неверный подход, ряд Тейлора для функции будет другой.

Добавлено через 13 минут
Нет, наврал, ряд правильный.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
03.11.2010, 16:19     Вычисление Sinx/x разложением в ряд #10
Точно? Разве sin(x) / x не равно ряд_для_синуса / x?

Добавлено через 19 секунд
Чёрт подери, вы меня на пару секунд опередили)))
isaak
101 / 38 / 9
Регистрация: 17.10.2010
Сообщений: 634
03.11.2010, 16:20  [ТС]     Вычисление Sinx/x разложением в ряд #11
KpeHDeJIb а какой как правильно будет вычисление:

Sinx/x = 1 – (x^2)/3! + (x^4)/5! + … = ∑((-1)^n * x^2n)/(2n+1)!

Я просто взял по аналогии с Sinx, как правильно вторые сутки бьюсь
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
03.11.2010, 16:31     Вычисление Sinx/x разложением в ряд #12
У вас общий член не правильный, должен быть такой:
q *= (-1) * x * x/((2 * n) * (2 * n + 1));

Добавлено через 36 секунд
А, и начинать надо с 1, а не с x (до цикла присвоить q 1)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2010, 16:58     Вычисление Sinx/x разложением в ряд
Еще ссылки по теме:

C++ Вычисление значения функции разложением в ряд
C++ Вычисление функции разложением в ряд Тейлора
C++ Вычисление функций разложением в ряд

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

Или воспользуйтесь поиском по форуму:
KpeHDeJIb
 Аватар для KpeHDeJIb
56 / 56 / 3
Регистрация: 31.10.2010
Сообщений: 103
03.11.2010, 16:58     Вычисление Sinx/x разложением в ряд #13
Цитата Сообщение от isaak Посмотреть сообщение
KpeHDeJIb а какой как правильно будет вычисление:

Sinx/x = 1 – (x^2)/3! + (x^4)/5! + … = ∑((-1)^n * x^2n)/(2n+1)!

Я просто взял по аналогии с Sinx, как правильно вторые сутки бьюсь
Нет нет, все правильно, это я ошибся, посмотрел на ваш ряд sin(x) и подумал что это уже для sin(x)/x.

В любом случае по этому ряду вычисление будет такое:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
double factorial(unsigned n)
{
    double result = 1.0;
 
    while (n > 1)
        result *= (double)n--;
 
    return result;
}
 
double calc_sinx_x(double x, unsigned iterations)
{
    double result = 0.0f;
 
    for (unsigned n = 0; n < iterations; ++n)
        result += pow(x, 2.0 * n) * (-(n % 2)) / factorial(2 * n + 1);
 
    return result;
}
Yandex
Объявления
03.11.2010, 16:58     Вычисление Sinx/x разложением в ряд
Ответ Создать тему
Опции темы

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