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

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

08.09.2018, 20:59. Показов 2052. Ответов 4
Метки нет (Все метки)

Добрый всем вечер, пытался решить задачу, заданную на 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
#include <iostream>
#include <cstdlib>
using namespace std;
 
long double fact(int N)
{
    if (N < 0) 
        return 0; 
    if (N == 0) 
        return 1; 
    else 
        return N * fact(N - 1); 
}
 
int main() {
    double eps, x, current, last;
    int i = 1;
    cin >> eps >> x;
 
    current = 0; last = 0;
 
        while ((fabs(current) - fabs(last))>eps) {
            last = current;
            current += pow(x, i) / fact(i);
        }
 
        cout << current;
 
}
Изображения
 
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.09.2018, 20:59
Ответы с готовыми решениями:

Вычисление значения функции разложением в ряд Тейлора: ln(1 + x)
Дано вещественное число X (|X| &lt; 1) и целое число N &gt; 0. Написать функцию для вычисления суммы...

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

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

Вычисление значения функции разложением в ряд Тейлора
S (x)= x-x3/3!+x5/5-...+(-1)n*(x2n+1)/(2n+1)! Факториал пишется в виде функции.

4
Диссидент
Эксперт C
26961 / 16839 / 3702
Регистрация: 24.12.2010
Сообщений: 37,803
08.09.2018, 21:56 2
fanfuntik, не нужно никаких факториалов. И pow тоже. Надо просто понять, чем очередной член суммы отличается от предыдущего. И тогда получится что-то вроде
C++
1
2
3
4
5
6
7
8
double sum = 1;
double a = 1;
int i = 1
while(a >= eps) {
  sum += a;
  a *= x / i;
  i ++;
}
Прием, обсуждавшийся на форуме сотни раз.
1
1 / 0 / 1
Регистрация: 08.09.2018
Сообщений: 46
19.09.2018, 17:10  [ТС] 3
единственное уточнение, что модуль a тогда уж >=eps
или в первой строке while -цикла if a<0 a*=(-1);
Cпасибо большое!
0
1 / 0 / 1
Регистрация: 08.09.2018
Сообщений: 46
24.09.2018, 21:58  [ТС] 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main () {
    double eps, x,checkA;
    cin >> eps >> x;
 
    double sum = 0;
    double a = 1;
    int i=1;
    checkA=a;
        while (checkA>= eps) {
            sum+=a;
            a *=x/i;
            i++;
            if (a<0) checkA=a*(-1);
            else checkA=a;
 
        }
        cout << sum;
}
сдавал задачу. не прошло.
как можно обойтись без checkA и использования fabs?
Препод сказал как-то в while что-то надо написать, какое-то условие, чтобы модуль проверялся.
но я не очень шарю в с++ поэтому туплю.
Хелп!
0
466 / 123 / 61
Регистрация: 04.03.2015
Сообщений: 325
25.09.2018, 02:46 5
Лучший ответ Сообщение было отмечено fanfuntik как решение

Решение

Цитата Сообщение от fanfuntik Посмотреть сообщение
как можно обойтись без checkA и использования fabs?
Можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
using namespace std;
 
int main() {
    double eps, x;
    cin >> eps >> x;
 
    double sum = 0, a = 1;
    int i = 1;
    while (a >= eps || a <= -eps) {
        sum += a;
        a *= x / i;
        i++;
    }
    cout << sum;
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.09.2018, 02:46
Помогаю со студенческими работами здесь

Вычисление значения функции разложением в ряд Тейлора
Нужна хелпа . Не могу понять почему не пашет. #include &lt;stdio.h&gt; #include &lt;iostream&gt; #include...

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

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

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


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

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

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