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

Модифицированный метод Эйлера для решения системы дифференциальных уравнений

26.11.2019, 13:57. Показов 12898. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
реализовала модифицированный метод Эйлера для одного уравнения, подскажите пожалуйста, как его переделать для системы из 3-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
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
#include "pch.h"
#include <iostream>
#include <cmath>
 
using namespace std;
 
// рассмотрим дифференциальное уравнение
// для заданных x и y возвращаем v
double diff_1(double x, double y) {
    double v = y - 2 * x * x + 1;
    return v;
}
 
// предсказывает следующее значение для данного (x, y)
// и размер шага h с использованием метода Эйлера
double predict(double x, double y, double h) {
    // возвращается значение следующего y (прогнозируемого)
    double y1p = y + h * dif1(x, y);
    return y1p;
}
 
// исправляет прогнозируемое значение
// используя модифицированный метод Эйлера 
double correct(double x, double y, double x1, double y1, double h) {
    // (x, y) предыдущего шага
    // и x1 - увеличенный x для следующего шага
    // и у1 прогнозируется у для следующего шага
    double e = 0.00001;
    double y1c = y1;
 
    do {
        y1 = y1c;
        y1c = y + 0.5 * h * (diff_1(x, y) + diff_1(x1, y1));
    } while (fabs(y1c - y1) > e);
 
 
    // каждая итерация корректирует значение y, 
    // используя среднее отклонение
    return y1c;
}
 
void printFinalValues(double x, double xn, double y, double h) {
 
    while (x < xn) {
        double x1 = x + h;
        double y1p = predict(x, y, h);
        double y1c = correct(x, y, x1, y1p, h);
        x = x1;
        y = y1c;
    }
 
    // на каждой итерации сначала сначала прогнозируется
    //значение следующего шага, а затем корректируется.
    cout << "The final value of y at x = "
        << x << " is : " << y << endl;
}
 
int main() {
    // здесь x и y являются начальными
    // заданное условие, поэтому x = 0 и y = 0.5
    double x = 0, y = 0.5;
 
    // конечное значение х, для которого требуется у
    double xn = 1;
 
    // размер шага
    double h = 0.2;
 
    printFinalValues(x, xn, y, h);
 
    return 0;
}
Добавлено через 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
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
// C ++ код для решения дифференциального уравнения с 
// использованием метода Предиктора - Корректора или 
// Модифицированного - Эйлера с заданными условиями, y(0) = 0, 5, 
// размер шага(h) = 0, 2, чтобы найти y(1)
 
#include "pch.h"
#include <iostream>
#include <cmath>
 
using namespace std;
 
#define N 4
 
// рассмотрим дифференциальное уравнение
// для заданных x и y возвращаем v
 
double dif1(double y0, double y1, double y2, double y3, double t, double alpha, double I) {
    return 8.85*10e6 - y2 * y1 * (0.2 - y0) / (1. - y1) + y0 / 10e-8;
}
 
double dif2(double y0, double y1, double y2, double y3, double t, double alpha, double I) {
    return y0 * y2;
}
 
double dif3(double y0, double y1, double y2, double y3, double t, double alpha, double I) {
    return y0 * y3;
}
 
double dif4(double y0, double y1, double y2, double y3, double t, double alpha, double I) {
    return I * (sqrt(y0))*exp((-alpha) / y0);
}
 
// предсказывает следующее значение для данного (x, y)
// и размер шага h с использованием метода Эйлера
 
double predict0(double y0, double y1, double y2, double y3, double t, double alpha, double I) {
    // возвращается значение следующего y0 (прогнозируемого)
    double y0p = y0 + t * dif1(y0, y1, y2, y3, t, alpha, I);
    return y0p;
}
 
double predict1(double y0, double y1, double y2, double y3, double t, double alpha, double I) {
    // возвращается значение следующего y1 (прогнозируемого)
    double y1p = y1 + t * dif1(y0, y1, y2, y3, t, alpha, I);
    return y1p;
}
 
