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

ряды тейлора

11.03.2022, 04:10. Показов 321. Ответов 2
Метки нет (Все метки)

помогите пожалуйста с рядами рядом тейлора не могу понять почему выдает inf, в чем проблема толи в переполнении толи цикл много раз пробегается
рекурентная формула вот:
ряды тейлора

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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
#include <iostream>
#include <cmath>
#include <iomanip>
#include <locale>
#define M_E 2.718281
using namespace std;
 
double func_x(double x);
int f_precision(double eps);
double f_step(double x, double eps);
int task_1();
 
int main()
{
    setlocale(0, "");
 
    task_1();
 
    system("pause");
 
    return 0;
}
 
 
int Z;
 
double f_step(double x, double eps) {
    int n = 0;
    double an = 1;
    double res = 0;
    for (; fabs(an - an * (n + 1) * x / n) > eps; n++)
    {
        an = an * (n + 1) * x / n;
        res = res + an;
 
    }
    Z = n;
 
    return res;
}
 
 
double func_x(double x)
{
    return 1 / pow((1 - x), 2);
}
 
int f_precision(double eps)
{
    int n = 0;
 
    while (eps <= 1)
    {
        n++;
 
        eps *= 10;
    }
 
    return n;
}
double f(double x)
{
    return 1. / ((1 + x) * (1 + x));
}
int sum(double x, double eps, double* sum)
{
    *sum = 0;
    double p = 1;
    double q = 1;
    int k = 0;
    while (fabs(q) >= eps)
    {
        (*sum) += q;
        k++;
        p *= x;
        q = (k - 1.0) * p;
    }
    return k;
}
 
double fs(double a, double kn)
{
    double lastX = 0, x = a / 3;
    for (double n = 1; n < kn; n += 1)
    {
        lastX = x;
        x = (2 / 3.) * (lastX + (a / (2 * pow(lastX, 2))));
    }
    return lastX;
}
 
double f4(double n)
{
    double a, b, lastA, lastB, res;
    a = b = 1;
    res = a * b;
    for (int k = 2; k <= n; k++)
    {
        lastA = a;
        lastB = b;
        a = 0.5 * (sqrt(lastB) + 0.5 * lastA);
        b = 2 * pow(lastA, 2) + lastB;
        res += a * b;
    }
    return res;
}
 
double fact(double n)
{
    if (n < 0)
    {
        return 0;
    }
    else
        if (n == 0)
        {
            return 1;
        }
        else
        {
            return n * fact(n - 1);
        }
}
int task_1()
{
    int n = 0;
 
    double res = 0, xmin, xmax, dx, eps1 = 0.1, eps2 = 0.000001;
 
    cout << "Введите min x, при |x| < 1: ";
 
    cin >> xmin;
 
    cout << "Введите max x, при |x| < 1: ";
 
    cin >> xmax;
 
    if (abs(xmin) > 1)
    {
        cout << "Неверное значние min x :(" << endl;
 
        return 0;
    }
    else if (abs(xmax) > 1)
    {
        cout << "Неверное значние max x :(" << endl;
 
        return 0;
    }
 
    cout << "Введите шаг табуляции: ";
 
    cin >> dx;
 
    cout << fixed << setprecision(f_precision(eps2));
 
    cout << " | " << setw(15) << "x" << " | " << setw(15) << "f(x)" << " | " << setw(15) << "eps1" << " | " << setw(15) << "f1(x)" << " | " << setw(15) << "n1" << " | " << setw(15) << "eps2" << " | " << setw(15) << "f2(x)" << " | " << setw(15) << "n2" << " |\n\n";
 
    for (double x = xmin; x <= xmax; x += dx)
    {
        cout << " | " << setw(15) << x << " | " << setw(15) << func_x(x) << " | " << setw(15) << eps1 << " | " << setw(15) << f_step(x, eps1) << " | " << setw(15) << Z << " | " << setw(15) << eps2 << " | " << setw(15) << f_step(x, eps2) << " | " << setw(15) << Z << " |\n";
    }
    cout << "\nНахождение кубического корня\na = ";
 
    double a;
    cin >> a;
 
    cout << "Кубичекий корень числа a равен " << setprecision(20) << fs(a, 10) << endl << endl;
    int min;
    cout << "Нахождение минимального элемента\nn = ";
    cin >> n;
 
 
    cout << " _______________\n";
    cout << "| k|      result|\n";
 
    for (int k = 1; k <= n; k++)
    {
        res = pow(k, 3) * sin(n + k / n);
        cout << "|" << setw(2) << k;
        cout << "|" << setw(12) << setprecision(6) << res << "|\n";
        if ((k == 1) || (res < min)) min = res;
    }
 
    cout << "Минимальное: " << setprecision(6) << res << endl << endl;
    cout << "Сумма a1*b1 + ... an*bn\nn = ";
    cin >> n;
    cout << "Сумма равна " << f4(n) << endl << endl;
    double e, x;
    cout << "Введите точность в знаках после запятой > ";
    cin >> e;
 
    cout << setprecision(e);
 
    e = pow(10, -e);
 
    x = 1;
 
    while (abs(sin(x) / x - 1) > e)
    {
        x /= 2;
    }
 
    cout << "При x = " << x << " подходит под заданную точность\n";
    double nn = 1;
    double res4 = 1;
 
    while (abs(res4 - M_E) > e)
    {
        res4 = pow((1 + 1 / nn), nn);
        nn += 1;
    }
 
    cout << "При n = " << fixed << (int)nn - 1 << " подходит под заданную точность\n";
 
    system("pause");
 
    return 0;
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
11.03.2022, 04:10
Ответы с готовыми решениями:

Ряды Тейлора
#include &lt;windows.h&gt; #include &lt;iostream&gt; using namespace std; int main() {...

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

Ряды Тейлора
Еще раз всем здравствуйте. Помогите пожалуйста решить такую задачу: &quot;Составить программу...

Ряды Тейлора
Нужен код на С++ Который вычисляет и выводит на экран в виде таблицы значения функции, заданной с...

Ряды тейлора
Доброго времени суток. Подскажите пожалуйста, я не понимаю что от меня требуется в задаче, вот...

2
Эксперт CЭксперт С++
3454 / 2035 / 1112
Регистрация: 14.12.2018
Сообщений: 3,994
Записей в блоге: 1
11.03.2022, 08:32 2
ФЫ, вот:
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
#include <iostream>
double fRecur(double x, double eps)
{
    double u = 1.0, res = u;
    int k = 0;
    while (u < -eps || eps < u)
    {
        k++;
        u *= (k + 1) * x / k;
        res += u;
    }
    return res;
}
int main()
{
    double x;
    do
    {
        std::cout << "x = ";
        std::cin >> x;
    } while (x <= -1.0 || 1.0 <= x);
    double eps;
    std::cout << "eps = "; std::cin >> eps;
    std::cout << "f(" << x << ") = " << fRecur(x, eps);
    return 0;
}
Тест работы:
Код
x = 0.3
eps = 0.00001
f(0.3) = 2.04081
0
0 / 0 / 0
Регистрация: 11.02.2022
Сообщений: 2
11.03.2022, 20:45  [ТС] 3
Добавлено через 1 час 18 минут
А можете сделать так чтобы он выводил все в таблицу с eps=0.1 и eps=0.000001
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.03.2022, 20:45
Помогаю со студенческими работами здесь

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

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

с++ ряды тейлора
Помогите решить. Вроде что-то набросал, но что-то не идет #include&lt;iostream&gt; #include&lt;math.h&gt;...

Ряды тейлора для ln(x+1)
Добрый вечер:) Есть проблема:D Задание: Вычислить и вывести на экран в виде таблицы значения...

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

Вычислить функцию. Ряды Тейлора
Вычислить функцию при помощи разложения в ряд с заданной точностью \varepsilon=0,001....


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

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

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