0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 53
1

Поясните алгоритм вычисления синуса по ряду Тейлора

01.12.2015, 14:12. Показов 4589. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
void sinus1(int x1)
{
    float a, s1;
    a = x1; s1 = x1;
    for (int i = 1; i <= 15; i++)
    {
        a = -a*x1*x1 / (2 * i*(2 * i + 1));
        s1 += a;
    }
    cout<<"For the first value = "<<s1<<endl;
}
Вычисление синуса по ряду Тейлора, но почему здесь i<=15?
Поясните алгоритм вычисления синуса по ряду Тейлора

Может кто знает другой алгоритм?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2015, 14:12
Ответы с готовыми решениями:

Расчет синуса и косинуса по ряду Тейлора
помогите посчитать синус и косинус с помощью ряда Тейлора Как я понимаю синус и косинус это тип...

Написать формулу для синуса по ряду Тейлора не подключая библиотеку math
Нужно написать функцию для синуса используя его разложение в ряд Тейлора

Программа для вычисления синуса по ряду Маклорена
Добрый день всем. Нашел программу, которая вычисляет синус по ряду Маклорена, однако, если вводить...

Алгоритм вычисления логарифма без использования разложения в ряд Тейлора
Необходим алгоритм вычисления log a b, можем преобразовать как log e b / log e a Задача сводится к...

5
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
01.12.2015, 15:24 2
Просто автор кода таким нехитрым образом задал точность. Можете увеличить это значение и получить ответ с большей точностью. Вообще, точность обычно задаётся не так (проверяют разницу между соседними вычисленными значениями, и когда эта разница стала меньше некоторого допустимого предела, говорят, что достигнута нужная точность).
0
0 / 0 / 0
Регистрация: 14.10.2015
Сообщений: 53
01.12.2015, 21:44  [ТС] 3
А как задать с точностью 10 в -6?
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
02.12.2015, 07:41 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <cmath>
void sinus1(int x1)
{
    float a, s1, prev_a;
    a = x1; s1 = x1;
    for (int i = 1; std::fabs(prev_a - a) > 1e-6; i++)
    {
        prev_a = a;
        a = -a*x1*x1 / (2 * i*(2 * i + 1));
        s1 += a;
    }
    cout<<"For the first value = "<<s1<<endl;
}
0
Модератор
Эксперт С++
13496 / 10751 / 6406
Регистрация: 18.12.2011
Сообщений: 28,688
02.12.2015, 09:51 5
silent_1991, надо следить не за разницей соседних членов ряда, а за значением очередного члена ряда
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
double mysin(double x,double eps)
{
    double s,an;
    int n;
    n=1;
    an=x;
    s=0;
    while(fabs(an)>eps)
    {
         s+=an;
         n++;
         an*=-x*x/(2.*n-1.0)/(2.0*n-2.0); 
    }
    return s;
}
1
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
02.12.2015, 10:11 6
zss, согласен, забыл уже всю эту кухню. Сначала показалось, что логичнее следить за разницей, а теперь задействовал мозг и стало понятно, что если очередной член меньше эпсилона, то он ничего не добавит в результат с учётом заданной точности)
0
02.12.2015, 10:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.12.2015, 10:11
Помогаю со студенческими работами здесь

График по ряду Тейлора
Добрый вечер. Нужна помощь в построение графика по ряду Тейлора. Построение сетки я тут нашел:...

Функция по ряду Тейлора
Нужно вычислить и вывести на экран в виде таблицы значения функции F(x), на интервале от Хнач. до...

Задача по ряду Тейлора
Добрый день, нужно решить задачу по примеру. Задача: Вычислить и вывести на экран в виде таблицы...

Задача по ряду Тейлора
я все время работал в Basic и понятия не имею как пользоваться командами C++. прошу вас, помогите!...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru