Xreferat.com » Рефераты по математике » Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь

Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь

Міністерство освіти і науки України

Дніпропетровський національний університет ім. Олеся Гончара

Механіко-математичний факультет

Кафедра прикладної газової динаміки і тепломасообміну


Різницевий метод розв'язання крайових задач для

звичайних диференціальних рівнянь


Виконав: студент групи МТ-07-1

Коваленко О.А.

Керівник практики: асистент

Губін О.І.


Дніпропетровськ

2010

Зміст


I. Теоретична частина

I.1. Різницевий метод розв'язання крайових задач для

звичайних диференціальних рівнянь

I.2. Метод прогонки

II. Практична частина

II.1. Формулювання завдання

II.2. Лістинг програми на алгоритмічній мові Turbo Pascal

II.3. Результати обчислень

Висновки

Список використаної літератури

I. Теоретична частина


I.1 Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь


Крайова задача – це задача відшукання часткового розв'язку рівняння


Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь (1)


на відрізку Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь, у якій додаткові умови накладаються на значення функції U(x) і її похідних більш ніж в одній точці цього відрізка. Очевидно, що крайові задачі можливі для рівнянь порядку не нижче другого.

Розглянемо крайову задачу для нелінійного рівняння другого порядку:


Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь (2)


з крайовими умовами першого роду.

Уведемо на [a; b] сітку Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь, яку для спрощення будемо вважати рівномірною. Наближено виразимо другу похідну від розв'язку через значення розв'язку у вузлах сітки Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь наприклад, скористаємося найпростішою апроксимацією:


Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь (3)


Таку апроксимацію можна записати в кожному внутрішньому вузлі сітки xn, Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь Якщо підставити її в рівняння (2), то рівняння стане наближеним; точно задовольняти цьому рівнянню буде вже не шуканий розв'язок U(x), а деякий наближений розв'язок Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь Виконуючи цю підстановку, отримаємо систему нелінійних алгебраїчних рівнянь


Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь (4)

Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь


останні два рівняння апроксимують крайові умови.

Якщо Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь обмежена й неперервна разом зі своїми другими похідними, так, що існує обмежена й неперервнаРізницевий метод розв'язання крайових задач для звичайних диференціальних рівняньРізницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь а також Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь то при Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь різницевий розв'язок рівномірно збігається до точного із другим порядком точності.

Розв'язок системи (4) можна отримати методом послідовних наближень у наступній формі:


Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь (5)

Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь


Тоді для визначення Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь на кожній ітерації виходить лінійна система, розв'язувана алгебраїчною прогонкою. Ітерації (5) збігаються при виконанні умови:


Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь (6)


Умова (6) є достатньою, але вона близька до необхідної: більш складні оцінки показують, що якщо Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь то ітерації (5) можуть розбігатися.

Різницевий метод має свої труднощі, пов'язані в основному з розв'язанням алгебраїчної системи рівнянь. Однак ці труднощі успішно долаються. Метод природно переноситься на рівняння високого порядку, причому трудомісткість обчислень майже не зростає. Його чисельна стійкість звичайно хороша.


I.2Метод прогонки


Найбільш важливим окремим випадком методу Гауса є метод прогонки, застосовуваний до систем лінійних алгебраїчних рівнянь із тридіагональною матрицею. Такі системи звичайно записують у канонічному вигляді:


Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь (7)

Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь


Метод прогонки зводиться до відшукання невідомих Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь з наступних рекурентних співвідношень:


Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь (8)

Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь (9)


Формули (8) є формулами зворотного ходу, а (9) – формулами прямого ходу.

Для початку розрахунку потрібно задати величини Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь і Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь які невідомі. Однак перед цими величинами у формулах стоять множники, рівні нулю. Це дозволяє почати обчислення, поклавши, наприклад Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь

Якщо виконано умову переваги діагональних елементів


Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь (10)


(причому хоча б для одного n має місце нерівність), то у формулах прямого ходу (9) не виникає ділення на нуль, і тим самим вихідна система (7) має єдиний розв'язок. При виконанні умови (10) формули прогонки стійкі щодо похибок округлення й дозволяють успішно розв'язувати системи рівнянь із кількома сотнями невідомих. У практичних розрахунках для добре обумовлених систем типу (7) прогонка часто виявляється досить стійкою навіть при порушенні умови переваги діагональних елементів.

крайова задача різницевий метод

II.Практична частина


II.1 Формулювання завдання


Дано крайову задачу:


Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь

де Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь та Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь


Для цієї задачі необхідно:

застосовуючи різницевий метод одержати наближений розв’язок у вузлах сітки на заданому відрізку;

визначити вузлові значення наближеного розв’язку системи алгебраїчних рівнянь за допомогою метода послідовних наближень у сполученні з методом прогонки

здійснення розрахунків на ЕОМ провести за допомогою програми на алгоритмічній мові Turbo Pascal

представити результати у в табличній і графічній формі;


Вимоги до програмування


Алгоритм розв’язання нелінійної крайової задачі на основі різницевого методу необхідно реалізувати у вигляді програми на мові Turbo Pascal.

Метод прогонки представити в програмах у вигляді окремої процедури.

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

Текст програми не повинен мати числових констант. Рекомендується використовувати тільки змінні.

Для ітераційного циклу при обчисленні наближеного розв’язку нелінійної задачі передбачити ресурс ітерації, при вичерпуванні якого програма повинна повідомляти про розбіжності процесу.


II.2.Лістинг програми на алгоритмічній мові Turbo Pascal


Program LP;

uses crt;

const n=40;

ag=-pi/6;

bg=pi/6;

alfa=1/3;

beta=-1/3;

e=1e-5;

s=4;

var i,k:integer;

