Описание системы ОДУ MatLab

2758
0
0

Урок 16. Численные методы Элементарные средства решения СЛУ
Функции для решения систем линейных уравнений с ограничениями
Решение СЛУ с разреженными матрицами
Точное решение, метод наименьших квадратов и сопряженных градиентов
Двунаправленный метод сопряженных градиентов
Устойчивый двунаправленный метод
Метод сопряженных градиентов
Квадратичный метод сопряженных градиентов
Метод минимизации обобщенной невязки
Квазиминимизация невязки - функция qmr
Вычисление нулей функции одной переменной
Минимизация функции одной переменной
Минимизация функции нескольких переменных
Аппроксимация производных
Аппроксимация Лапласиана
Аппроксимация производных конечными разностями
Вычисление градиента функции
Численное интегрирование
Метод трапеций
Численное интегрирование методом квадратур
Работа с полиномами
Умножение и деление полиномов
Вычисление полиномов
Вычисление производной полинома
Решение полиномиальных матричных уравнений
Разложение на простые дроби
Решение обыкновенных дифференциальных уравнений
Решатели ОДУ
Использование решателей систем ОДУ
Описание системы ОДУ
Дескрипторная поддержка параметров решателя
Пакет Partial Differential Equations Toolbox
Что нового мы узнали?

Можно использовать m-файл типа odefunction (или m-file типа odefile для совместимости с прежними версиями, но последний случай мы рассматривать не будем, чтобы определить систему дифференциальных уравнений в одной из явных (первая формула) или неявных форм:

y'= F(t, у), My' = F(t, у) или M(t)y' = Y(t, у),

где t — независимая переменная (скаляр), которая обычно представляет время; у — вектор зависимых переменных; F — функция от t и у, возвращающая вектор-столбец такой же длины как и у; М и М(£) — матрицы, которые не должны быть вырожденными. М может быть и константой.

Рассмотрим пример решения уравнения вида

Оно сводится к следующей системе уравнений:

Подготовим m-файл ode-функции vdp.m:

function [outl.out2.out3] = vdp(t.y.flag)

if nargin < 3 | isempty(flag)

outl = [2.*y(2).*(l-y(2). ^ 2)-y(1); y(1)];

else

switch(flag)

case 'inlt' % Return tspan. y0 and options

out1 = [0 20];

out2 = [2; 0];

out3 = [ ];

otherwise

error([' Unknown request ''' flag '''.']);

end

end

Тогда решение системы с помощью решателя ode23 реализуется следующими командами:

» [T.Y] = ode23(@vdp.[0 20]. [2 0]);

Еще проще работать с решателями нового поколения. Рассмотрим систему уравнений: y'+abs(y)=0; y(0)=0; у(4)=-2.

Для решения в пределах отрезка [0; 4] с помощью bvp4c достаточно привести эту систему к виду: y'=-abs(y), y(0)=0; у(4)+2=0. Затем -создаем две ode-функции: twoode и twobc в разных m-файлах:

function dydx = twoode(x,у) 

dydx = [ у(2)

-abs(yd))];

function res = twobc(ya.yb) res = [ ya(l)

yb(l) + 2];

Теперь наберите в командной строке type twobvp и посмотрите само решение уравнения, которое содержится в уже имеющемся в системе файле twobvp. А исполнив команду twodvp, можно наблюдать результат решения в виде графиков. В решении вы найдете структуру узлов начальной сетки решения, которая поясняется ниже.

solinit — это структура узлов начальной сетки решения (в любой шкале), но такая, что solinit.x=a, solinit.x - b. И функция у, и функция у' должны быть непрерывны на участке [а b]. Дотадка для начальной итерации so1imt=bvpi-mt(x,yinit.params) в bvp4c отличается тем, что ваше начальное представление о функции у yinit можно вводить не только в виде вектора, но и как символьную функцию.

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

 

Теги MatLab САПР


    Вы должны авторизоваться, чтобы оставлять комментарии.

    При использовании материалов данного сайта прямая и явная ссылка на сайт radiomaster.ru обязательна. 0.1743 s