logo
Пос_бник АМО

Практичне заняття 9. Розв’язування системи Ван-дер-Поля в системі matlab.

Відомий голандський фізик Балтазар Ван-дер-Поль (B. Van-der-Pol) у 20-тих роках минулого століття запропонував вдалу математичну модель лампового генератора періодичних електричних коливань, що отримала назву рівняння Ван-дер-Поля:

d2y/dt2 – μ(1–y2)∙dy/dt + ω2y=0; (9.9) де: μ(1–y2) – нелінійний коефіцієнт втрат, що залежить від y; ω – кругова частота власних коливань генератора.

Рівняння Ван-дер-Поля широко використовується для моделювання періодичних коливань у різних системах живої та неживої природи.

Д

dy1/dt = y2;

dy2/dt = μ(1–y12)∙y2 – ω2y1.

иференціальне рівняння другого порядку (9.9) можна записати як еквівалентну систему двох диференціальних рівнянь першого порядку у формі Коші (дивись (9.3)):

(9.10)

Розглянемо, як розв’язувати систему Ван-дер-Поля (9.10) у системі MATLAB. Задамо спочатку значення параметрів системи Ван-дер-Поля. Нехай параметр ω дорівнює одиниці. Параметр μ визначає жорсткість системи: чим більше μ, тим більша жорсткість. Нехай для жорсткої системи μ=200, а для нежорсткої μ=0.2.

Текст MATLAB-програми розв’язування системи Ван-дер-Поля наведено нижче.

%****************************************************************************

% Solving Van-der-Pol system:

% dy1/dt = y2; dy2/dt = mu*(1-y1^2)*y2 - y1;

%****************************************************************************

y0=[2, 0]; tlimit=[0, 50]; %tlimit=[0, 500];

options = odeset('Stats','on');

[t,y]=ode45(@vdpe,tlimit,y0,options); %Explicit Runge-Kutta metod

%[t,y]=ode23s(@vdpe,tlimit,y0,options); %Implicit Gear metod

plot(t,y(:,1),'.-');

% Content of the file vdpe.m

function dydt=vdpe(t,y)

% dy1/dt = y2; dy2/dt = mu*(1-y1^2)*y2 - y1;

dydt=[ y(2); 0.2*(1-y(1)^2)*y(2) - y(1) ];

% dydt=[ y(2); 200*(1-y(1)^2)*y(2) - y(1) ];

Перші оператори програми задають початкові значення змінних y0 та часовий інтервал розв’язування tlimit. Далі задано таке значення змінної options, щоб після розв’язування рівнянь виводились підсумкові результати. Подальше звертання до функції розв’язування рівнянь явним методом Рунге-Кутта ode45 створює вектор значень часового аргумента t та матрицю y, що містить вектори значень змінних y1 та y2. Аргументами функції ode45 є: звертання до файлу з іменем vdpe.m, в якому описана система Ван-дер-Поля; інтервал розв’язку tlimit; початкове значення вектора змінних y0; змінна options, що зумовлює вивід у командне вікно підсумкових результатів розв’язування (дивись таблицю 3). Часовий графік змінної y1 виводить у графічне вікно функція plot з позначенням обчислених кроків точками (дивись рис. 25). Аналогічне звертання до функції ode23s розв’язує систему неявним методом Гіра. Власне систему Ван-дер-Поля описує функція vdpe у файлі з іменем vdpe.m.

В тексті програми значення параметра μ=0.2 (mu) відповідає нежорсткій системі Ван-дер-Поля. Щоб перейти до розв’язування жорсткої системи, треба задати μ=200 і параметр tlimit=[0, 500] (дивись рис. 26). Відповідні оператори є в тексті програми, тільки позначені символом коментаря %.

Таблиця 3. Підсумкові результати розв’язування системи Ван-дер-Поля.

Нежорстка система, метод Рунге-Кутта.

72 successful steps

16 failed attempts

529 function evaluations

0 partial derivatives

0 LU decompositions

0 solutions of linear systems

Нежорстка система, метод Гіра.

302 successful steps

60 failed attempts

1632 function evaluations

302 partial derivatives

362 LU decompositions

1086 solutions of linear systems

Жорстка система, метод Рунге-Кутта.

54860 successful steps

3652 failed attempts

351073 function evaluations

0 partial derivatives

0 LU decompositions

0 solutions of linear systems

Жорстка система, метод Гіра.

586 successful steps

17 failed attempts

2966 function evaluations

586 partial derivatives

603 LU decompositions

1809 solutions of linear systems

Лабораторна робота 9. Розв’язування системи Ван-дер-Поля в системі MATLAB.

1.  Набрати в системі MATLAB та відлагодити текст програми, що розв’язує систему Ван-дер-Поля.

2.  Отримати розв’язки нежорсткої та жорсткої систем методами Рунге-Кутта та Гіра (рис. 25 та рис. 26).

3.  Порівняти підсумкові результати розв’язування та зробити висновки щодо доцільності використання кожного з методів (таблиця 3).

4.  Пояснити всі оператори MATLAB-програми.

Контрольні завдання до розділу 9

1. Чому єдиний розв’язок звичайного диференціального рівняння існує лише за початкових умов?

2. Виведіть ітераційну формулу метода Ейлера.

3. Поясніть проблему жорстких звичайних диференціальних рівнянь.

4. Запишіть формулу неявного метода Ейлера.

Рекомендована література

1. Фельдман Л. П., Петренко А. І., Дмитрієва О. А. Чисельні методи в інформатиці. Підручник. – К., 2006. – 480 с.

2. Чабан Василь. Чисельні методи. Навчальний посібник.– Львів, 2001. – 186 с.

3. Д. Каханер, К. Моулер, С. Неш. Численные методы и программное обеспечение. Пер. с англ. – М., 1998. – 575 с.

4. А. А. Самарский. Введение в численные методы. – М., 1982. – 272 с.

5. В. Дьяконов, В. Круглов. Математические пакеты расширения MATLAB. Спец. справочник. СПб, 2001. – 480 с.

Алфівітний покажчик термінів та власних імен.

Алгоритмічні мови – 6.

Графічна інтерпретація розв’язування СЛАР – 13, 16.

Жорсткі системи диференціальних рівнянь – 74, 75.

Звичайні диференціальні рівняння – 70.

„Золоте січення” – 56.

Інтерполяція поліноміальна – 22.

Математичне програмування – 54.

Матриця Вандермонда – 19, 23.

Мінімум глобальний та локальний – 53.

Модель задачі словесна, математична – 5.

Найменших квадратів метод – 16.

Некоректна математична задача – 37.

Некоректність обчислення похідних – 38.

Обумовленість СЛАР – 13.

Рунге функція, Рунге проблема – 23.

Сплайн – 28.

– – апроксимаційний – 29, 39.

– – інтерполяційний – 28, 39.

Степеневий поліном – 5, 23.

– – апроксимаційний – 24, 38.

– – інтерполяційний – 23, 24, 37.

Теорема Вейерштраcса – 23.

Умова існування єдиного розв’язку СЛАР – 13.

Штрафних функцій метод – 63.

Якоб’ян – 50, 74.

Адамар Жак-Саломон (Hadamard) – 37.

Ван-дер-Поль Балтазар (B. Van-der-Pol) – 75.

Вейерштраcс Карл (Carl Weierstrass) – 23.

Гаусс, Карл Фрідріх (Carl Friedrich Gauss) – 14, 16, 18.

Да Вінчі Леонардо (Leonardo da Vinci) – 56.

Данціг Джордж (Dantzig) – 67.

Евклід (Eνκλειδηζ, Euclid) – 56.

Ейлер Леонард (Leonhard Euler) – 72.

Канторович Леонід Віталійович – 59, 67.

Ковалевська Софія – 23.

Коші Огюстен (Augustin Cauchy) – 70.

Купманс Тьялінг (Koopmans) – 67.

Левер’є Урбен (Le Verrier), Адамс Джон (Adams) – 18.

Лейбніц Готфрід (Gottfried Wilhelm von Leibniz) – 35.

Нейман, Джон фон (John von Neumann) – 4.

Ньютон Ісаак (Isaak Newton) – 6, 35, 38, 45.

Піфагор (Πυθαγορασ, Pythagoras) – 56.

Рунге Карл (Runge) – 23, 76.

Чебишев Пафнутій – 23.

Якобі Карл (Carl Jacobi), Якобі Борис Семенович (Moritz Jacobi) – 50.