76
Работа в режиме калькулятора в среде MatLAB, несмотря на довольно значительные возможности, во многих
отношениях неудобна. Невозможно повторить предшествующие вычисления и действия при новых значениях
исходных данных без повторного набора предшествующих операторов. Нельзя возвратиться назад и повторить
некоторые действия, или по некоторому условию перейти к выполнению другой последовательности
операторов. И вообще, если
количество операторов значительно, становится проблемой отладить правильную
их работу из-за неминуемых ошибок при наборе команд. Поэтому сложные, с прерываниями, сложными
переходами по определенным условиям, с часто повторяемыми однотипными действиями вычисления,
которые, вдобавок, необходимо проводить неоднократно при измененных исходных данных, требуют их
специального оформления в виде записанных на диске файлов,
т. е. в виде программ. Преимущество программ
в том, что, так как они зафиксированы в виде записанных файлов, становится возможным многократное
обращение к одним и тем же операторам и к программе в целом. Это позволяет упростить процесс отладки
программы, сделать процесс вычислений более наглядным и прозрачным, а благодаря этому резко уменьшить
возможность появления ошибок при разработке программ. Кроме того, в программах возникает возможность
автоматизировать также и процесс изменения значений первоначальных параметров в диалоговом режиме.
2.1. Функции функций
Некоторые важные универсальные процедуры в MatLAB используют в качестве переменного параметра имя
функции, с которой они оперируют, и поэтому требуют при обращении к ним указания имени М-файла, в
котором записан текст некоторой другой процедуры (функции). Такие процедуры называют функциями
функций.
Чтобы воспользоваться такой функцией функции, необходимо, чтобы пользователь предварительно создал М
-
файл, в котором вычислялось бы значение нужной ("внутренней") функции по известному значению ее
аргумента.
Перечислим некоторые из стандартных функций от функций, предусмотренных в MatLAB.
Вычисление интеграла методом квадратур осуществляется процедурой
[ I, cnt ] = quad(‘<имя функции>’, a,b).
Здесь a и b - нижняя и верхняя граница изменения аргумента функции; I - полученное значение интеграла; cnt -
количество обращений к вычислению функции, представленной М-файлом с названием, указанным в <имя
функции>. Функция
quad использует квадратурные формулы Ньютона-Котеса четвертого порядка.
Аналогичная процедура
quad8
использует более точные формулы 8-го порядка.
Интегрирование обыкновенных дифференциальных уравнений осуществляют функции
ode23
и
ode45
. Они
могут применяться как для численного решения (интегрирования) простых дифференциальных уравнений, так
и для моделирования сложных динамических систем, т. е. систем, поведение которых можно описать
совокупностью обыкновенных дифференциальных уравнений.
Известно, что любая система обыкновенных дифференциальных уравнений (ОДУ) может быть представлена
как система уравнений 1-го порядка в форме Коши:
),( t
dt
d
yf
y
=
,
где y - вектор переменных состояния (фазовых переменных системы); t - аргумент (обычно - время); f -
нелинейная вектор-функция переменных состояния y и аргумента t.
Обращение к процедурам численного интегрирования ОДУ имеет вид:
[t, y] = ode23 (‘<имя_функции>’, tspan, y0, options)
[t, y] = ode45 (‘<имя_функции>’, tspan, y0, options),
Используемые параметры имеют такой смысл:
- <имя функции> - строка символов, представляющая собой имя М-файла, в котором вычисляется
вектор-функция f(y,t), т. е. правые части системы ОДУ;
- y0 - вектор начальных значений переменных состояния;
- t - массив рассчитанных значений аргумента, отвечающих шагам интегрирования;
- y - матрица проинтегрированных значений фазовых переменных, в которой каждый столбец
соответствует одной из переменных состояния, а строка содержит значения переменных состояния,
отвечающие соответствующему шагу интегрирования;