МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет «Львівська політехніка»
Диференціальні рівняння
з частинними похідними.
Метод сіток
Завдання та методичні рекомендації
до лабораторної роботи № 11
з курсу «Чисельні методи»
для базового напрямку 040204 «Прикладна фізика»
Затверджено
на засіданні кафедри
обчислювальної математики та програмування
Протокол № 5 від 30.01.2012 p.
ЛЬВІВ – 2011
Диференціальні рівняння з частинними похідними. Метод сіток. Завдання та методичні рекомендації до лабораторної роботи № 11 з курсу «Чисельні методи» для базового напрямку 040204 «Прикладна фізика» / Укл. Я.М.Глинський, Н.М.Гоблик, З.О.Гошко, В.А.Ряжська, 2012. – 19 с.
Укладачі: Глинський Я.М., канд. фіз.-мат. наук, доц.
Гоблик Н.М., ст. викл.
Гошко З.О., асистент
Ряжська В.А., канд. фіз.-мат. наук, доц.
Відповідальна за випуск Ряжська В.А., канд. фіз.-мат. наук, доц.
Рецензент доктор фіз.-мат. наук, проф. Чабанюк Я.М.
Передмова
У методичних вказівках розглянуто методи розв’язування диференціальних рівнянь в частинних похідних, які задовольняють початковим умовам.
Методичні вказівки містять короткі теоретичні відомості, приклади розв’язування крайових задач еліптичного, параболічного та гіперболічного типів для диференціальних рівнянь в частинних похідних за допомогою методу сіток (методу скінченних різниць), а також індивідуальні завдання для самостійної роботи студентів. Приклади розв’язані як вручну, так і у середовищі MatLab
Методичні вказівки призначені для студентів базового напрямку 040204 «Прикладна фізика» і укладені відповідно до робочої програми курсу «Чисельні методи».
1. Мета роботи
Мета роботи – навчитись знаходити розв’язок диференціального рівняння в частинних похідних, яке задовольняє початковим умовам, за допомогою методу сіток (методу скінченних різниць).
2. Теоретичні відомості
Диференціальне рівняння в частинних похідних другого порядку з двома незалежними змінними в загальному випадку має вигляд
де
– незалежні змінні,
– шукана функція,
– частинні похідні.
Рівняння першого степеня щодо шуканої функції і всіх її похідних, яке не містить їх добутків, називають лінійним. Таке рівняння можна записати у вигляді
де коефіцієнти
можуть залежати лише від х
та у.
Якщо коефіцієнти не залежать від х та у, то таке рівняння називають лінійним диференціальним рівнянням з постійними коефіцієнтами.
Для повного опису фізичного процесу потрібно крім самого рівняння з частинними похідними задати початковий стан процесу (початкові умови) і режим на границі області (граничні умови). Початкові та граничні умови дають змогу визначити єдиний розв’язок диференціального рівняння.
Розрізняють три типи лінійних диференціальних рівнянь:
еліптичного типу (
);параболічного типу (
);гіперболічного типу (
).
Відшукання розв’язку лінійного диференціального рівняння в частинних похідних методом сіток можна поділити на декілька етапів:
дискретизація області (побудова сітки);
дискретизація рівняння (заміна частинних похідних їх скінченними різницями);
дискретизація граничних і початкових умов;
визначення значення функції у вузлах сітки.
Побудова сітки
Розглянемо один із простіших способів побудови сітки.
Нехай на площині
є деяка область
з границею Г. Побудуємо на площині дві
сім’ї паралельних прямих
точки перетину цих прямих називають вузлами сітки.
Д
ва
вузли називають сусідніми,
якщо вони віддалені один від одного на
відстань кроку у відповідному напрямку.
Сукупність сусідніх з вузлом
вузлів
утворюють
п’ятиточкову зірку з центром в точці
Вузол називають внутрішнім вузлом, якщо всі вузли його зірки лежать в області + Г.
Вузол називають граничним вузлом, якщо хоча б один із вузлів зірки не належить області + Г.
Значення шуканої
функції у вузлах сітки позначатимемо
.
Дискретизація рівняння
В кожному внутрішньому
вузлі
замінимо
частинні похідні скінченними різницями,
тобто
В граничних точках слід використовувати формули
Задача Діріхле
Нехай задано рівняння Пуассона
,
яке на межі
області
задовольняє граничні умови
Таку крайову задачу називають задачею Діріхле.
Побудувавши сітку
Нехай
Замінивши частинні похідні скінченними
різницями, отримаємо рівняння
Підставляючи в це рівняння конкретні значення i, j отримаємо систему лінійних алгебраїчних рівнянь, яку розв’язуємо одним із відомих методів.
Якщо
,
то таке рівняння називають рівнянням
Лапласа.
Приклад 1. Розв’язати граничну задачу
,
Р
озв’язування.
Маємо
Нехай
Проведемо дискретизацію області та
порахуємо значення функції в граничних
вузлах. З граничної умови
отримаємо
,
,
,
,
;
з
граничної умови
будемо мати
,
,
,
,
;
з
граничної умови
будемо мати
,
,
,
,
;
з останньої граничної умови :
,
,
,
,
.
Значення у внутрішніх вузлах визначимо за формулою
Отже,
Складемо систему з дев’яти рівнянь. Отримаємо
,
Розв’язавши систему, отримаємо
,
,
,
,
,
,
,
,
.
Отже, розв’язком даної задачі буде (значення функції у вузлах сітки)
Задача теплопровідності
Розглянемо рівняння параболічного типу
яке задовольняє початкову умову
та граничні умови
,
,
де
Класичним прикладом такої задачі є задача теплопровідності або дифузії.
Зауваження.
Якщо зробити заміну
то отримаємо рівняння
яке і розглядатимемо далі.
Побудуємо сітку
та дискретизуємо початкову та граничні
умови. Отримаємо
,
,
.
Я
кщо
для дискретизації рівняння скористатись
правими різницями, то отримаємо
скінченно-різницеве рівняння
Тоді
Побудовану схему називають явною скінчено-різницевою схемою.
Зауваження. Для того, щоб явна скінченно-різницева схема була стійка та збігалась до розв’язку необхідно, щоб для вибраних кроків виконувались нерівності
Я
кщо
для дискретизації рівняння скористатись
лівими різницями, то отримаємо
скінченно-різницеве рівняння
Тоді
Таку схему називають неявною скінчено-різницевою схемою.
Якщо вибрати кроки
так, щоб
,
то у випадку явної схеми будемо мати
а у випадку неявної –
Якщо для явної
схеми вибрати
,
то отримаємо
Приклад 2. Розв’язати рівняння методом сіток
,
Розв’язання.
Виберемо крок по
осі х
і нехай
Отже,
Тоді скінченно-різницеве рівняння буде мати вигляд
Порахуємо значення функції в граничних вузлах.
З початкової умови будемо мати
З
граничної умови
отримаємо
,
,
,
,
;
a
з граничної умови
будемо мати
,
,
Обчислимо внутрішні значення
Результати обчислень значення функції занесемо в таблицю:
|
i |
0 |
1 |
2 |
3 |
4 |
j |
xi tj |
0,0 |
0,5 |
1,0 |
1,5 |
2,0 |
0 |
0,000 |
1,000 |
1,000 |
1,000 |
1,000 |
1,000 |
1 |
0,125 |
1,125 |
1,000 |
1,000 |
1,000 |
1,125 |
2 |
0,250 |
1,250 |
|
1,000 |
|
1,250 |
3 |
0,375 |
1,375 |
1,125 |
1,063 |
1,125 |
1,375 |
4 |
0,500 |
1,500 |
1,219 |
1,125 |
1,219 |
1,500 |
Розв’язана гранична задача описує розподіл температури в однорідному стержні довжиною 2, а отримані результати - характер охолодження стержня з бігом часу.
Розв’язання в середовищі MATLAB
Програма розв’язування рівняння теплопровідності складається з 4-х файлів:
1)файл m_sitok.m
function u=m_sitok(a,b,t0,tk,h1,h2,f1,f2,tau)
%розв'язування рівняння теплопровідності (метод сіток -явна
%скінчено-різнецева схема)
%a -початкове значення х
%b - кінцеве значення х
%t0 - початкове значення t
%tk - кінцеве значення t
%h1- крок по x
%h2 - крок по t
%f1 -гранична умова в точці а (рядкова змінна -ім'я файл-функції)
%f2-гранична умова в точці b(рядкова змінна -ім'я файл-функції)
%tau - початкова умова (рядкова змінна -ім'я файл-функції)
if h2/h1^2>0.5
error('Не виконуються умови збіжності, змініть крок')
end
x=a:h1:b;
t=t0:h2:tk;
J=length(x);
N=length(t);
u=zeros(N,J);
%обчислення значень функції в граничних вузлах
for k=1:J
u(1,k)=feval(tau,x(k));
end
for k=1:N
u(k,1)=feval(f1,t(k));
u(k,J)=feval(f2,t(k));
end
%обчислення значень функції у внутрішніх вузлах
s=h2/h1^2;
for k=1:N-1
u(k+1,2:J-1)= s*(u(k,3:J)+u(k,1:J-2))+(1-2*s)*u(k,2:J-1);
end
2)файл f1.m – функція, яка описує граничну умову при x=a
function y=f1(t)
y=t+1;
3)файл f2.m – функція, яка описує граничну умову при x=b
function y=f2(t)
y=t+1;
4)файл tau.m– функція, яка описує початкову умову
function y=tau(x)
y=1;
Виклик програми:
>> h1=0.5;
>> h2=0.125;
>> a=0;
>> b=2;
>> t0=0;
>> tk=0.5;
>> u=m_sitok(a,b,t0,tk,h1,h2,'f1','f2','tau')
u =
1.0000 1.0000 1.0000 1.0000 1.0000
1.1250 1.0000 1.0000 1.0000 1.1250
1.2500 1.0625 1.0000 1.0625 1.2500
1.3750 1.1250 1.0625 1.1250 1.3750
1.5000 1.2188 1.1250 1.2188 1.5000
Хвильове рівняння
Розглянемо рівняння гіперболічного типу
яке задовольняє початкові умови
,
та граничні умови
,
, де
Класичним прикладом
такої задачі є задача коливання струни
довжиною
,
з рухомими кінцями, для якої відомий її
стан в початковий момент часу
.
Зауваження.
Якщо зробити заміну
то отримаємо рівняння
яке і розглядатимемо далі.
Виберемо крок по
та по
і побудуємо
сітку
Дискретизуємо початкові та граничні
умови. Отримаємо
,
,
, .
Замінимо в заданому рівнянні частинні похідні скінченними різницями. Отримаємо рівняння
Звідси
Побудовану схему називають явною скінчено-різницевою схемою.
Зауваження. Для того, щоб різницева схема була стійка та збігалась до розв’язку необхідно, щоб для вибраних кроків виконувались нерівності
Якщо вибрати кроки
так, щоб
,
то будемо мати
Приклад 3. Методом сіток розв’язати рівняння
,
Розв’язання.
Виберемо рівні кроки
.
Тоді скінченно-різницеве рівняння буде мати вигляд
Порахуємо значення функції в граничних вузлах.
З
початкової умови
будемо мати (значення першого рядка
таблиці)
Дискретизуємо другу початкову умову:
З останньої формули будемо мати (значення першого рядка таблиці)
З
граничної умови
отримаємо (значення першого стовпця
таблиці)
,
,
,
,
;
a з граничної умови
будемо мати (значення останнього стовпця
таблиці)
,
,
Обчислимо значення функції у внутрішніх вузлах. Значення третього рядка таблиці:
Обчислимо значення четвертого рядка таблиці
Аналогічно обчислюємо значення в наступних рядках.
Результати обчислень значення функції занесемо в таблицю:
|
i |
0 |
1 |
2 |
3 |
4 |
j |
xi tj |
0,00 |
0,25 |
0,50 |
0,75 |
1,0 |
0 |
0,00 |
0,00 |
0,25 |
0,50 |
0,75 |
1,00 |
1 |
0, 25 |
0,25 |
0,00 |
0,75 |
0,50 |
1,25 |
2 |
0,50 |
0,50 |
|
0,00 |
|
1,50 |
3 |
0,75 |
0,75 |
0,50 |
1,25 |
1,00 |
1,75 |
4 |
1,00 |
1, 00 |
1,25 |
1,50 |
1,75 |
2,00 |
Розв’язання в середовищі MATLAB
Програма розв'язування хвильового рівняння складається з 5-и файлів:
1) файл m_sitok2.m
function u=m_sitok2(a,b,t0,tk,h1,h2,f1,f2,tau,tau1)
%розв'язування хвильового рівняння (метод сіток -явна
%скінчено-різнецева схема)
%a -початкове значення х
%b - кінцеве значення х
%t0 - початкове значення t
%tk - кінцеве значення t
%h1- крок по x
%h2 - крок по t
%f1 -гранична умова в точці а (рядкова змінна -ім'я файл-функції)
%f2-гранична умова в точці b(рядкова змінна -ім'я файл-функції)
%tau - початкова умова (рядкова змінна -ім'я файл-функції)
%tau1 - початкова умова - похіднa шуканої функції за змінною t(рядкова змінна -ім'я файл-функції)
if (h2/h1)^2>1
error('Не виконуються умови збіжності, змініть крок')
end
x=a:h1:b;
t=t0:h2:tk;
J=length(x);
N=length(t);
u=zeros(N,J);
%обчислення значень функції в граничних вузлах
for k=1:J
u(1,k)=x(k);
end
for k=1:J
u(2,k)=u(1,k)+h2*feval(tau1,k-1);
end
for k=3:N
u(k,1)=feval(f1,t(k));
u(k,J)=feval(f2,t(k));
end
%обчислення значень функції у внутрішніх вузлах
s=(h2/h1)^2;
for k=3:N
u(k,2:J-1)= s*(u(k-1,3:J)+u(k-1,1:J-2))+2*(1-s)*u(k-1,2:J-1)-u(k-2,2:J-1) ;
end
2) файл f1.m – функція, яка описує граничну умову при x=a
function y=f1(t)
y=t;
3) файл f2.m – функція, яка описує граничну умову при x=b
function y=f2(t)
y=t+1;
4) файл tau.m– функція, яка описує початкову умову
function y=tau(x)
y=x;
5) файл tau1.m – функція, яка описує початкову умову – похідну шуканої функції за змінною t
function y=tau1(x)
y=cos(pi*x);
Виклик програми:
>> a=0;
>> b=1;
>> t0=0;
>> tk=1;
>> h1=0.25;
>> h2=0.25;
>> u=m_sitok2(a,b,t0,tk,h1,h2,'f1','f2','tau','tau1')
u =
u =
0 0.2500 0.5000 0.7500 1.0000
0.2500 0 0.7500 0.5000 1.2500
0.5000 0.7500 0 1.2500 1.5000
0.7500 0.5000 1.2500 1.0000 1.7500
1.0000 1.2500 1.5000 1.7500 2.0000