double predict2(double y0, double y1, double y2, double y3, double t, double alpha, double I) {
    // возвращается значение следующего y (прогнозируемого)
    double y2p = y2 + t * dif1(y0, y1, y2, y3, t, alpha, I);
    return y2p;
}
 
double predict3(double y0, double y1, double y2, double y3, double t, double alpha, double I) {
    // возвращается значение следующего y (прогнозируемого)
    double y3p = y3 + t * dif1(y0, y1, y2, y3, t, alpha, I);
    return y3p;
}
 
// исправляет прогнозируемое значение
// используя модифицированный метод Эйлера 
 
double correct_y0(double y0, double y1, double y2, double y3, double y_0, double y_1, double y_2, double y_3, double t, double alpha, double I) {
    double e = 0.00001;
    double y0c = y_0, y1c = y_1, y2c = y_2, y3c = y_3;
    do {
        y_0 = y0c;
        y0c = y0 + 0.5 * t * (dif1(y0, y1, y2, y3, t, alpha, I) + dif1(y_0, y_1, y_2, y_3, t, alpha, I));
    } while (fabs(y0c - y_0) > e);
 
    return y0c;
}
 
double correct_y1(double y0, double y1, double y2, double y3, double y_0, double y_1, double y_2, double y_3, double t, double alpha, double I) {
    double e = 0.00001;
    double y0c = y_0, y1c = y_1, y2c = y_2, y3c = y_3;
    do {
        y_1 = y1c;
        y1c = y1 + 0.5 * t * (dif2(y0, y1, y2, y3, t, alpha, I) + dif2(y_0, y_1, y_2, y_3, t, alpha, I));
    } while (fabs(y1c - y_1) > e);
 
    return y1c;
}
 
double correct_y2(double y0, double y1, double y2, double y3, double y_0, double y_1, double y_2, double y_3, double t, double alpha, double I) {
    double e = 0.00001;
    double y0c = y_0, y1c = y_1, y2c = y_2, y3c = y_3;
    do {
        y_2 = y2c;
        y2c = y2 + 0.5 * t * (dif3(y0, y1, y2, y3, t, alpha, I) + dif3(y_0, y_1, y_2, y_3, t, alpha, I));
    } while (fabs(y2c - y_2) > e);
 
    return y2c;
}
 
double correct_y3(double y0, double y1, double y2, double y3, double y_0, double y_1, double y_2, double y_3, double t, double alpha, double I) {
    double e = 0.00001;
    double y0c = y_0, y1c = y_1, y2c = y_2, y3c = y_3;
    do {
        y_3 = y3c;
        y3c = y3 + 0.5 * t * (dif4(y0, y1, y2, y3, t, alpha, I) + dif4(y_0, y_1, y_2, y_3, t, alpha, I));
    } while (fabs(y3c - y_3) > e);
 
    return y3c;
}
 
 
void printFinalValues(double y0, double y1, double y2, double y3, double y_0, double y_1, double y_2, double y_3, double t, double t_max, double alpha, double I) {
    double h = 10e-8;
    double t1 = t;
    while (t < t_max) {
        double y0p = predict0(y0, y1, y2, y3, t1, alpha, I);
        double y0c = correct_y0(y0, y1, y2, y3, y0p, y_1, y_2, y_3, t1, alpha, I);
        y0 = y0c;
        t1 = t + h;
    }
    while (t < t_max) {
        double y0p = predict0(y0, y1, y2, y3, t1, alpha, I);
        double y0c = correct_y0(y0, y1, y2, y3, y0p, y_1, y_2, y_3, t1, alpha, I);
        y0 = y0c;
 
        double y1p = predict1(y0, y1, y2, y3, t1, alpha, I);
        double y1c = correct_y1(y0, y1, y2, y3, y_0, y1p, y_2, y_3, t1, alpha, I);
        y1 = y1c;
 
        double y2p = predict2(y0, y1, y2, y3, t1, alpha, I);
        double y2c = correct_y2(y0, y1, y2, y3, y_0, y_1, y2p, y_3, t1, alpha, I);
        y2 = y2c;
 
        double y3p = predict3(y0, y1, y2, y3, t1, alpha, I);
        double y3c = correct_y3(y0, y1, y2, y3, y_0, y_1, y_2, y3p, t1, alpha, I);
        y3 = y3c;
 
        cout << "The final value of y at x = "
            << t1 << " is : " << y0 << " " << y1 << " " << y2 << " " << y3 << " " << endl;
        
        t1 = t + h;
    }
 
    /*// на каждой итерации сначала сначала прогнозируется
    //значение следующего шага, а затем корректируется.
    cout << "The final value of y at x = "
        << t << " is : " << y0 << " " << y1 << " " << y2 << " " << y3 << " " << endl;*/
}
 
int main() {
    // здесь x и y являются начальными
    // заданное условие, поэтому x = 0 и y = 0.5
    double x = 0, y = 0.5;
    double y0 = 1e-10, y1 = 0, y2 = 0, y3 = 0;
    double y_0, y_1, y_2, y_3;
    // конечное значение х, для которого требуется у
    double t_max = 1;
 
    // размер шага
    double t = 10e-8;
 
    printFinalValues(y0, y1, y2, y3, y_0, y_1, y_2, y_3, t, t_max, 0.25, 1e30);
 
    return 0;
}
помогите пожалуйста?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.11.2019, 13:57
Ответы с готовыми решениями:

Метод Рунге-Кутта 4 порядка для решения системы дифференциальных уравнений
Имеется код программы, но по не очевидным для меня причинам работает не корректно, во время отладки выдает сообщения типа : Run-Time...

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

Решение системы дифференциальных уравнений методом Эйлера
В интернете нашел похожий код, но для 1 уравнения, может кто помочь сделать для 2? Тоесть для системы #include &quot;stdafx.h&quot; ...

9
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 4
26.11.2019, 23:09  [ТС]
помогите пожалуйста
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
26.11.2019, 23:19
https://www.geeksforgeeks.org/... -equation/
всё внаглую содрано с этого сайта.
Такая школьная задачка и всё равно скопирована. Не удивительно, что если даже автор не хочет прилагать усилия - никто не будет тоже.

Добавлено через 4 минуты
Цитата Сообщение от doris_19 Посмотреть сообщение
реализовала модифицированный метод Эйлера для одного уравнения, подскажите пожалуйста, как его переделать для системы из 3-4 уравнений
ты ничего не реализовывал. А где 3-4 уравнения, для которых решать систему?
0
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 4
26.11.2019, 23:44  [ТС]
Kuzia domovenok,
вот то, что последнее было сделано мной, но я не пойму где я допустила ошибку
а 4 уравнения записаны в виде df1, df2, df3, df4
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
#include "pch.h"
#include <iostream>
#include <cmath>
 
using namespace std;
 
// рассмотрим дифференциальное уравнение
// для заданных x и y возвращаем v
 
double df1(double y0, double y1, double y2, double y3) {
    return 8.85*10e6 - y2 * y0 * (0.2 - y0) / (1. - y1) + y0 / 10e-8;
}
double df2(double y0, double y1, double y2, double y3) {
    return y0 * y2;
}
double df3(double y0, double y1, double y2, double y3) {
    return y0 * y3;
}
double df4(double y0, double y1, double y2, double y3) {
    return 1e30 * (sqrt(y0))*exp((-0.25) / y0);
}
// предсказывает следующее значение для данного (x, y)
// и размер шага h с использованием метода Эйлера
double predict_y0(double y0, double y1, double y2, double y3, double h) {
    // вычисляет значение следующего y (прогнозируемого)
    double y0p = y0 + h * df1(y0, y1, y2, y3);
    return y0p;
}
 
