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

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

Войти
Регистрация
Восстановить пароль
 
isaak
102 / 39 / 9
Регистрация: 17.10.2010
Сообщений: 656
#1

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

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

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

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

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

В итоге получается:
http://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;
}
Проверьте пожалуйста правильность данного кода?!?!?!?! Заранее огромное спасибо!!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2012, 16:14     Вычисление sin(x)/x
Посмотрите здесь:

вычисление sin - C++
Здравствуйте, подскажите как работает синус в си++ путаюсь получить угол треугольникак но не как , как в си записать sin(arg)=1/2; что...

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

Вычисление sin. Подкорректировать код. - C++
#include &quot;stdafx.h&quot; #include &quot;conio.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;iomanip&gt; using namespace std; const int...

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

Вычисление sin(x) разложением в ряд Тейлора - C++
как решить это чудовище пробовал так: #include&lt;iostream&gt; #include&lt;math.h&gt; using namespace std; double factorial(double n) { ...

Вычисление тригонометрических функции sin/cos - C++
как реализовать вычисление sin и cos в c++. так как я чайник в с++ и до меня не спервого раза доходит то что написано в книге. помогите...

Вычисление функции sin разложеием в ряд Тейлора - C++
Задача такая, вычислить с заданной точностью значение функции синуса, дана формула для описания синуса, sin(x) = x - x^3/3! + x^5/5! ... ...

Вычисление функции sin разложением в ряд Тейлора - C++
Добрые Люди! Помогите,пожалуйста! Задание: Определить, сколько слагаемых ряда Тейлора потребуется, чтобы вычислить значение функции sinx...

Найти сумму 1/sin(1)+1/(sin(1)+sin(2))+... - C++
Нужно найти сумму S=1/sin(1)+1/(sin(1)+sin(2))+1/(sin(1)+sin(2) ... +sin(n)) ПОЖАЛУЙСТА! ПОМОГИТЕ!

Вычислить выражение sin(sin(sin...(x))...) - C++
Вычислить y=sinsin...sinx, где количество повторений sin=n. #include &lt;iostream&gt; #include &lt;cmath&gt; using namespace std; int...

задачка S = sin X + sin X^2 + sin x^3 + sin X^4+…+sin X^n - C++
я как то писал уже на форуме эту тему, простите если повторяюсь! спасибо большое за помощь в задаче, но возниакает новый вопрос, правильно...

задача! S = sin X + sin X^2 + sin x^3 + sin X^4+…+sin X^n - C++
Может кто знает? Ребят? S = sin X + sin X^2 + sin x^3 + sin X^4+…+sin X^n вот тут что то нахимичил, но мне кажется не...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
Эксперт С++
7115 / 5292 / 273
Регистрация: 10.12.2010
Сообщений: 23,381
Записей в блоге: 17
25.07.2012, 17:14     Вычисление sin(x)/x #2
А в маткаде вычислить формулы и сверится ???
isaak
102 / 39 / 9
Регистрация: 17.10.2010
Сообщений: 656
25.07.2012, 17:20  [ТС]     Вычисление sin(x)/x #3
Цитата Сообщение от Avazart Посмотреть сообщение
А в маткаде вычислить формулы и сверится ???
У меня его нет, нет и других математических программ поэтому и спрашиваю.
Catstail
Модератор
22510 / 10915 / 1774
Регистрация: 12.02.2012
Сообщений: 18,061
25.07.2012, 17:58     Вычисление sin(x)/x #4
Рекуррентная формула верна. И совпадает с таковой для sin(x), что вполне очевидно, т.к. каждый член ряда просто делится на х (формула от этого не изменяется). Но есть и отличие - начальное значение. Для sin(x) это х, а для sin(x)/x это единица. И что тебя удивляет?
isaak
102 / 39 / 9
Регистрация: 17.10.2010
Сообщений: 656
25.07.2012, 21:50  [ТС]     Вычисление sin(x)/x #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;
}
Если не правильно, то меня поправьте
Yandex
Объявления
25.07.2012, 21:50     Вычисление sin(x)/x
Ответ Создать тему
Опции темы

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