содержание:[ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [стр.107] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ст
legend! Ч0Л{-3}lCf-fl}*, ,10л{-6>1, точное решение, 4] grid on hold offI подфункция вычисления правых частей уравнений function F = rsbad{t, у) F = [у(2); -1.0/tA2J;Управление выводом результатовПримеры предыдущих разделов предполагали вызов солверов с двумя выходными аргументами массивами или одним структурой. В них возвращался вектор значений независимой переменной и матрица со значениями компонент решения в соответствующих точках. Полученные массивы мы использовали для визуализации и анализа результата. Вернитесь к уравнению (6.4), для решения которого была создана файл-функция, приведенная в листинге 6.15, уберите выходные аргументы у солвера и вывод решения функцией plot. Вызов солвера без выходных аргументов приводит к появлению графического окна, изображенного на рис. 6.12, в котором отображается процесс численного интегрирования дифференциального уравнения и выводятся все компоненты вектора решения.-2.5,О1015Рис. 6.12. Графическое отображение процесса численного интегрированияI За* 130Возможности вывода результата, предоставляемые солверами MATLAB, не исчерпываются только таким способом визуализации решения. Пользователь можег выбрать альтернативное графическое представление результата, более того, допускается контролировать процесс численного интегрирования и отображать его на графике по своему усмотрению. Для этого следует воспользоваться одним из видов контроля управляющей структуры OutputFcn. Его значение должно быть указателем на функцию (или ее именем), производящую требуемые операции. Имеется несколько стандартных функций:□odeplot построение графиков компонент решения;□odephas2 построение графиков компонент решения в фазовых координатах для двумерного процесса;□odephas3 построение графиков компонент решения в фазовых координатах для трехмерного процесса;□odeprint печать решения.Заметьте, что вызов солвера без выходных аргументов приводит к появлению тех же графиков, что и применение odeplot, поскольку вид контроля OutputFcn принимает значение eodepiot:» options = odeset(OutputFcn, Oodeplot)» [T,Y] = ode45(@oscil, [0 15], YO, options);Представление решения на фазовой плоскости такое, как на рис. 6.13, производится при помощи odephas2:» options = odeset(OutputFcn, @odephas2) » [T,Y] = ode45(@oscil, [0 15], YO, options);Пользователь может создавать свои файл-функции для визуализации решения или обработки результатов каждого шага численного интегрирования.Рассмотрим один простой пример. Требуется производить численное интегрирование дифференциального уравненияу" + у = еЛ (sin jr + 2cosy)(6.6)при начальных условиях у(0) = 0, F[t,Y,Y) до тех пор, пока модуль значения функции у(л) не превзойдет 100. Приведите уравнение к системе обыкновенных дифференциальных уравнений и запрограммируйте ее правую часть в файл-функции syst (листинг 6.18).Рис. 6.13. Визуализация решения дифференциального уравнения (6.4) на фазовой плоскости (odephas2)! Листинг 6.18. Правая часть системы дифференциальных уравнений (6.6)function F = systft, у)F = [у(2>; exp(t).*(sin(t) + 2*cos(t)) - y(l>];При вызове солвера, к примеру, odeii3, требуется указать отрезок интегрирования, но его правая граница заранее неизвестна мы не знаем априори, в какой момент времени модуль значения функции станет больше 100. Например, для отрезка [0, 10] получаются существенно большие значения:» [Т,Y] = odell3(@syst, [0, 10], [0 1]) » plot(T, Y(:, 1))Выход состоит в написании файл-функции для обработки значения, вычисленного на текущем шаге интегрирования. Солвер будет вызывать эту функцию после каждого шага и осуществлять дальнейшие действия в зависимости от возвращаемого ей значения. Назовем эту функцию soiproc. Ее заголовок должен иметь вид: function status = soiproc(t, у, flag)
страница - 107
Системная интеграция
Проектное сопровождение
Технические средства охраны
Системы безопасности
Комментариев нет:
Отправить комментарий