numeric
::butcher
Параметры мясника схем Runge-Kutta
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.
numeric::butcher(EULER1 | RKF43 | xRKF43 | RK4 | RKF34 | xRKF34 | RKF54a | xRKF54a | RKF54b | xRKF54b | DOPRI54 | xDOPRI54 | CK54 | xCK54 | RKF45a | xRKF45a | RKF45b | xRKF45b | DOPRI45 | xDOPRI45 | CK45 | xCK45 | DOPRI65 | xDOPRI65 | DOPRI56 | xDOPRI56 | BUTCHER6 | RKF87 | xRKF87 | RKF78 | xRKF78 | DOPRI87 | xDOPRI87 | DOPRI78 | xDOPRI78 | GAUSS(s) | GAUSS = s
, <digits
>)
numeric::butcher(method)
возвращает параметры Мясника схемы Runge-Kutta под названием method
.
s этапный Метод Рунге-Кутта для численного интегрирования динамической системы с размером шага h является картой
.
“Промежуточные стадии” k 1, …, k s задан как решения алгебраических уравнений
.
Если s ×s “Матрица мясника” a ij является строго нижним треугольным, метод называется “явный”. В этом случае промежуточные стадии вычисляются рекурсивно как:
.
Различные числовые схемы являются результатом различного выбора параметров Мясника: s ×s-matrix a ij, веса b = [b 1, …, b s] и абсциссы c = [c 1, c 2, …, c s].
Встроенные пары Методов Рунге-Кутта состоят из двух методов, которые совместно используют матричный a ij и абсциссы c i, но используют различные веса b i.
Возвращенный список [s, c, a, b1, b2, order1, order2]
содержит данные Мясника метода: s
количество этапов, c
список абсцисс, a
матрица Мясника, b1
и b2
списки весов. Целые числа order1
и order2
порядки схемы при использовании весов b1
или b2
, соответственно, в сочетании с матричным a
и абсциссы c
.
Методы EULER1
(порядок 1), RK4
(порядок 4) и BUTCHER6
(порядок 6) является отдельными методами с b1 = b2
и order1 = order2
. Все другие методы являются встроенными парами Runge-Kutta-Fehlberg (RKFxx
), Dormand-принц (DOPRIxx
) или Наличные-деньги-Karp (CKxx
Ввод. Имена указывают на порядки подпроцессов, например, CK45
Наличная-Karp пара порядков 4 и 5. CK54
та же пара с обратным упорядоченным расположением подпроцессов. Второй подпроцесс используется, чтобы произвести временной шаг Метода Рунге-Кутта, первый подпроцесс используется в оценке ошибки временного шага.
Методы GAUSS(s)
или, эквивалентно, GAUSS = s
неявные методы Гаусса с s
этапы порядка 2 s.
Данные всех явных методов возвращены как точные рациональные числа. Данные методов Гаусса возвращены как числа с плавающей запятой.
Данные Мясника вызваны стандартными программами numeric::odesolve
, numeric::odesolve2
, и numeric::odesolveGeometric
.
При вычислении данных для GAUSS(s)
, функция чувствительна к переменной окружения DIGITS
, который определяет числовую рабочую точность.
Данные Мясника классических 4 этапов, 4-й порядок схема Runge-Kutta:
numeric::butcher(RK4)
Обратите внимание на то, что веса b1
и b2
совпадите: этот классический метод не обеспечивает встроенную пару.
Данные Мясника (неявных) 3 этапов метод Гаусса:
DIGITS := 5: numeric::butcher(GAUSS(3)); delete DIGITS:
Данные Мясника встроенного парного RKF34
Runge-Kutta-Fehlberg из порядков 3 и 4:
[s, c, a, b1, b2, order1, order2] := numeric::butcher(RKF34):
Количество этапов s
из 4-го порядка подпроцесс равняется 5, абсциссы c
и матричный a
дают:
s, c, a
Используя эти параметры с весами
b1, b2
дает к числовой схеме порядка 3 или 4, соответственно:
order1, order2
delete s, c, a, b1, b2, order1, order2:
Мы строим области устойчивости двух подметодов DOPRI78
. Функцией устойчивости схемы Runge-Kutta параметрами Мясника (c, a, b) дают
,
где e является вектор-столбцом (1, 1, …, 1) T. Для явного s этапная схема (матричный a является строго нижним треугольным), эта функция устойчивости уменьшает до полинома
.
Мы вычисляем коэффициенты полиномов устойчивости, сопоставленных с матрицей Мясника a
и веса b1
и b2
из подметодов DOPRI78
:
[s, c, a, b1, b2, order1, order2] := numeric::butcher(DOPRI78): e := matrix([1 $ s]): a := float(matrix(a)): b1 := linalg::transpose(float(matrix(b1))): b2 := linalg::transpose(float(matrix(b2))): for i from 1 to s do c1[i] := (b1*a^(i-1)*e)[1, 1]; c2[i] := (b2*a^(i-1)*e)[1, 1]; end_for:
Мы задаем полиномы устойчивости:
z := x + I*y: p1 := 1 + _plus(c1[i]*z^i $ i = 1..s): p2 := 1 + _plus(c2[i]*z^i $ i = 1..s):
Контур области устойчивости является кривой, заданной |p (z) | = 1. Мы строим эти неявные кривые, сопоставленные полиномами устойчивости p1(z)
и p2(z)
заданный выше:
plot(plot::Implicit2d(abs(p1) = 1, x = -6..1, y = 0..6, Color = RGB::Red, Legend = "Order 7"), plot::Implicit2d(abs(p2) = 1, x = -6..1, y = 0..6, Color = RGB::Blue, Legend = "Order 8"), Scaling = Constrained):
delete s, c, a, b1, b2, order1, order2, e, c1, c2, z, p1, p2:
|
Количество этапов метода Гаусса: положительное целое число |
|
Количество значительных цифр, с который данные Мясника методов |
Список [s, c, a, b1, b2, order1, order2]
возвращен.
Дж.К. Бучер: числовой анализ Обыкновенных дифференциальных уравнений, Вайли, Чичестера (1987).
Э. Хэрер, С.П. Норсетт и G. Более бледный: решая Обыкновенные дифференциальные уравнения I, Спрингер, Берлин (1993).
Методы DOPRI87
и DOPRI78
соответствуйте методу RK8(7)13M
опубликованный в:
P.J. Принц и J.R.Dormand: Старший разряд встроил формулы Рунге-Кутта, Журнал Вычислительной и Прикладной математики 7 (1), 1981.
Параметры Мясника, обеспеченные в этой исходной газете, состоят из рациональных приближений решений уравнений порядка систем Рунге-Кутта. Параметры обеспечиваются numeric::butcher
точные рациональные решения уравнений порядка. Приближения, данные принцем и Dormand, совпадают с MuPAD® точные значения через 16 десятичных цифр.