double predict_y1(double y0, double y1, double y2, double y3, double h) {
    // вычисляет значение следующего y (прогнозируемого)
    double y1p = y1 + h * df2(y0, y1, y2, y3);
    return y1p;
}
double predict_y2(double y0, double y1, double y2, double y3, double h) {
    // вычисляет значение следующего y (прогнозируемого)
    double y2p = y2 + h * df3(y0, y1, y2, y3);
    return y2p;
}
double predict_y3(double y0, double y1, double y2, double y3, double h) {
    // вычисляет значение следующего y (прогнозируемого)
    double y3p = y3 + h * df4(y0, y1, y2, y3);
    return y3p;
}
 
// исправляет прогнозируемое значение
// используя модифицированный метод Эйлера 
double correct_y0(double y0, double y1, double y2, double y3, double h, double y_0, double y_1, double y_2, double y_3, double t) {
    // (x, y) предыдущего шага
    // и x1 - увеличенный x для следующего шага
    // и у1 прогнозируется у для следующего шага
    double e = 0.00001;
    double y0c = y_0;
 
    do {
        y_0 = y0c;
        y0c = y0 + 0.5 * h * (df1(y0, y1, y2, y3) + df1(y_0, y_1, y_2, y_3));
    } while (fabs(y0c - y_0) > e);
    
    // каждая итерация корректирует значение y, 
    // используя среднее отклонение
    return y0c;
}
double correct_y1(double y0, double y1, double y2, double y3, double h, double y_0, double y_1, double y_2, double y_3, double t) {
    // (x, y) предыдущего шага
    // и x1 - увеличенный x для следующего шага
    // и у1 прогнозируется у для следующего шага
    double e = 0.00001;
    double y1c = y_1;
 
    do {
        y_1 = y1c;
        y1c = y1 + 0.5 * h * (df2(y0, y1, y2, y3) + df2(y_0, y_1, y_2, y_3));
    } while (fabs(y1c - y_1) > e);
 
    // каждая итерация корректирует значение y, 
    // используя среднее отклонение
    return y1c;
}
double correct_y2(double y0, double y1, double y2, double y3, double h, double y_0, double y_1, double y_2, double y_3, double t) {
    // (x, y) предыдущего шага
    // и x1 - увеличенный x для следующего шага
    // и у1 прогнозируется у для следующего шага
    double e = 0.00001;
    double y2c = y_2;
 
    do {
        y_2 = y2c;
        y2c = y2 + 0.5 * h * (df3(y0, y1, y2, y3) + df3(y_0, y_1, y_2, y_3));
    } while (fabs(y2c - y_2) > e);
 
 
    // каждая итерация корректирует значение y, 
    // используя среднее отклонение
    return y2c;
}
double correct_y3(double y0, double y1, double y2, double y3, double h, double y_0, double y_1, double y_2, double y_3, double t) {
    // (x, y) предыдущего шага
    // и x1 - увеличенный x для следующего шага
    // и у1 прогнозируется у для следующего шага
    double e = 0.00001;
    double y3c = y_3;
 
    do {
        y_3 = y3c;
        y3c = y3 + 0.5 * h * (df4(y0, y1, y2, y3) + df4(y_0, y_1, y_2, y_3));
    } while (fabs(y3c - y_3) > e);
 
    // каждая итерация корректирует значение y, 
    // используя среднее отклонение
    return y3c;
}
 
void printFinalValues(double y0, double y1, double y2, double y3, double h, double t_beg, double t_end) {
 
    cout << "\nt " << " y0 " << " y1 " << " y2 " << " y3 " << endl;
    while (t_beg < t_end) {
        double t = t_beg + h;
        double y0p = predict_y0(y0, y1, y2, y3, h);
        double y1p = predict_y1(y0, y1, y2, y3, h);
        double y2p = predict_y2(y0, y1, y2, y3, h);
        double y3p = predict_y3(y0, y1, y2, y3, h);
        double y0c = correct_y0(y0, y1, y2, y3, h, y0p, y1p, y2p, y3p, t);
        double y1c = correct_y1(y0, y1, y2, y3, h, y0p, y1p, y2p, y3p, t);
        double y2c = correct_y2(y0, y1, y2, y3, h, y0p, y1p, y2p, y3p, t);
        double y3c = correct_y3(y0, y1, y2, y3, h, y0p, y1p, y2p, y3p, t);
        t_beg = t;
 
        y0 = y0c;   y1 = y1c;   y2 = y2c;   y3 = y3c;
        
        cout << "\n" << y0 << " " << y1 << " " << y2 << " " << y3 << endl;
    }
}
 
int main() {
    double y0 = 10e-10, y1 = 0, y2 = 0, y3 = 0;
    double h = 1e-9;
    double beg = 0, end = 1.1e-8;
    
    printFinalValues(y0, y1, y2, y3, h,beg, end);
    
    system("pause");
    return 0;
}
Добавлено через 15 минут
Kuzia domovenok, помогите, пожалуйста, найти ошибку
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
27.11.2019, 03:55
doris_19, для начала, напиши чисто формулой уравнение, которое решаешь(систему уравнений)

Добавлено через 46 минут
doris_19, для начала, напиши чисто формулой уравнение, которое решаешь(систему уравнений)

Добавлено через 3 минуты
потому что в оригинальном примере, что такое diff я могу понять, а что за диффы у тебя в системе? У тебя же много переменных! По какой из них какая производная? запиши, повторяю тебе, уравнение формулой!
0
0 / 0 / 0
Регистрация: 26.11.2019
Сообщений: 4
27.11.2019, 09:29  [ТС]
Kuzia domovenok,https://www.cyberforum.ru/cgi-bin/latex.cgi?\frac{dy}{dt}=
https://www.cyberforum.ru/cgi-bin/latex.cgi?8.85*{10}^{6} - {y}_{2}(t)* {y}_{0}(t) * (0.2 - {y}_{0}(t)) / (1. - {y}_{1}(t)) + {y}_{0}(t) / 10e-8
https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{0}(t)*{y}_{2}(t)
https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{0}(t)*{y}_{3}(t)
https://www.cyberforum.ru/cgi-bin/latex.cgi?{10}^{30}\sqrt{{y}_{0}(t)}{e}^{\frac{-0.25}{{y}_{0}(t)}}

при https://www.cyberforum.ru/cgi-bin/latex.cgi?{y}_{0}={10}^{-10}, {y}_{1}=0, {y}_{2} = 0, {y}_{3}=0
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,238
27.11.2019, 16:10
Заменяем все y на массив из 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
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
// рассмотрим дифференциальное уравнение
// для заданных x и y возвращаем v
 
void f(double x,double* y,double* v) {
    v[0]= 8.85e6 - y[2] * y[0] * (0.2 - y[0]) / (1. - y[1]) + y[0] / 1e-8;
//  v[0] = 1.0 - y[2] * y[0] * (0.2 - y[0]) / (1. - y[1]) + y[0];
    v[1] = y[0] * y[2];
    v[2] = y[0] * y[3];
    v[3] = 1e30 * (sqrt(y[0]))*exp(-0.25 / y[0]);
//  v[3] = 1.0 * (sqrt(y[0]))*exp(-0.25 / y[0]);
}
// предсказывает следующее значение для данного (x, y)
// и размер шага h с использованием метода Эйлера
void predict(double x,double* y, double h,double *y1p) {
    // вычисляет значение следующего y (прогнозируемого)
    double t[4];
    f(x,y, t);
    for(int i=0;i<4;i++)
        y1p[i] = y[i] + h *t[i];
}
 
// исправляет прогнозируемое значение
// используя модифицированный метод Эйлера 
void correct(double x,double* y, double x1, double* y1, double h,double* y1c) {
    // (x, y) предыдущего шага
    // и x1 - увеличенный x для следующего шага
    // и у1 прогнозируется у для следующего шага
    double e = 0.00001;
    double t1[4],t2[4];
    for (int i = 0; i < 4; i++)
        y1c[i] = y1[i];
    double sum = 0;
 
    do{
        for (int i = 0; i < 4; i++)
            y1[i] = y1c[i];
        f(x,y, t1);
        f(x1,y1, t2);
        sum = 0;
        for (int i = 0; i < 4; i++)
        {
            y1c[i] = y[i] + 0.5 * h * (t1[i] + t2[i]);
            sum += fabs(y1c[i] - y1[i]);
        }
    } while (sum > e);
 
}
void printFinalValues(double x,double xn,double* y, double h) {
 
    while (x < xn) {
        double x1 = x + h;
        double y1p[4],y1c[4];
        predict(x,y, h,y1p);
        correct(x,y,x1, y1p, h,y1c);
        x = x1;
        for(int i=0;i<4;i++)
            y[i] = y1c[i];
 
        cout << x << " " << y[0] << " " << y[1] << " " << y[2] << " " << y[3] << endl;
    }
}
 
int main() {
    double y[4] = { 1.0e-10, 0,0,0 };
    double h = 1e-9;
    double beg = 0, end = 1.1e-8;
 
    printFinalValues(beg, end,y, h);
 
    system("pause");
    return 0;
}
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
27.11.2019, 22:04
zss, мне кажется, автор вообще слабо понимает, что такое дифуры.
Перед тем как отвечать что-то по программе, я ему задал простой вопрос: "а какую систему уравнений ты решаешь?"
Вместо ответа мне навалили набор формул. Вот это его "дэ игрек по дэ тэ" это что за выражение? игрек это вроде как функции и этих функций 4 штуки. Какая из них дифференцируется и чему это равно?
0
Модератор
Эксперт С++
 Аватар для zss
13769 / 10962 / 6491
Регистрация: 18.12.2011
Сообщений: 29,238
28.11.2019, 07:45
Очевидно, что y - это вектор, dy/dt - вектор производных.
Далее ТС не сумел поставить фигурную скобку объединяющую 4 последующих строки.
0
 Аватар для Kuzia domovenok
4268 / 3327 / 926
Регистрация: 25.03.2012
Сообщений: 12,531
Записей в блоге: 1
28.11.2019, 11:17
Цитата Сообщение от zss Посмотреть сообщение
Очевидно, что y - это вектор
в каком смысле "вектор производных"? Неизвестное в уравнении это функции. Производные в уравнении это тоже функции.
Матан имеет дело в основном с функциями, производные берутся от функций.

Нельзя взять производную от сферического игрек в вакууме, заданного одним числом в ячейке массива.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.11.2019, 11:17
Помогаю со студенческими работами здесь

Метод Ньютона для решения системы нелинейных уравнений
Здравствуйте! Нужно решить методом Ньютона систему уравнений с точностью 0.0001: sin(x+y) - 1.2x = 0 x*x + y*y =1 Вот моя программа,...

Метод Ньютона для решения системы нелинейных уравнений
Программа работает неверно. Пожалуйста, помогите найти ошибки. Спасибо. #include &lt;iostream&gt; #include &lt;math.h&gt; using...

Метод хорд для решения системы нелинейных уравнений
Здравствуйте, задал вопрос по чисмету вот тут https://www.cyberforum.ru/numerical-methods/thread1529078.html#post8064137 Не...

Метод простых итераций для решения системы линейных уравнений
помогите найти ошибку в алгоритме при вводе уравнения x+y = 2 2x-y = 7 x = 2-y; y = (7-2*x)/-1 double ...

Метод Адамса для решения дифференциальных уравнений
Написал программу для решения дифф. уравнения, не могу исправить ошибки. Помогите пожалуйста function test_adams_1 clc; ...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru