Лабораторна робота на тему рішення крайових задач в matlab

Одним з поширених способів вирішення двоточкових крайових задач на відрізку [a, b] (коли додаткові умови на рішення накладаються в точках на кінцях відрізка), в тому числі нелінійних, є метод стрільби.

При вирішенні задачі методом стрільби крайова задача зводиться до вирішення задачі Коші, причому відсутні початкові значення задаються вектором параметрів, значення яких і знаходяться "пристрілкою".

У MatLab для того, щоб знайти цей вектор, є опція bvp4c (odefun, bcfun, solinit). Тут odefun - функція правої частини системи диференціальних рівнянь 1-го порядку; bcfun - функція, що обчислює різницю між значенням в граничної точці і точним значенням; solinit - структура з полями solinit.x і solinit.y. Тут x - набір вузлів розбиття відрізка [a, b], причому a = solinit.x (1) і b = solinit.x (end); y - вектор початкових значень y в вузлах x. Ім'я структури може бути будь-яким, але імена полів обов'язково повинні бути x і y. Для завдання структури можна використовувати функцію bvpinit (x, v).

Алгоритм рішення крайової задачі методом стрільби.

Розглянемо більш докладно алгоритм рішення крайової задачі методом стрілянини на прикладі наступної задачі:

Наведемо рівняння системи до системи рівнянь 1-го порядку:

Поставимо це завдання як завдання Коші:

де α - пристрілювальний параметр.

Продифференцируем рівняння системи і граничні умови по параметру α і позначимо. У підсумку отримуємо задачу Коші

Вирішивши це завдання, отримаємо значення y (1) і v (1).

Для знаходження параметра α, що задовольняє граничним умовам вихідної завдання необхідно вирішити нелінійне рівняння

Згідно з методом Ньютона рішення нелінійних рівнянь, значення α k + 1 можна обчислити по ітераційної формулою

де yend = y (1), vend = v (1), а верхній індекс відповідає номеру ітерації. Ітерації припиняються при виконанні умови | αk + 1 - αk | ≤ε, де ε - задана константа.

Приклад рішення крайової задачі в MatLab.

Розглянемо рішення сформульованої вище крайової задачі в MatLab.

Створимо М - файли з функціями ode2 (x, y)

Збережемо отримані файли.

У робочому просторі MatLab створимо структуру solinit початкових даних з 10 точок, рівномірно розподілених на відрізку [1,2] з постійними значеннями y (1) = 2 і y (2) = 9:

Вирішуємо задачу в робочому просторі MatLab:

Після виконання останньої команди з'являється вікно з графіком рішення:

Можна також вирішувати це завдання не в командному вікні, а у вигляді М - файлу:

Після виконання команди Debug => Run або натискання "гарячої клавіші" F5 ​​з'являється графік вирішення.

Вирішити крайові задачі. Вивести графік отриманого рішення.

  1. х²y '' + xy '- y = x²; y (1) = 1.333, y '(3) = 3.
  2. y '' + xy '+ y = 2x; y (0) = 1, y (1) = 0.
  3. y '' + ychx = 0; y (0) = 0, y (2.2) = 1.
  4. y '' + (x - 1) y '+ 3.125y = 4x; y (0) = 1, y (1) = 1.368.
  5. х²y '' - 2y = 0; y (1) -2y '(1) = 0, y (2) = 4.5.
  6. y '' + x²y = -2; y (-1) = 0, y (1) = 0.
  7. -y '' + x²y = (π² / 4 + x²) cos (πx / 2); y (0) = 1, y (1) = 0.