Page 126 - 363_
P. 126
127
уніфікувати звернення до усіх функцій певного вигляду, тобто таких, що мають
однакову кількість вхідних і вихідних параметрів відповідного типу. При цьому
ім'я функції, яке використовується, може бути довільним і змінюватися
протягом повторних обчислень.
12.2 Приклади створення процедур від функцій
Процедура метода чисельного інтегрування Рунге-Кута 4-го порядку.
Нехай маємо систему звичайних диференційних рівнянь (ЗДР) у вигляді Коші:
dy
), t , y ( Z
dt
де у – вектор змінних стану системи; t – аргумент (час); Z – вектор заданих
нелінійних функцій, який визначає систему ЗДР.
Якщо значення вектора у у момент часу є відомим, то загальна формула,
за якою знаходиться вектор yout значень змінних стану системи у момент часу
tout=t+h, де h – крок інтегрування, при значеннях вектора у значень цих
змінних на попередньому кроці, має вигляд:
yout = y + hF(y, t).
Функція F(y, t), яка пов'язана з вектором Z, може набувати різного
вигляду залежно від обраного методу чисельного інтегрування. Для методу
Рунге-Кута
4-го порядку оберемо таку її форму:
F = (k 1+3k 2+3k 3+k 4)/8,
де
k 1=Z(y, t);
k 2=Z(y + hk 1/3, t + h/3);
k 3=Z(y + hk 2 – hk l/3, t + 2h/3);
k 4 =Z(y + hk 3 – hk 2 – hk 1, t + h).
Утворимо М-файл процедури чисельного інтегрування, назвавши його
RKI4:
function [tout, yout] = RKI4(Zpfun, h, t, y)
% RKI4 Інтегрування ЗДР методом Рунге-Кута 4-го порядку.
% праві частини яких задані процедурою Zpfun.
% Вхідні змінні:
% Zpfun - рядок, що містить ім'я процедури обчислення правих частин ЗДР
% звернення: z = fun(t, y), де Zpfun = 'fun'
% t - поточний момент часу
% у - вектор поточних значень змінних стану