h,xi,max:real;

y,y0:array[0..n+1] of real;

a,b,c,d:array[0..n] of real;

ff:text;


function f(u,v:real):real;

var st:real;

begin

if u>0 then st:=exp(ln(u)/3)

else if u<0 then st:=-exp(ln(-u)/3)

else st:=0;

f:=sqr(cos(v))/2+3*st;

end;


procedure Progonka(np:integer; var ap,bp,cp,dp,yp:array of real);

var ip:integer;

ksi,eta:array[0..n+1] of real;

begin

ksi[0]:=0; eta[0]:=0;

for ip:=0 to np do

begin

ksi[ip+1]:=cp[ip]/(bp[ip]-ap[ip]*ksi[ip]);

eta[ip+1]:=(ap[ip]*eta[ip]-dp[ip])/(bp[ip]-ap[ip]*ksi[ip]);

end;

for ip:=np downto 0 do yp[ip]:=ksi[ip+1]*yp[ip+1]+eta[ip+1];

end;


begin

clrscr;

h:=(bg-ag)/n;

a[0]:=0; b[0]:=-1; c[0]:=0; d[0]:=alfa;

a[n]:=0; b[n]:=-1; c[n]:=0; d[n]:=beta;

for i:=1 to n-1 do

begin

a[i]:=1; b[i]:=2; c[i]:=1;

end;

y[n+1]:=0;

for i:=0 to n do

begin

xi:=ag+i*h;

y[i]:=(beta*(xi-ag)+alfa*(bg-xi))/(bg-ag);

end;

k:=0;

repeat

k:=k+1;

y0:=y;

for i:=1 to n-1 do

begin

xi:=ag+i*h;

d[i]:=h*h*f(xi,y0[i]);

end;

Progonka(n,a,b,c,d,y);

max:=0;

for i:=0 to n do if max<abs(y[i]-y0[i]) then max:=abs(y[i]-y0[i]);

if k=100 then break;

until max<e;

assign(ff,'f:praktika.xls');

rewrite(ff);

writeln(ff,'xi':6,#9,'yi':8);

i:=0;

while i<n do

begin

writeln(ff,(ag+i*h):8:4,#9,y[i]:8:4);

i:=i+s;

end;

writeln(ff,bg:8:4,#9,y[n]:8:4);

writeln(ff);

writeln; writeln(ff,'k=',k);

close(ff);

writeln('rezultati raschetov vivedeni v fail praktika.xls');

readkey;

end.

II.3.Результати обчислень


Таблиця(наближений розв’язок крайової задачі для різної кількості вузлів та ітерацій)

xi k=4 k=1

n=10 n=20 n=30 n=40

yi

Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь

yi

Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь

yi

Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь

yi yi

Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь

-0,5236 0,3333 0,0000 0,3333 0,0000 0,3333 0,0000 0,3333 0,3333 0,0000
-0,4189 0,2870 0,0349 0,2869 0,0000 0,2869 0,0000 0,2869 0,2866 0,1046
-0,3142 0,2212 0,1358 0,2210 0,0453 0,2209 0,0000 0,2209 0,2204 0,2263
-0,2094 0,1382 0,2903 0,1379 0,0726 0,1379 0,0726 0,1378 0,1371 0,5080
-0,1047 0,0410 0,7371 0,0408 0,2457 0,0407 0,0000 0,0407 0,0398 2,2113
0,0000 -0,0662 0,0000 -0,0662 0,0000 -0,0662 0,0000 -0,0662 -0,0673 1,6616
0,1047 -0,1680 0,2387 -0,1677 0,0597 -0,1676 0,0000 -0,1676 -0,1689 0,7757
0,2094 -0,2489 0,1610 -0,2486 0,0402 -0,2485 0,0000 -0,2485 -0,2498 0,5231
0,3142 -0,3051 0,0984 -0,3049 0,0328 -0,3049 0,0328 -0,3048 -0,306 0,3937
0,4189 -0,3340 0,0599 -0,3339 0,0300 -0,3338 0,0000 -0,3338 -0,3345 0,2097
0,5236 -0,3333 0,0000 -0,3333 0,0000 -0,3333 0,0000 -0,3333 -0,3333 0,0000

де n – кількість проміжків; xi – вузли сітки ; yi – наближені значення шуканої функції у вузлах;

Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь - відносна похибка у відсотках


Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь

Рис.1 Графік розв’язку крайової задачи

Висновки


Висновки: за період проходження навчально-обчислювальної практики я ознайомився з чисельними методами розв’язання крайових задач зокрема з різницевим методом. Для індивідуального варіанту завдання був знайдений розв’язок крайової задачі з заданою правою частиною. Розрахунок здійснювався за допомогою програми на мові Turbo Pascal. Різницевий метод виявився доволі простим в реалізації на алгоритмічній мові та дав швидку збіжність.


Список використаної літератури


Калиткин Н. Н. Численные методы. – М.: Наука, 1978. – 512 с.

Самарский А. А. Теория разностных схем. – М.: Наука, 1989. – 616 с.

Самарский А. А., Николаев Е. С. Методы решения сеточных уравнений. – М.: Наука, 1978. – 592 с.

Рапаков Г. Г., Ржеуцкая С. Ю. Программирование на языке Pascal. . – СПб.: БХВ-Петербург, 2005. – 480 с.

Размещено на

Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

Поможем написать работу на аналогичную тему

Получить выполненную работу или консультацию специалиста по вашему учебному проекту
Нужна помощь в написании работы?
Мы - биржа профессиональных авторов (преподавателей и доцентов вузов). Пишем статьи РИНЦ, ВАК, Scopus. Помогаем в публикации. Правки вносим бесплатно.

Похожие рефераты: