- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
#include<stdio.h>
#include<math.h>
int const n = 50, n1 = 40, m = n / n1;
double f1(double t, double x, double y, double z);
double f2(double t, double x, double y, double z);
double f3(double t, double x, double y, double z);
int main() {
int i, k, ll;
double k11, k12, k13, k21, k22, k23, k31, k32, k33, k14, k24, k34;
double x, y, z, max;
double res[12][n1 + 1], h, a, b, t, pi, xn, yn, zn;
max = 1000.0; x = 3.0;
y = -2.0; z = -3.0;
a = 0.0; b = 1.0;
h = (b - a) / double(n);
k = 0; t = a;
res[0][0] = t; res[1][0] = x;
res[2][0] = y;
res[3][0] = z;
for (i = 1; i <= n; i++) {
k11 = f1(t, x, y, z);
k21 = f2(t, x, y, z);
k31 = f3(t, x, y, z);
k12 = f1(t + h / 2.0, x + h*k11 / 2.0, y + h*k21 / 2.0, z + h*k31 / 2.0);
k22 = f2(t + h / 2.0, x + h*k11 / 2.0, y + h*k21 / 2.0, z + h*k31 / 2.0);
k32 = f3(t + h / 2.0, x + h*k11 / 2.0, y + h*k21 / 2.0, z + h*k31 / 2.0);
k13 = f1(t + h / 2.0, x + h*k12 / 2.0, y + h*k22 / 2.0, z + h*k32 / 2.0);
k23 = f2(t + h / 2.0, x + h*k12 / 2.0, y + h*k22 / 2.0, z + h*k32 / 2.0);
k33 = f3(t + h / 2.0, x + h*k12 / 2.0, y + h*k22 / 2.0, z + h*k32 / 2.0);
k14 = f1(t + h, x + h*k13, y + h*k23, z + h*k33);
k24 = f2(t + h, x + h*k13, y + h*k23, z + h*k33);
k34 = f3(t + h, x + h*k13, y + h*k23, z + h*k33);
x = x + h*(k11 + 2.0*(k12 + k13) + k14) / 6.0;
y = y + h*(k21 + 2.0*(k22 + k23) + k24) / 6.0;
z = z + h*(k31 + 2.0*(k32 + k33) + k34) / 6.0;
t = t + h;
if (i%m == 0) {
k = k + 1;
res[0][k] = t;
res[1][k] = x;
res[2][k] = y;
res[3][k] = z;
res[4][k] = exp(t) + exp(2.0*t) + exp(-t);
res[5][k] = exp(t) - 3.0*exp(-t);
res[6][k] = exp(t) + exp(2.0*t) - 5.0*exp(-t);
res[7][k] = res[4][k] - res[1][k];
res[8][k] = res[5][k] - res[2][k];
res[9][k] = res[6][k] - res[3][k];
} if (res[7][k] < 0.0) {
res[7][k] = -res[7][k];
}
else if (res[8][k] < 0.0) {
res[8][k] = -res[8][k];
}
else if (res[9][k] < 0.0) {
res[9][k] = -res[9][k];
}
res[10][k] = res[7][k] + res[8][k] + res[9][k];
}
ll = k;
printf("k=%d\n", ll);
for (i = 0; i <= ll; i++) {
if (res[10][i] < max) max = res[10][i];
} for (i = 0; i <= n1; i++) {
printf("t=%.16lf\n", res[0][i]);
printf("x=%.16lf x(exact)=%.16lf delta=%.16lf\n", res[1][k], res[4][k], res[1][k] - res[4][k]);
printf("y=%.16lf y(exact)=%.16lf delta=%.16lf \n", res[2][k], res[5][k], res[2][k] - res[5][k]);
printf("z=%.16lf z(exact)=%.16lf delta=%.16lf \n", res[3][k], res[6][k], res[3][k] - res[6][k]);
}
printf("result:\n");
printf("t=%.16lf\n", res[0][n1]);
printf("x=%.16lf x(exact)=%.16lf delta=%.16lf\n", res[1][n1], res[4][n1], res[1][n1] - res[4][n1]);
printf("y=%.16lf y(exact)=%.16lf delta=%.16lf \n", res[2][n1], res[5][n1], res[2][n1] - res[5][n1]);
printf("z=%.16lf z(exact)=%.16lf delta=%.16lf \n", res[3][n1], res[6][n1], res[3][n1] - res[6][n1]);
printf("max norma|x|1=%.16lf \n", max / 3.0);
system("pause");
return 0;
}
double f1(double t, double x, double y, double z)
{
return x + z - y;
}
double f2(double t, double x, double y, double z)
{
return x + y - z;
}
double f3(double t, double x, double y, double z)
{
return 2.0*x - y;
}
Кандидат физико-математических наук сделал методичку по предмету "Моделирование систем". Это он так описал алгоритм решения системы ОДУ методом Рунге-Кутты.
j123123 23.09.2017 23:40 # −2
1. Зачем для подобной фигни делать какие-либо функции, если можно просто написать операции сложения, вычитания и проч.?
2. Зачем в сигнатурах этих функций имеется double t? Эта переменная t ни разу (ни в одной из этих функций) не используется
3. А например в функции f3 помимо этого еще и переменная z никак не используется, нахрена она там?
HACTEHbKA 24.09.2017 01:04 # +3
y1' = f1(r, t)
y2' = f2(r, t)
y3' = f3(r, t)
найти y1, y2, y3
автор кондидат физик ему надо решать в пространстве времени много всего и уровнение Шредингера
он знает что код нужно делать уневерсальным не хардкодить и вынес f1, f2, f3 как входные данные для алгоритма Рунге-Кутта
FrauSchweinhund 24.09.2017 01:17 # 0
SemaReal 25.09.2017 14:20 # 0
bormand 24.09.2017 09:58 # +5
Но один фиг хардкодит ришенее сестемы дефур в строках 46-48.
inho 24.09.2017 23:12 # 0
LOL
bormand 25.09.2017 07:07 # +2
FrauSchweinhund 25.09.2017 11:20 # +3
bormand 26.09.2017 19:43 # +3
roman-kashitsyn 26.09.2017 21:56 # +2
CHayT 26.09.2017 22:34 # +2
bormand 26.09.2017 23:41 # 0
roman-kashitsyn 27.09.2017 00:35 # +3
Stallman 27.09.2017 01:24 # +4
Интересная закономерность – многие люди, далекие от анимублядства, считают анимублядский контент скучной хуйней. Оно и не мудрено – чем может аниме заинтересовать человека, у которого есть личная жизнь.
bormand 27.09.2017 04:23 # +1
К слову, там попадаются люди, которые пытаются играть только не-анимешные карты, ставят себе нарочито не-анимешные аватарки и всячески открещиваются от аниме...
Но мы то знаем, что они обречены.
bormand 27.09.2017 04:13 # 0
Ну там все факторы для этого есть - запас челленджа на годы, куча карт, PP-ськомерка и довольно милое комьюнити.
roman-kashitsyn 27.09.2017 18:35 # +1
CHayT 27.09.2017 19:11 # +3
bormand 27.09.2017 19:17 # +2
Ты развлекаешься языками для доказательства корректности кода :3
Stallman 27.09.2017 19:27 # +2
roman-kashitsyn 27.09.2017 22:36 # 0
А чем ты тогда занимаешься? Я на курсере довольно много торчу (комбинаторика, тервер, статистика, алгоритмы, вот это всё. сейчас идёт довольно интересный курс про Эрлангенскую программу Клейна) или какие-нибудь полуолимпиадные задачки на эзотерических (не по местным меркам, конечно) языках решаю.
SemaReal 28.09.2017 03:33 # +3
CHayT 28.09.2017 09:30 # 0
Меня с таким уровнем детализации хватает только на медленное изучение Coq.
roman-kashitsyn 28.09.2017 11:47 # 0
Ну да. Кмк, упражнения и дедлайны – основная фича курсеры. Я много разных курсов пробовал смотреть, без дедлайнов и задач расслабляешься и забиваешь довольно быстро.
На курсере, конечно, не так хардкорно преподают, как в универе было (во многих курсах опускают доказательства, к примеру), но пользу вполне реально извлечь.
> медленное изучение Coq
Тоже всё хочу пройтись по Software Foundations, но как-то руки не доходят. Проблема как раз в том, что нужно себя организовать, чтобы делать это систематично. Большая часть свободного времени уходит на изучение Deutsche Sprache.
CHayT 28.09.2017 13:20 # 0
После Software Foundations планирую высшую алгебру задрочить, курс в ниверситете был плох, в основном на уровне практических приложений, используемых в физике.
FrauSchweinhund 28.09.2017 13:22 # 0
bormand 28.09.2017 23:04 # 0
Кстати, а как там с качеством лекций/материалов/заданий?
roman-kashitsyn 29.09.2017 00:11 # +1
FrauSchweinhund 29.09.2017 01:14 # 0
Stallman 29.09.2017 02:00 # −1
SemaReal 29.09.2017 04:39 # 0
SemaReal 29.09.2017 04:38 # 0
bormand 02.10.2017 22:40 # 0
Я правильно понимаю, что в бесплатном нет проверки заданий и нинужного серта, но всё остальное доступно?
inho 02.10.2017 22:51 # 0
roman-kashitsyn 02.10.2017 22:54 # +2
В бесплатном, конечно. В бесплатном есть всё тоже самое, что в платном, только без заверенного сертификата (сертификат можно купить уже после завершения курса, сомневаюсь, что в "проплаченном" курсе что-то отличается). Проверка заданий в бесплатном моде тоже есть, она бывает двух видов:
- полностью автоматическая, когда нужно ввести ответ в тесте (~95% всех заданий) или отправить сорцы, на которые натравливается куча автотестов;
- задания, оцениваемые сокурсниками: сабмитишь код / картинку / текст, который ревьюят трое рандомных сокурсников.
Я ещё не видел, чтобы преподы какие-то задания вручную проверяли, не скейлится этот подход на тысячи людей. На форумах разве что живые ассистенты отвечают, если у людей вопросы к заданиям возникают.
bormand 07.10.2017 08:40 # 0
Походу, мне курс попался неудачный - тесты внутри видео и в конце уроков работают, а вот в конце модуля предлагает только "upgrade to submit".
bormand 07.10.2017 16:19 # +1
roman-kashitsyn 07.10.2017 23:06 # 0
Что за курс?
bormand 08.10.2017 09:12 # 0
А, да набор курсов по аналоговой электронике от института грузии джорджии.
SemaReal 11.10.2017 04:10 # 0
ты хочешь делать теплый ламповый звук или собирать аналоговые компьютеры?
bormand 11.10.2017 09:37 # 0
Вай нот? Даже если не делать чисто аналоговые приёмнички/усилители, всё равно остаётся сопряжение с внешним миром, а он аналоговый.
bormand 09.10.2017 16:03 # 0
https://yadi.sk/i/yTq03QuM3NYMoe
З.Ы. Клаву, к сожалению, не получилось в поле зрения камеры упихать.
subaru 09.10.2017 16:16 # 0
bormand 09.10.2017 16:31 # 0
Няшко-наброски в mypaint'е просят, чтобы я их не показывал. Когда-нибудь потом.
> купил, чтобы в осу играть
Не, для оски я только клаву взял (просто повод подвернулся, так то механику давно хотелось).
Stallman 09.10.2017 17:14 # +3
subaru 09.10.2017 17:28 # +3
bormand 09.10.2017 17:45 # 0
dxd 09.10.2017 19:06 # +3
bormand 09.10.2017 19:22 # +1
> предложив пройти
За автомат на экзамене?
З.Ы. /np'шни мапку.
dxd 09.10.2017 20:50 # +2
Я не осуёб и не умею.
bormand 09.10.2017 21:28 # 0
Ну ты же тогда её как-то нашёл, чтобы предложить ему пройти... Хотя бы версия с клоунами или одна из обычных? Какой год стоял на дворе?
З.Ы. Забей, я не пройду - походу все карты на эту песню пиздецовые, а я олдмаппинг очень слабо читаю.
dxd 10.10.2017 11:33 # +1
bormand 05.01.2018 23:59 # 0
COWuTEJIbTBOEuMAMKu 08.01.2018 10:37 # 0
1024-- 09.10.2017 19:09 # +1
https://pikabu.ru/story/klassicheskiy_rozyigryish_49_283504
bormand 09.10.2017 19:35 # +2
d_fomenok 10.10.2017 18:58 # +2
Леворадикальная лапка
d_fomenok 08.10.2017 20:14 # 0
OS365 и U365 от Никиты Иванова творят чудеса