Моделирование в MATLAB/Simulink и SCILAB/Scicos - page 97

95
интегрирует систему обыкновенных дифференциальных уравнений вида
) ,(
YxF Y
=′
на интервале [
a, b
], с краевыми условиями вида
G
(
Y
(
a
),
Y
(
b
)) = 0.
В качестве входных параметров команда
bvp
4
c
принимает три аргумента:
F
– имя функции для формирования правых частей
дифференциального уравнения;
G
– имя функции для вычисления вектора краевых условий
G
(
Y
(
a
),
Y
(
b
));
solinit
– структура, содержащая начальное приближенное решение.
Пример 7.1.
Найти решения дифференциального уравнения
0 | |
= +′′
y y
,
которые удовлетворяют краевым условиям
y
(0) = 0,
y
(4) = 2
.
Введем обозначения
T
yy Yy yy y
] , [
,
,
2 1
2
1
= = =
. Тогда уравнение можно
записать следующим образом:
−=
=
|
|
1
2
2
1
y
y
y y
Правую часть этого уравнения будем вычислять в функции
twoode
,
которая не зависит явно от
x
:
function dydx = twoode(x,y)
dydx = [y(2); -abs(y(1))];
На каждом шаге итерационного алгоритма, решающего краевую задачу,
проверяется выполнение краевых условий. Для этого значения переменных в
начальной и конечной точках
Y
(
a
) и
Y
(
b
) подаются на вход специальной
функции, вычисляющей вектор
G
(
Y
(
a
),
Y
(
b
)). В нашем случае это вектор
[
y
(0)
y
(4) – 2]
T
. Он зависит только от первых компонент векторов
Y
(
a
) и
Y
(
b
), так как
в краевые условия не входят производные, и их вычислим в функции
twobc
:
function res = twobc(ya,yb)
res = [ya(1);yb(1)+2];
Структура
solinit
имеет поля
x
и
y
. Поле x содержит набор отсчетов
независимой переменной, а поле
y
– массив значений вектора
Y
(
x
). Их
начальные значения можно задавать вручную, или при помощи специальной
команды
bvpinit.
Первым аргументом этой команды является набор отчетов
x
.
Второй аргумент – либо строка констант, которыми заполняется весь массив
y
,
либо имя функции
fun
, возвращающей строку значений в точке
x.
>> solinit=bvpinit([0 1 2 3 4 ],[1 0])
solinit =
solver: 'bvpinit'
x: [0 1 2 3 4]
y: [2x5 double]
yinit: [1 0]
>> solinit.y
ans =
1 1 1 1 1
0 0 0 0 0
1...,87,88,89,90,91,92,93,94,95,96 98,99,100,101,102,103,104,105,106,107,...286
Powered by FlippingBook