8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 99 100 101 102 103 104 105 ... 365

Пользователь может найти значение любой функции от матрицы. Для этого следует создать собственную файл-функцию, анонимную функцию или inline-функцпю. а затем использовать специальную функцию funm, задав первым аргументом матрицу, а вторым имя файл-функции в апострофах

или указатель на функцию. Вычислите, например e-sinA. Текст соответствующей файл-функции matrf приведен в листинге 6.14. При создании файл-функции обязательно использование поэлементных операций!

Листинг 6.14. Файл-функция matrf для вычисления функции матрицы

function б = matrf(А) В = ехр(А).*sin(A);

Теперь при помощи funm найдите значение заданной функции от матрицы в:

» В = funm(A, @matrf) В =

141.6829 228.9756 228.9756 370.6585

Для контроля точности вычислений функции от матрицы лучше использовать вызов funm с двумя выходными аргументами. Во второй аргумент помещается информация о точности вычислений. Встроенные математические функции MATLAB (sin, cos и другие) можно вычислять от матриц аналогичным образом, например

» В = funm(A, sin)

Предпочтительнее производить вычисления функций от матриц с использованием специальных матричных функций expm, logm, sqrtm, т. е., например, ехрт(А) вместо funm (А, "ехр") и т. д. В этих матричных функциях реализованы специальные алгоритмы, работающие точнее и надежнее, чем общий алгоритм funm.

Функции матриц имеют широкую область применения, в частности, решение системы линейных дифференциальных уравнений с начальным условием

t/X

— = А-Х. Х(0) = Х0

может быть найдено по формуле X(t)-X{)eA. Решению дифференциальных уравнений и систем посвящен следующий раздел.


Решение дифференциальных уравнений

Данный раздел посвящен описанию возможностей, предоставляемых MATLAB, для численного решения задач Коши и краевых задач для обыкновенных дифференциальных уравнений произвольного порядка и систем, включая краевые задачи с неизвестными параметрами и вырождающимися коэффициентами. Рассматривается также решение дифференциальных уравнений с запаздывающим аргументом. Для решения этих задач предназначены специальные функции MATLAB. в вычислительной математике их называют солверы. MATLAB имеет достаточно большой набор солверов, основанных на различных численных методах.

Решение задачи Коши

Для решения задачи Коши в MATLAB существует семь солверов: ode45, ode23, ode!13, odel5s, ode23s, ode23t И ode23tb. Методика ИХ использования одинакова, включая способы задания входных и выходных аргументов. В достаточно общем случае вызов солвера для решения задачи Коши производится следующим образом (здесь под solver понимается один из перечисленных выше солверов):

[Т, У] = solver(odefun,interval,YO,options)

где odefun — функция для вычисления вектор-функции правой части системы уравнений, interval — массив из двух чисел, задающий промежуток для решения уравнения, Y0— заданный вектор начальных значений искомой вектор-функции, options — структура для управления параметрами и ходом вычислительного процесса. Солвер возвращает массив т с координатами узлов сетки, в которых найдено решение, и матрицу решений у, каждый столбец которой является значением компоненты вектор-функции решения в узлах сетки.

Далее мы обсудим применение солверов и управление процессом решения на ряде показательных примеров из перечисленных выше классов задач.

Задача Коши для дифференциального уравнения состоит в нахождении функции, удовлетворяющей дифференциальному уравнению произвольного порядка

и начальным условиям при t =/у

у(о) = ио* /(o) = "i. —• V

<(и,)(<о) =

и,

п-1 •


Схема решения таких задач в MATLAB состоит из следующих этапов.

1.Приведение дифференциального уравнения к системе дифференциальных уравнений первого порядка (если изначально задана система, то в этом нет необходимости).

2.Написание специальной функции для системы уравнений.

3.Вызов подходящего солвера.

4.Визуализация результата.

Разберем решение дифференциальных уравнений на примере задачи о колебаниях материальной точки под воздействием внешней силы в среде, оказывающей сопротивление колебаниям. Перемещение точки в среде описывается уравнением второго порядка

/ + 2/+10j = sm/.

Предположим, что координата точки в начальный момент времени равнялась единице, а скорость — нулю. Тогда соответствующие начальные условия имеют вид

у(0) = 1, у(0) = 0.

Пример носит демонстрационный характер, поэтому размерности физических величии указываться не будут. Теперь исходную задачу надо привести к системе дифференциальных уравнений. Для этого вводят столько вспомогательных функций, каков порядок уравнения. В данном случае необходимы две вспомогательные функции у, и у2, определяемые формулами

У\=У*Уг = У-

Несложно догадаться, что система дифференциальных уравнений с начальными условиями, требуемая для дальнейшей работы, такова

У\ =У2>

Уг = -2у2-Юух +sin/;

Второй этап состоит в написании функции для системы дифференциальных уравнений. Функция должна иметь два входных аргумента: переменную /, по которой производится дифференцирование, и вектор, размер которого равен числу неизвестных функций системы. Число и порядок аргументов фиксированы, даже если t явно не входит в систему. Выходным аргументом функции является вектор правой части системы. Текст функции oscil для разбираемого примера приведен в листинге 6.15.

>,(0)п

Г

.V2(0)

0

(6.4)



0 ... 99 100 101 102 103 104 105 ... 365