Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 24.10.2023
Сообщений: 5

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

24.10.2023, 23:10. Показов 601. Ответов 2

Студворк — интернет-сервис помощи студентам
Здравствуйте! В лабораторной работе 1 курс по с++ есть следующее задание: Дана функция, заданная бесконечным рядом: f(x) = arth(x) = x + x^3/3 + x^5/5 +...+ = Σ (от n =0 до ∞) (x^2*n+1/(2*n+1)). Ее нужно протабулировать в N точках отрезка [A,B]. Если точки отрезка не принадлежат указанной в задании области сходимости ряда, выведите сообщение об этом. Значения функции вычисляются с точностью k. На вход поступают 4 числа: N, A, B, k.
Функцию нужно вычислить тремя способами, а результат вывести на экран в виде таблицы:
x f1(x) f2(x)
-0.5 0.753 0.753
Количество знаков после запятой должно соответствовать k.
Способы вычисления:
1. вызвать стандартную функцию, определенную в заголовочной файле <cmath>;
3. слагаемые надо вычислять эффективно, с помощью данных из прошлых шагов. Без использования вспомогательных функций.
Сами функции f(x) необходимо реализовать в виде отдельных функций double f (double x, double e)

Собственно, как-то быстренько написала прогу, но значения f1, f2, f3 получаются разные, хотя, как я поняла, должны быть одинаковыми. И еще f3 вообще не особо поняла, что нужно сделать, поэтому забила в чат gpt, но это не то чтобы увенчалось успехом. Подскажите, как исправить, срочняк!!)
Вот код:
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#include <iostream>
#include <cmath>
#include <iomanip>
 
using namespace std;
 
double f1(double x) 
{
    return atanh(x);
}
 
double f2(double x, double e) 
{
    double result = 0;
    double summa = x; // первое слагаемое равно x
    int N = 0;
 
    // вычисляем следующее слагаемое
    double cheslit = pow(x, 2 * N + 1); 
    double znamen = 2 * N + 1; 
    summa += cheslit / znamen;
    return summa;
}
 
 
double f3(double x, double e) {
    double sum = 0; // инициализируем сумму нулем
    double term = x; // первое слагаемое равно x
    int N = 1; // начинаем с первого слагаемого
    double x_squared = x * x; // вычисляем x^2
 
    while (abs(term) >= e) { // проверяем условие сходимости ряда
        sum += term; // добавляем текущее слагаемое к сумме
        term *= (x_squared) / (2 * N + 1); // вычисляем следующее слагаемое
        N++; // переходим к следующему слагаемому
        x_squared *= x * x; // обновляем значение x^2
    }
 
    return sum;
}
 
int main() 
{
    int N; // количество точек
    double A, B; // начало и конец отрезка
    int k; // точность
 
    cin >> N >> A >> B >> k;
    double step = (B - A) / (N - 1);
 
 
    cout << fixed << setprecision(k); // установка точности вывода
 
    cout << "x\tf1(x)\tf2(x)\tf3(x)" << endl; // заголовок таблицы
 
    for (int i = 0; i < N; i++)
    {
        double x = A + i*step;
        // проверка, принадлежит ли точка отрезку [A, B]
        if (x > A || x < B) 
        {
            cout << x << "\t" << f1(x) << "\t" << f2(x, pow(10, -k)) << "\t" << f3(x, pow(10, -k)) << endl; 
        }
        else {
            cout << x << "\t-\t-\t-" << endl;
        }
    }
 
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.10.2023, 23:10
Ответы с готовыми решениями:

Вывести таблицу значений функции заданной разложением в ряд Тейлора
Даны действительные числа x, ε (x≠0, ε &gt;0). Вычислить с -3, -4, -5, -6, точностью ε (ε =10, 10, 10, 10) сумма ряда и указать количество...

Вывести таблицу значений функции заданной разложением в ряд Тейлора
Здравствуйте. Переведите из Pascal в С++, пожалуйста. var     x0, xk, dx, e, x, a, s: real;     i: integer; begin    ...

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

2
Модератор
Эксперт С++
 Аватар для zss
13780 / 10973 / 6491
Регистрация: 18.12.2011
Сообщений: 29,259
25.10.2023, 06:52
f1(x) должно быть равно f3(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
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
double f1(double x)
{
    return log((1.+x)/(1.-x))*0.5;// atanh(x)
}
double f3(double x, double e) {
    double sum = 0; 
    double term = x; 
    int N = 0; 
    double x_squared = x * x;
    while (fabs(term) >= e) { 
        sum += term; 
        N++; 
        term *= x_squared / (2. * N + 1.); 
        x_squared *= x * x; 
    }
    return sum;
}
int main() 
{
    int N; // количество точек
    double A, B; // начало и конец отрезка
    double k=1e-6; // точность 1e-6
    cout<<"points:";
    cin >> N;
    cout<<"A(-1<A<1):";
    cin >> A;
    cout<<"B(A<B<1):";
    cin >> B;
    cin.get();
    double step = (B - A) / (N - 1);
    cout << fixed << setprecision(6); // установка точности вывода
    cout << "    x\t\ty=f3(x)\t\tatanh(x)" << endl; // заголовок таблицы
    for (int i = 0; i < N; i++)
    {
        double x = A + i*step;
        double y3=f3(x,k);
        cout << x << "\t" << y3<<'\t'<<f1(x) << endl; 
    }
    cin.get();
    return 0;
}
0
place status here
 Аватар для gunslinger
3190 / 2227 / 640
Регистрация: 20.07.2013
Сообщений: 6,026
25.10.2023, 07:39
Функция из условия, насколько я понял, это ареатангенс (https://ru.wikipedia.org/wiki/... ие_функции),
определен при |x| < 1 и его значение можно вычислить через формулу

https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{1}{2}\ln\left(\frac{1 + x}{1 - x}\right)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.10.2023, 07:39
Помогаю со студенческими работами здесь

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

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

Вывести таблицу значений функции заданной разложением в ряд Тейлора
Для x, изменяющегося в интервале от x0 до xk с шагом h, вычислить значения бесконечной суммы S(x) с точностью ε=0.00001 и функции...

Вывести таблицу значений функции заданной разложением в ряд Тейлора
Здравствуйте, нужна помощь с решением задания. Конкретно не могу понять, как записать функцию s(x). Пытался как-то преобразовать в...

Вывести таблицу значений функции заданной разложением в ряд Тейлора
Вывести таблицу значений функции заданной разложением в ряд Тейлора Создать программу в Трёх циклах ( while, do while, for ) С++


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru