Как решать дифференциальные уравнения в матлабе

от admin

Модуль-3-210700 / 2Дисциплина ВВЕДЕНИЕ В МАТЕМАТИЧЕСКИЕ ППП-210700 / Раздел-05-ППП-MatLab / Учебное пособие / Тема-05-05-MatLab

В MatLab имеется ряд функций для решения задачи Коши. Одна из них — ode45 — использует метод Рунге-Кутты четвёртого-пятого порядка точности с автоматическим выбором размера шага.

Обращение к ode45 выполняется следующим образом

Входные параметры процедуры ode45( ):

ODEFUN — имя функции (в виде строчной переменной), задающей правую часть системы дифференциальных уравнений. Уравнения должны быть записаны в нормальной форме u’ = ODEFUN(T,Y),где u’ — вычисляемый вектор-столбец производных; TSPAN= [T0 TFINAL] — вектор, задающий интервал изменения независимой переменной;T0 — начальная точка;

TFINAL — последнее значение аргумента, при котором завершается расчёт; Y0 — вектор начальных значений зависимых переменных.

Выходные параметры ode45( ):

T — вектор, содержащий отсчёты аргумента в точках решения;

Y — массив, содержащий вычисленные значения u и u’ в точках, соответствующих отсчетам независимой переменной в T.

Требования к точности и другие параметры численного решения задаются в MatLab по умолчанию. Изменить эти настройки позволяет дополнительный аргумент OPTIONS.

Пример 4.5-1. Решить дифференциальное уравнение второго порядка,

описывающее колебания в нелинейной системе (например, автогенераторе), известное как уравнение Ван-дер-Поля: u» + (u2 — b) u’ + u = 0 ,где u, u’ и u» — функция, её первая и вторая производные по времени t, b — произвольный параметр. Параметр b определяет потери в системе, а слагаемое u² в скобках — её нелинейные свойства (например, рабочие характеристики активного элемента автогенератора).

Данное дифференциальное уравнение второго порядка можно привести к системе двух дифференциальных уравнений первого порядка

y1′ = ( 1 –(y2)2 ) y1 — y2 , y2′ = y1 ,где y1=u’ и y2=u, а параметр b принят равным единице.

Для выполнения расчётов воспользуемся внешней функцией vdp1( ), записанной в m-файле vdp1.m. Эта функция, вычисляющая правую часть уравнения Ван-дер-Поля, имеет следующий вид:

— Пример 4.5-1

function dydt = vdp1(t,y) dydt = [y(2); (1-y(1)^2)*y(2)-y(1)]

Для получения решения дифференциального уравнения, описываемого функцией vdp1( ) на интервале 0 < t < 20, при начальных условиях y1 = u’ = 2 и y2 = u = 0 следует ввести в MatLab следующую строку:

Пример 4.5-1

[t,y]=ode45(@vdp1,[0 20],[2 0])

На рисунке представлены рассчитанные функцией ode45 и построенные с помощью команды plot зависимости y2(t) ≡ u(t) и y1(t) ≡ u'(t).

График показывает, что с течением времени колебания в системе нарастают. Однако в дальнейшем рост амплитуды колебаний замедляется, и система переходит в устойчивое состояние, описываемое представленными фазовыми кривыми y2 (y1). Кроме рассмотренной функции ode45( )MatLab содержит ряд других функций для решения задачи Коши — ode23( ), ode113(), ode15s(), ode23s(), ode23t(), ode23tb().

Пример 4.5-2.Решить систему дифференциальных уравнений

с начальными условиями

Пример 4.5-2

Интегрирование дифференциального уравнения в MATLAB

где \(g\) — ускорение свободного падения, \(l\) — длина подвеса материальной точки, \(\varphi\) – угол отклонения маятника от вертикали.

Необходимо численно проинтегрировать это уравнение для следующих начальных условий: \[\varphi(0) = 60^<\circ>, \quad \dot<\varphi>(0) = 0.\]

Для того, чтобы в MATLAB численно проинтегрировать дифференциальное уравнения второго порядка, его необходимо привести к системе двух дифференциальных уравнений первого порядка. Для этого введём новую переменную – угловую скорость \(\omega = \dot<\varphi>\), и перепишем запишем следующую систему: \[\begin \dot <\varphi>= \omega, \\ \dot <\omega>= — \frac \sin \varphi. \end\]

Функция правых частей

Полученную систему дифференциальных уравнений можно представить в матричной форме: \[\dot<\mathbf> = f(t, \mathbf)\]

где \(\mathbf\) – вектор состояния системы (матрица-столбец): \[\mathbf = \begin \varphi \\ \omega \end\]

\(f\) – векторная функция векторного аргумента и, может быть, времени. Эту функцию далее будем называть функцию правых частей системы дифференциальных уравнений.

Для интегрирования системы уравнений в MATLAB необходимо создать файл-функцию двух аргументов: времени и вектора состояния. Для рассматриваемого примера дифференциального уравнения:

Запуск процесса численного интегрирования

Для запуска процесса численного интегрирования MATLAB предлагает несколько функций, отличающихся методом используемого численного интегрирования (ode45, ode113, ode23, …). Например, для интегрирования методом Рунге-Кутты 4-го и 5-го порядков с автоматическим выбором шага интегрирования в зависимости от заданной точности используется функция ode45.

Создадим и запустим файл-скрипт main.m со следующим кодом:

Вектор начальных условий q0 содержит начальный угол поворота маятника (первый элемент) и угловую скорость (второй элемент). Этот же порядок следования переменных состояния ожидается в функции правых частей.

Функция ode45 в этом примере записывает результат своей работы в столбец t и прямоугольную матрицу q. В столбце t содержатся моменты времени, для которых получены решения. Первый элемент в этом столбце равен 0 с, последний 2 c. Количество промежуточных значений алгоритм численного интегрирования определяет автоматически, исходя из требований точности интегрирования.

Матрица q содержит результаты интегрирования. Число строк этой матрицы равно числу строк столбца t, а в каждой строке матрицы q(k,:) содержится вектор-строка состояния системы, соответствующий моменту времени t(k).

Далее в файл-скрипте main.m можно построить график зависимости от времени угла отклонения маятника:

Передача в функцию правых частей дополнительных параметров

В написанной выше функции правых частей параметры рассматриваемой механической системы \(g\) и \(l\) были заданы непосредственно в коде функции, что нельзя назвать хорошей практикой программирования, поскольку смешивается код и данные модели. Отделим код модели от её данных, для этого перенесем определение всех параметров системы в главный файл-скрипт main.m, а сами параметры будем передавать в функцию правых частей третьим аргументом. Новое определение функции будет иметь следующий вид:

В функцию правых частей третьим аргументом передаётся структура p, с атрибутами (полями) p.l и p.g, значения которых используются в коде функции. Структуру необходимо создать в главном файл-скрипте main.m:

Функция ode45 ожидает, что первым аргументов будет ссылкой (@) на функцию двух переменных (время и вектор состояния), но новая функция правых частей это функция трех переменных – f(t,q,p). Для адаптации новой функции f используем анонимную функцию-обёртку двух переменных (t, q), которая будет вызывать функцию f, передавая в нее t и q, а также структуру с параметрами системы.

или в одну строчку

Управления точностью численного интегрирования

Для управления точностью интегрирования в функцию ode45 необходимо передать дополнительный параметр (структуру), которая создается при помощи специальной функции odeset. Например, для того чтобы задать относительную погрешность равную \(1 \cdot 10^<-8>\), а абсолютную погрешность \(1 \cdot 10^<-10>\) необходимо вызвать функцию со следующими аргументами:

При численном интегрировании MATLAB будет пытаться выполнить условия \[\varepsilon_i \leq \max(\text \cdot \max(\text(q)), \text),\]

для всех переменных состояния, самостоятельно изменяя шаг интегрирования, где \(\varepsilon_i\) – относительна погрешность вычисления \(i\)-ой переменной состояния.

Точность можно задать для каждой переменной отдельно:

Здесь мы задали относительную погрешность \(10^<-7>\) для угла и \(10^<-9>\) для угловой скорости, и абсолютную погрешность \(10^<-9>\) для угла и \(10^<-8>\) для угловой скорости. В этом случае для каждой \(i\)-ой переменной состояния будет выполнятся условие: \[\varepsilon_i \leq \max(\text_i \cdot \text(q_i)), \text_i)\]

Для запуска численного интегрирования с заданной точностью необходимо передать структуру options в функцию ode45 последним аргументом:

Моделирование дифференциальных уравнений в среде matlab & Simulink Текст научной статьи по специальности «Математика»

Пакет программ MatLab предназначен для аналитического и численного решения различных математических задач, а также для моделирования сложных электротехнических и электромеханических систем. Одним из инструментальных средств является среда MatLab, которая оснащена мощными возможностями структурного, объектно-ориентированного и визуального программирования (Simulink). Система инженерных и научных расчётов MatLab (Matrix Laboratory матричная лаборатория) способна решать задачи линейной алгебры, интегральные и дифференциальные уравнения, выполнять преобразования Лапласа и Фурье, Z-преобразования. Предусмотрено решение статистических и оптимизационных задач. Благодаря программе Simulink имеется возможность анализа и синтеза современных систем управления во временной и частотной областях. Графические возможности пакета позволяют строить двухи трёхмерные графики в различных координатах. При решении дифференциальных уравнений, в частности, для дифференциальных уравнений в частных производных применять Simulink и инструментарий Partial diferencial Equations Toolbox [3, 4]. Вложенный в него метод конечных элементов (finite elements method FEM) позволяет моделировать решение задачи на плоскости или в пространстве.

Похожие темы научных работ по математике , автор научной работы — Бадасян Тигран Смбатович

MODELING OF DIFFERENTIAL EQUATIONS ENVIRONMENT MATLAB & SIMULINK

The MatLab software package is designed for analytical and numerical solutions of various mathematical problems, as well as for modeling complex electrical and electromechanical systems. One of the tools is the MatLab environment, which is equipped with powerful structural, object-oriented and visual programming (Simulink) capabilities. MatLab (Matrix Laboratory) is capable of solving linear algebra problems, integral and differential equations, performing Laplace and Fourier transforms, and Z-transformations. The solution of statistical and optimization problems is provided. Thanks to the Simulink program, it is possible to analyze and synthesize modern control systems in the time and frequency domains. The graphical capabilities of the package allow you to build two and three-dimensional graphs in different coordinates. When solving differential equations, in particular, for partial differential equations, use Simulink and the Partial diferencial Equations Toolbox [3,4]. The finite element method (FEM) embedded in it allows you to simulate a solution to a problem on a plane or in space.

Текст научной работы на тему «Моделирование дифференциальных уравнений в среде matlab & Simulink»

МОДЕЛИРОВАНИЕ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ В СРЕДЕ

MATLAB & SIMULINK Бадасян Т.С. Email: Badasyan1166@scientifictext.ru

Бадасян Тигран Смбатович — магистрант, факультет прикладной математики и физики, Национальный политехнический университет Армении, г. Ереван, Республика Армения

Аннотация: пакет программ MatLab предназначен для аналитического и численного решения различных математических задач, а также для моделирования сложных электротехнических и электромеханических систем. Одним из инструментальных средств является среда MatLab, которая оснащена мощными возможностями структурного, объектно-ориентированного и визуального программирования (Simulink).

Система инженерных и научных расчётов MatLab (Matrix Laboratory — матричная лаборатория) способна решать задачи линейной алгебры, интегральные и дифференциальные уравнения, выполнять преобразования Лапласа и Фурье, Z-преобразования. Предусмотрено решение статистических и оптимизационных задач. Благодаря программе Simulink имеется возможность анализа и синтеза современных систем управления во временной и частотной областях. Графические возможности пакета позволяют строить двух- и трёхмерные графики в различных координатах. При решении дифференциальных уравнений, в частности, для дифференциальных уравнений в частных производных применять Simulink и инструментарий Partial diferencial Equations Toolbox [3, 4]. Вложенный в него метод конечных элементов (finite elements method FEM) позволяет моделировать решение задачи на плоскости или в пространстве.

Ключевые слова: среда, сигнал, блок интегрирования, линейное уравнение, однородное уравнение.

MODELING OF DIFFERENTIAL EQUATIONS ENVIRONMENT

MATLAB & SIMULINK Badasyan T.S.

Badasyan Tigran Smbatovich — Undergraduate Student, FACULTY OF APPLIED MATHEMATICS AND PHYSICS, NATIONAL POLYTECHNIC UNIVERSITY OF ARMENIA, YEREVAN, REPUBLIC OF ARMENIA

Abstract: the MatLab software package is designed for analytical and numerical solutions of various mathematical problems, as well as for modeling complex electrical and electromechanical systems. One of the tools is the MatLab environment, which is equipped with powerful structural, object-oriented and visual programming (Simulink) capabilities.

MatLab (Matrix Laboratory) is capable of solving linear algebra problems, integral and differential equations, performing Laplace and Fourier transforms, and Z-transformations. The solution of statistical and optimization problems is provided. Thanks to the Simulink program, it is possible to analyze and synthesize modern control systems in the time and frequency domains. The graphical capabilities of the package allow you to build two and three-dimensional graphs in different coordinates. When solving differential equations, in particular, for partial differential equations, use Simulink and the Partial diferencial Equations Toolbox [3,4]. The finite element method (FEM) embedded in it allows you to simulate a solution to a problem on a plane or in space. Keywords: medium, signal, integration unit, linear equation, homogeneous equation.

Введение. Задачи различных отраслей часто сводятся к дифференциальным уравнениям или системам дифференциальных уравнений [1, 2]. Часто возможно бывает решить дифференциальные уравнения аналитически, однако немало случаев, когда уравнение не

Читать:
Как найти показания вольтметра

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

Целью статьи является демонстрация возможностей пакета Simulink при компьютерном моделировании дифференциальных уравнений, имитационного моделирования динамических систем. Simulink — один из самых мощных компонентов числового пакета МАТЬАВ, предназначенный для компьютерного моделирования и анализа систем, поведение которых зависит от времени [3, 4].

Моделирование обыкновенных дифференциальных уравнений первого порядка.

Исследование, как правило, начнем с простейшего типа — уравнение вида 4у = f (х) с

дискретными переменными, интегральным уравнением которого будет у = J f (х)4х + у(0) . Удовлетворяя начальному условию у(x0 ) = У0 частное

решение будет представлено в виде у = J f (х)4х + у(0) . В частном случае, если

уравнение имеет вид

то частное решение, удовлетворяющее начальному

условию у(х0 ) = Уо , будет иметь вид у = а(х — х0 ) + у0 , которое является уравнением прямой, проходящей через точку (Хо, Уо) на плоскости Я2. Модель s

уравнения 4У = f (х) будет иметь следующий вид (рис.1):

Рис. 1. Решение дифференциального уравнения: структурная схема в Simulink

Далее рассмотрим линейное дифференциальное уравнение первого порядка вида

= р(х) у + / (х). Модель s задачи будет иметь следующий вид (рис. 2):

Рис. 2. Решение дифференциального уравнения первого порядка: структурная схема в Simulink

Основным конструктивным элементом модели линейного уравнения является блок интегрирования, который посредством обратной связи получает на входе решение уравнения. В блоке Product сигнал y(x) умножается на p(x), результат передается блоку Sum для суммирования с f(x).

Обсудим более подробно этапы создания схемы, используемые блоки содержатся в библиотеках. Ramp (библиотека Sources) дает непрерывный линейный сигнал. Sum (библиотека Math Operations) — в параметрах выбираем нужные действия: сложение или вычитание. Product (библиотека Math Operations) — умножает входящие сигналы. Integrator (библиотека Continuous) — выполняет интегрирование входного сигнала. Scope, Graph (библиотека Sinks) — строит графики сигнала и производного сигнала в зависимости от времени: Graph (библиотека Sinks) — Возвращает фазовый сигнал производной, то есть зависимость значения функции от производной функции в техже точках. В меню Simulation редактора выберем Configuration Parameters. В открывшемся окне выберем Solver и введем следующие параметры. Start Time: 0, Stop Time: 10.0, Type: Variable-step, Solver: ode45 (Dormand-Prince). Для проверки результата возьмем программный код той же задачи в среде Matlab, с применением функции dsolve. Очевидно, что в обоих случаях графики совпадут. syms x y

Exp = '2*x/(1+xA2)*y+1+xA2'; % определение правой части уравнения Expression = ['Dy = ',char(Exp)];

y = dsolve(Expression,'y(0)=0','x'); % решение дифференциальногоуравнения Message = ['y = ',char(y)]; pretty(y); % выводит решение уравнения grid on; hold on; % строит сетку

xlabel('X axis'); ylabel('Y axis'); % разместить наименование осей x и y x_new = 0:0.1:10; % получает вектор x_new

Cx = symvar(y,1) % функция возвращает количество

y_new = subs(y,,); % создается новый вектор y_new plot(x_new,y_new); Title = ['Itegral Curves of Equation: ',char(Expression)]; title(Title); % название графика

legend(Message); % таблица ссылок графика

Более детально рассмотрим такой мощный инструмент, как механизм сокрытия подсистемы. Механизм сокрытия подсистем позволяет спроектировать подсистему как единный блок, которое хранится в библиотеке, то есть ему можно добавить окно параметров, объекты и справочную систему.

Чтобы скрыть существующую подсистему, нужно сначала выполнить следующие шаги:

■ определить, какие параметры подсистемы использовать в окне будущих пераметров. Определить те параметры, которые надо использовать в подсистеме (Greate subsysten from selection),

■ установить параметр в диалоговом окне,

■ разработать визуализацию блоков,

■ создать комментарии по использованию подсистемы.

Скрытие подсистемы осуществляется посредством редактора Mask Editor. Чтобы запустить редактор скрытия, выберите подсистему скрытия из контекстного меню Diagram, выбрать команду Mask или правой кнопкой мыши открыть окно Explore и выполнить директиву Mask Subsystem for selection. В случае выполнения команды откроется окно редактирования.

Первая из вкладок окна предназначена для отображения подсистем, вторая — для создания окна диалога входных параметров, третья — для инициализации входных параметров, четвертая — для создания окна справки.

Для блоков Fcn и Fcnl модели (см. Рис.2) создадим две подсистемы. С помощью первой подсистемы введем значения a и d, а второй — значения b и с. Отметим часть схемы, которую мы сделаем подсистемой и из меню, открытого правой кнопкой мыши, выполним Edit->Create Subsystem Selection или из главного меню директиву Diagram->Subsystem и Model Reference.

Ниже приведена схема модели и двух подсистем а также структура подсистем (рис. 3).

Рис. 3. Решение дифференциального уравнения: схема модели с двумя подсистемами

Рис. 3-а. Структурная схема подсистемы для ввод параметров а, d

Рис. 3-б. Структурная схема подсистемы для ввод параметров b, c

Теперь организуем ввод параметров a, d, b, и с. Директивой Diagram->Mask->Create Mask. мы можем запустить окно редактирования модели. Выполним двойной щелчок мышью по блоку подсистемы, откроется окно подсистемы и директивой Diagram->Mask->Create Mask. мы можем запустить окно редактирования модели.

Для формирования окна для ввода параметров в окне Dialog box разместим Groop box и два элемента edit. Директивой Apply рассмотрим вид входных окон (Рис. 4-a и Рис. 4-б).

Mask Editor : Subsystem

Icon & Ports] Parameters & Dialog Initialization Documentation

Controls Dialog box

* Parameter [Type Prompt Name

m Edit 0> Checkbox f(x)=a+duA2 DescGroupVar

3-CJ Parameters Conta inerâ

1=3 Popup (flj Radio button "0" Slider hi #1 ЧИ #2 Input Parameter a Input Parameter d a d

Рис. 4-а. Формирование входного окна: для ввода параметров а и d

Mask Editor : Subsystem!

Icon & Ports I Parameters & Dialog [^Initialization Documentation]

S3 Edit Щ Checkbox Popup Radio button "0" Slider

Type Prompt Name

•CJ p(x) = bu(c+uA2) DescGroupVar

ÉO Parametrs Contain er3

[■mm. Input Parameter b b

H3II #2 Input Parameter с с

Рис. 4-б. Формирование входного окна: для ввода параметров b и c

Двойным щелчком мыши по блоку подсистемы открыть окно, созданное директивой Mask, и ввести значения констант (Рис. 5).

Рис. 5. Вид блоков входных параметров: а и d, b и c

Запустив модель, мы получим фазовую траекторию функции, и графики функций ) У () в зависимости от t (Рис. 6).

Рис. 6. Фазовая траектория функции, и графики функций у() и У ()

в зависимости от

Рассмотрим следующее логистическое дифференциальное уравнение первого порядка у'(0 =-3у(/ -1)(1-у(/)). Ниже приведены модель (Рис.7-а) и результат решения (Рис. 7-б).

Рис. 7-а. Структурная схема решения дифференциального уравнения

Рис. 7-б. Результат решения логистического дифференциального уравнения

Здесь использован блок Transport Delay, который задерживает входной сигнал на фиксированное время. В окне настройки параметров блока указывается время задержки сигнала (Time Delay — 1), начальное значение выходного сигнала (Initial input), объем памяти, где будет записан задержанный сигнал (Buffer size — дано в байтах -1024).

Моделирование линейных дифференциальных уравнений второго порядка. Самый

простой вид свободных колебаний задается посредством уравнения

уравнения состоит из двух блоков интегратора, которые интегрируют входной сигнал два раза.

В системе вынужденные колебания задаются в виде уравнения

блоках с обратной связью t (Рис. 8).

= p(x)y + f (x) . S-модель этого уравнения основана на двух интегральных

Рис. 8. Структурная схема дифференциального уравнения вынужденных колебаний Если уравнение вынужденных колебаний, заданно в виде ^ У = р(х) + у(х) имеет

следующую S- модель (Рис. 9):

Рис. 9. Структурная схема дифференциального уравнения вынужденных колебаний для второго

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

вынужденных колебаний имеет вид

В общем случае уравнение

Рассмотрим моделирование задачи свободных и вынужденных колебаний математического маятника.

Если на колебательную систему действуют момент внешней силы и силы трения вязкости, то дифференциальное уравнение, описывающее колебания маятника, может быть записано в следующем виде:

+ 2(—+ с0 sin V = с^в0 sinсt,

где <р — угол отклонения маятника от положения равновесия, t -время, ( -коэффициет затухания, со 0- собственная частота незатухающих колебаний маятника, СО и д0-

соответственно частота и угловая амплитуда момента силы, действующей на маятник.

Из-за нелинейности дифференциального уравнения (1) анализ уравнения аналитическими методами связан с математическими трудностями. Поэтому целесообразно решить уравнение (1) численным методом Runge-Kutta. Приведем схему модели (Рис. 10).

Рис. 10. Решение дифференциального уравнения для математического маятника Переходя к подсистемам, получим (Рис. 11).

Рис. 11. Решение дифференциального уравнения для математического маятника с использованием

Ниже приведены структура подсистем и результат решения (Рис. 12-а и Рис. 12-б).

Рис. 12-а. Структура подсистем

Рис. 12-б. Результат решения

Фазовые траектории затухаю

щих (© — 0) и принудительных (© — 1) колебаний и графики зависимостей ) при

© — 3.13, в — 120, ¡ — 0.4, © — 1, ф) — 400 и ^'(0) — 0.В

р, ©0, ® в0, К0) — 400 и ^'(0) — 0 можно

зависимости от выбора параметров исследовать колебания маятника.

Для сравнения приведем решение задачи в среде Matlab. Обозначим -(1) _ ),

x(2) _ Ф(t) получим вектор-функцию правой части системы уравнений

[х^Х 2Дх(2) ¿9° sin(x(1)) + sin(at)]. Создадим файл-функцию fun.m (function), в которой запишем вектор правой части системы.

function F=kol_fun(t,x) global omegaO thetaO beta omega

F=[x(2); -2*beta*x(2)-omega0*sin(x(1))+omega0*theta0*sin(omega*t)]; end

Создадим файл Ode_45.m (script) и запишем программный код. clc; clear

global omega0 theta0 beta omega

omeg=3.16; omega0=omegA2; theta0=12*pi/180; beta=0.2; omega=1; y0 = [4*pi/180 0]; % вектор начального условия

[t, y]=ode45(@kol_fun,[0 80],y0); % решение системы subplot(2,1,1); plot(t, y(:,1), t, y(:,2), Ъ-.', 'LineWidth', 1) grid on; legend('x(t)','y(t)'); subplot(2,1,2)

plot(y(:,1),y(:,2),'b','LineWidth', 1) % график фазовой траектории

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

У'' = У / x + (У )2 / y + 4y cos x , y(1) = 1 и У (1) = 1 с граничными условиями. Схема модели будет выглядеть следующим образом (Рис. 13).

Рис. 13. Решение нелинейного дифференциального уравнения

Структура и работа модели. В блоке Math Function (библиотека Math Operations) получим y> (t) квадрат значения сигнала и полученный сигнал в блоке Divide разделим на

значение сигнала y(t) и результат отправим в блок Sum. В блоке Dividel производный сигнал функции разделим на значение t и результат отправим в блок Sum. От непрерывного линейного сигнала Ramp в блоке Fcnl получим сигнал 4cos(t), его в блоке Productl

умножим на сигнал y(t) и результат отправим в блок Sum. В результате этих действий на

входе первого блока интегратора получим данное дифференциальное уравнение. Запустим модель и приведем решение (Рис.14). На первом рисунке показана фазовая траектория

функции, на втором графики функций y(t) и y'(t) в зависимости от t.

Рис. 14. Результат решения

Заключение. Таким образом, среда МайаЬ & Simulink позволяет моделировать многопараметрные линейные, нелинейные динамические, управляемые событиями гибридные модельные системы с непрерывным или дискретным временем.

Список литературы /References

1. Филиппов А.Ф. Сборник задач по дифференциальным уравнениям. Ижевск: НИЦ «Регулярная и хаотическая динамика», 2000. 176 стр.

2. Понтрягин А.С. Обыкновенные дифференциальные упражнения. Изд. НАУКА. Москва, 1979.

3. Герман-Галкин С.Г. MATLAB & SIMULINK. Проектирование мехатронных систем на ПК. СПб.: КОРОНА-Век, 2008. 368 с.

4. Трухин М.П. Визуальные средства моделирования систем: метод. разработка для слушателей ФПКП и ПП / сост. М.П. Трухин. Екатеринбург: ГОУ ВПО УГТУ-УПИ, 2006. 51 с.

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

Kromster's user avatar

Из-за того, что у odefun должно быть два аргумента, время и вектор состояния:

Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.13.43306

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Похожие статьи