Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
48 / 53 / 20
Регистрация: 17.10.2010
Сообщений: 816
1

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

25.07.2012, 16:14. Просмотров 1531. Ответов 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
Эксперт С++
8292 / 6047 / 601
Регистрация: 10.12.2010
Сообщений: 28,133
Записей в блоге: 26
25.07.2012, 17:14 2
А в маткаде вычислить формулы и сверится ???
0
48 / 53 / 20
Регистрация: 17.10.2010
Сообщений: 816
25.07.2012, 17:20  [ТС] 3
Цитата Сообщение от Avazart Посмотреть сообщение
А в маткаде вычислить формулы и сверится ???
У меня его нет, нет и других математических программ поэтому и спрашиваю.
0
Модератор
Эксперт Python
26643 / 13895 / 2641
Регистрация: 12.02.2012
Сообщений: 22,778
Записей в блоге: 1
25.07.2012, 17:58 4
Рекуррентная формула верна. И совпадает с таковой для sin(x), что вполне очевидно, т.к. каждый член ряда просто делится на х (формула от этого не изменяется). Но есть и отличие - начальное значение. Для sin(x) это х, а для sin(x)/x это единица. И что тебя удивляет?
0
48 / 53 / 20
Регистрация: 17.10.2010
Сообщений: 816
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 - 2020, vBulletin Solutions, Inc.