Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
zss
Модератор
Эксперт С++
7368 / 6773 / 4285
Регистрация: 18.12.2011
Сообщений: 17,905
Завершенные тесты: 1
1

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

01.04.2014, 21:02. Просмотров 8866. Ответов 0
Метки нет (Все метки)

Вычисление функций разложением в ряд Тейлора.
Первым делом n-ый член ряда выражаем через (n-1)-ый.
Например такой ряд s=1+2x+3x^2+4x^3+...,
http://www.cyberforum.ru/cgi-bin/latex.cgi?{a}_{n}=n*{x}^{n-1}=\frac{{a}_{n-1}}{n-1}*x*n
Далее оформляем в виде функции
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// x - аргумент, значение функции которого надо вычислить
// epsilon - точность вычисления суммы
double MySum(double x,double epsilon)
{
    double s=0;// Тут копим сумму
    double an; // Тут храним N-ый член ряда
    int n;
    n=1; // начальное значение n
    an=1; // начальное значение an
    while(fabs(an)>epsilon) 
// Суммировать будем пока член ряда an не станет достаточно маленьким по модулю
    {
          s+=an; // суммируем очередной член ряда
          n++; // переходим к следующему члену 
          an*=x*n/(n-1); // пересчитываем a(n) через a(n-1)
    }
    return s; // получившаяся сумма
}
Вот еще разложение синуса и косинуса
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
double mycos(double x,double eps)
{
    double s,an;
    int n;
    n=0;
    an=1;
    s=0;
    while(fabs(an)>eps)
    {
         s+=an;
         n++;
         an*=-x*x/(2.*n-1.0)/(2.0*n); 
    }
    return s;
}
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+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
double my_ln (double x)
{
    const double eps=1e-6;
    const double lnln=M_LN2; //ln2
    int k=0;
    while(x>2.0)
    { 
        x/=2.0;
        k++;
    }
    x-=1.;
    double s=0;
    int n=1;
    double an=x;
    while (fabs(an)>eps)
    {
        s+=an;
        ++n;
        an*=-x*(n-1)/n;
    }
    s+=k*lnln;
    return s;
}
13
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2014, 21:02
Ответы с готовыми решениями:

Вычисление функций разложением в ряд Тейлора
Формулы надо переписывать! Редактор внизу страницы

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

Вычисление функций разложением в ряд Тейлора
В институте дали задание написать в С++ программу , которая выведет на экран...

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

Вычисление функций разложением в ряд Тейлора
Составить программу суммирования начальных членов бесконечного ряда, пока...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2014, 21:02

Вычисление функций cosh разложением в ряд Тейлора
Добрый день, у меня простая вроде бы задачка, но я не понимаю как 2 части...

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

Вычисление функции разложением в ряд Тейлора
Прошу помощи


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

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

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