Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
140 / 74 / 23
Регистрация: 17.10.2010
Сообщений: 928
1

Вычисление sin(x)/x

25.07.2012, 16:14. Показов 2201. Ответов 4
Метки нет (Все метки)

Доброго время суток. Написать программу вычисления sin(x)/x используя разложения в ряд:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{sin(x)}{x}=\sum_{0}^{infinity}\frac{{(-1)}^{n}*{x}^{2*n}}{(2*n+1)!}
Если не правильно, то поправьте меня для вывода рекуррентной формулы нужно взять отношение:

https://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{n}=\sum_{0}^{infinity}\frac{{(-1)}^{n}*{x}^{2*n}}{(2*n+1)!}

https://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{n-1}=\sum_{0}^{infinity}\frac{{(-1)}^{(n-1)}*{x}^{2*(n-1)}}{(2*n-1)}

В итоге получается:
https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{{a}_{n}}{{a}_{(n-1)}}=\frac{\sum_{0}^{infinity}\frac{{(-1)}^{n}*{x}^{(2*n)}}{(2*n+1)!}}{\sum_{0}^{infinity}\frac{{(-1)}^{(n-1)}*{x}^{2*(n-1)}}{(2*n-1)!}}=\frac{(-1)*{x}^{2}}{2*n*(2*n+1)}
Тогда получается как для вычисления sin(x), это правильно????
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
43
44
45
46
47
#include <cmath>
#include <iostream>
#include <cstdlib>
using namespace std;
 
double my_abs(double val)
{
    double ret = val;
    if(val < 0)
        ret *= -1;
    return ret;
}
 
double Taylor(double x, double e, long &n)
{
    double sum = 0;
    double an = 0;
    n = 1;
    do
    {
        sum += an;
        n   += 1;
        an *= (-1)*(x*x/(2.0*n*2*(n + 1)));
    }
    while(e <= my_abs(an));
    return sum;
    
}
 
int main()
{
    long n;
    double xn, xk, dx, e;
    cout<<"xn = ";cin>>xn;
    cout<<"xk = ";cin>>xk;
    cout<<"dx = ";cin>>dx;
    cout<<" e = ";cin>>e;
    cout<<"|  x  |  Sum  |   N   |\n";
    while(xn <= xk)
    {
        cout<<xn<<" | "<<Taylor(xn, e, n)<<" |  ";
        cout<<n<<endl;
        xn = xn + dx;
    }
    system("pause");
    return 0;
}
Проверьте пожалуйста правильность данного кода?!?!?!?! Заранее огромное спасибо!!!!
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.07.2012, 16:14
Ответы с готовыми решениями:

вычисление sin
Здравствуйте, подскажите как работает синус в си++ путаюсь получить угол треугольникак но не как ,...

Подскажите как написать в С++: Вывести «столбиком» значения sin 0,l, sin 0,2, ., sin l,l
Вот такое задание Вывести «столбиком» значения sin 0,l, sin 0,2, ..., sin l,l.

Рекурсивное вычисление x!-sin(x)
помогите пожалуйста написать программу s=x!-sin(x)

Цикл: Вычислить значение контрольной суммы sin(x)/1 + sin(2x)/2 + ... + sin(n*x)/n...
Задача вычислить значение контрольной суммы sin(x)/1 + sin(2x)/2 + ... + sin(n*x)/n Код получился...

4
Эксперт С++
8363 / 6100 / 611
Регистрация: 10.12.2010
Сообщений: 28,457
Записей в блоге: 31
25.07.2012, 17:14 2
А в маткаде вычислить формулы и сверится ???
0
140 / 74 / 23
Регистрация: 17.10.2010
Сообщений: 928
25.07.2012, 17:20  [ТС] 3
Цитата Сообщение от Avazart Посмотреть сообщение
А в маткаде вычислить формулы и сверится ???
У меня его нет, нет и других математических программ поэтому и спрашиваю.
0
Модератор
Эксперт Python
28767 / 15598 / 3095
Регистрация: 12.02.2012
Сообщений: 25,594
Записей в блоге: 4
25.07.2012, 17:58 4
Рекуррентная формула верна. И совпадает с таковой для sin(x), что вполне очевидно, т.к. каждый член ряда просто делится на х (формула от этого не изменяется). Но есть и отличие - начальное значение. Для sin(x) это х, а для sin(x)/x это единица. И что тебя удивляет?
0
140 / 74 / 23
Регистрация: 17.10.2010
Сообщений: 928
25.07.2012, 21:50  [ТС] 5
Спасибо за ответ Catstail тогда double sum = 0; double an = 1. Наверно правильный следующий код
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
43
44
45
46
47
#include <cmath>
#include <iostream>
#include <cstdlib>
using namespace std;
 
double my_abs(double val)
{
    double ret = val;
    if(val < 0)
        ret *= -1;
    return ret;
}
 
double Taylor(double x, double e, long &n)
{
    double sum = 0;
    double an = 1;
    n = 1;
    do
    {
        sum += an;
        n   += 1;
        an *= (-1)*(x*x/(2.0*n*2*(n + 1)));
    }
    while(e <= my_abs(an));
    return sum;
    
}
 
int main()
{
    long n;
    double xn, xk, dx, e;
    cout<<"xn = ";cin>>xn;
    cout<<"xk = ";cin>>xk;
    cout<<"dx = ";cin>>dx;
    cout<<" e = ";cin>>e;
    cout<<"|  x  |  Sum  |   N   |\n";
    while(xn <= xk)
    {
        cout<<xn<<" | "<<Taylor(xn, e, n)<<" |  ";
        cout<<n<<endl;
        xn = xn + dx;
    }
    system("pause");
    return 0;
}
Если не правильно, то меня поправьте
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.07.2012, 21:50

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Вычисление sin. Подкорректировать код.
#include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; #include...

Вычисление значений функции y = sin(x)/(x-5)
Используя, оператор цикла While написать программу для вычисления значений функции Y = Sinx/(x-5)...

Вычисление Sin(x) разложением в ряд
Для функций, представленных ниже бесконечными рядомами вычислить их приближённые значенния с...

Вычисление sin, cos, tg, ctg
хотел написать прогу для вычисления sin, cos, tg, ctg по градусной мере. но никак не получается...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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