Практикум по методам решения задачи Коши для систем ОДУ. Даутов P.З. - 17 стр.

UptoLike

Составители: 

§ 3. Программирование методов Рунге-Кутта при решении систем ОДУ. 17
§ 3. Программирование методов Рунге-Кутта при решении
систем ОДУ.
Рассмотрим вопросы, связанные с программной реализацией q-
стадийного метода Рунге-Кутта, предназначенного для решения про-
извольной задачи Коши для системы ОДУ, имея в виду рассмотрен-
ные выше методы с постоянным шагом интегрирования h; при этом
будем предполагать, что число уравнений n и число узлов N тако-
вы, что в памяти ЭВМ свободно можно разместить матрицу размера
(N + 1) × n.
Выберем идентификатор RKq для обозначения имени этой про-
граммы (функции). Какие параметры мы должны передать этой про-
грамме, а какие получить в качестве результата ее выполнения? По-
скольку мы ведем речь о задаче вида
u
(t) = f(t, u(t)), t (a, b], u(a) = u
a
,
где f : R × R
n
R
n
заданная вектор функция, u
a
R
n
задан-
ный вектор, а a, b заданные числа, то задача определяется только
4-мя данными
f, a, b, u
a
,
или 3-мя, если a, b упаковать, например, в массив ab, длины 2. Яс-
но, что эти данные надо обязательно передать каким-либо образом
RKq. Кроме того метод Рунге-Кутта определяется параметром N
(h = (b a)/N); его тоже необходимо передать RKq. Будем считать
(это общепринято), что f в свою очередь реализуется в виде програм-
мы (функции); она должна иметь 2 входных параметра (t, y), y R
n
,
t R, и один выходной значение вектор-функции f массив
длины n.
1)
Метод Рунге-Кутта генерирует векторы y
i
длины n, которые яв-
ляются приближениями к u(t
i
) = (u
1
(t
i
), . . . , u
n
(t
i
)), i = 0, 1, . . . , N.
Будем считать, что эти вектора сохраняются в матрице Y , размера
(N + 1) × n, i-тая строка которого равна y
i
.
2)
Будем считать также,
что массив T = (t
0
, t
1
, . . . , t
N
) используется для хранения сетки.
1)
В зависимости от выбранного языка программирования, возможно как RKq, так и f , необ-
ходимо передавать также параметр n размерность задачи. Далее мы будем предполагать, что
имеется функция numel(), которая для одномерного массива возвращает число его элементов.
2)
тогда j-тый столбец Y содержит приближение к j-той компоненте решения u
j
(t) в точках
сетки.
§ 3. Программирование методов Рунге-Кутта при решении систем ОДУ.                      17


§ 3. Программирование методов Рунге-Кутта при решении
                       систем ОДУ.

    Рассмотрим вопросы, связанные с программной реализацией q-
стадийного метода Рунге-Кутта, предназначенного для решения про-
извольной задачи Коши для системы ОДУ, имея в виду рассмотрен-
ные выше методы с постоянным шагом интегрирования h; при этом
будем предполагать, что число уравнений n и число узлов N тако-
вы, что в памяти ЭВМ свободно можно разместить матрицу размера
(N + 1) × n.
    Выберем идентификатор RKq для обозначения имени этой про-
граммы (функции). Какие параметры мы должны передать этой про-
грамме, а какие получить в качестве результата ее выполнения? По-
скольку мы ведем речь о задаче вида
                   u′ (t) = f (t, u(t)), t ∈ (a, b], u(a) = ua ,
где f : R × Rn → Rn — заданная вектор функция, ua ∈ Rn — задан-
ный вектор, а a, b — заданные числа, то задача определяется только
4-мя данными
                           f, a, b, ua ,
или 3-мя, если a, b упаковать, например, в массив ab, длины 2. Яс-
но, что эти данные надо обязательно передать каким-либо образом
RKq. Кроме того метод Рунге-Кутта определяется параметром N
(h = (b − a)/N ); его тоже необходимо передать RKq. Будем считать
(это общепринято), что f в свою очередь реализуется в виде програм-
мы (функции); она должна иметь 2 входных параметра (t, y), y ∈ Rn ,
t ∈ R, и один выходной — значение вектор-функции f — массив
длины n.1)
    Метод Рунге-Кутта генерирует векторы yi длины n, которые яв-
ляются приближениями к u(ti ) = (u1 (ti ), . . . , un (ti )), i = 0, 1, . . . , N .
Будем считать, что эти вектора сохраняются в матрице Y , размера
(N + 1) × n, i-тая строка которого равна yi .2) Будем считать также,
что массив T = (t0 , t1 , . . . , tN ) используется для хранения сетки.
  1)
     В зависимости от выбранного языка программирования, возможно как RKq, так и f , необ-
ходимо передавать также параметр n — размерность задачи. Далее мы будем предполагать, что
имеется функция numel(), которая для одномерного массива возвращает число его элементов.
  2)
     тогда j-тый столбец Y содержит приближение к j-той компоненте решения uj (t) в точках
сетки.