Розв`язання нелінійної крайової задачі на основі різницевого методу у вигляді програми на мові Turbo Pascal

Різницевий метод розв'язання крайових задач для звичайних диференціальних рівнянь. Метод прогонки. Лістинг програми розв`язання нелінійної крайової задачі на алгоритмічній мові Turbo Pascal. Результати обчислень, графік розв`язку крайової задачі.

Рубрика Программирование, компьютеры и кибернетика
Вид отчет по практике
Язык украинский
Дата добавления 23.04.2011
Размер файла 53,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

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

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

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

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

Звіт з навчально-обчислювальної практики

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

2010

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

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

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

(1)

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

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

(2)

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

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

(3)

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

(4)

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

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

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

(5)

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

(6)

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

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

1.2 Метод прогонки

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

(7)

Метод прогонки зводиться до відшукання невідомих з наступних рекурентних співвідношень:

(8)

(9)

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

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

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

(10)

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

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

2.1 Формулювання завдання

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

де

та

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

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

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

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

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

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

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

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

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

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

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

2.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.

2.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 Графік розв'язку крайової задачи

крайовий задача програма pascal

Висновки

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

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

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

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

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

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

Размещено на Allbest.ru


Подобные документы

  • Визначення і розв’язання задачі Коші для звичайних диференціальних рівнянь першого порядку методом Ейлера, алгоритм розв’язання, похибка при вирішенні. Складання блок-схеми. Реалізація алгоритму у середовищі Borland Pascal. Результат роботи програми.

    курсовая работа [264,0 K], добавлен 20.08.2010

  • Метод розв’язків рівнянь більш високих порядків. Вибір методу розв'язання задачі Коші. Методи розв'язання крайових задач розглядаються на прикладі звичайного диференціального рівняння другого порядку. Вибір методу інструментальних засобів вирішення задач.

    курсовая работа [132,0 K], добавлен 03.12.2009

  • Огляд та аналіз методів розв’язання системи диференціальних рівнянь та вибір методів рішення. Алгоритми методів Ейлера. Вибір методу рішення задачі Коші. Рішення диференціальних рівнянь. Отримання практичних навиків програмування на мові Паскаль.

    курсовая работа [174,3 K], добавлен 06.03.2010

  • Стандартний спосіб розв’язання задачі Коші для звичайного диференціального рівняння першого порядку чисельними однокроковими методами. Геометричний зміст методу Ейлера. Побудова графіку інтегральної кривої. Особливість оцінки похибки за методом Рунге.

    курсовая работа [112,9 K], добавлен 30.11.2009

  • Розробка програмного забезпечення для розв'язку системи лінійних рівнянь за формулами Крамера, головні особливості мови Turbo Pascal. Методи розв'язування задачі, архітектура програми та її опис. Контрольний приклад та результат машинного експерименту.

    курсовая работа [47,7 K], добавлен 23.04.2010

  • Розробка програмного забезпечення для розв'язку системи лінійних рівнянь за формулами Гаусса, головні особливості мови Turbo Pascal. Методи розв'язування задачі, архітектура програми та її опис. Контрольний приклад та результат машинного експерименту.

    курсовая работа [40,3 K], добавлен 23.04.2010

  • Технологія візуального проектування. Аналітичне розв’язання задачі в загальному вигляді. Програмування в консольному режимі. Сценарій розв’язання задачі в Delphi та блок-схема алгоритму. Програмний код додатку та опис інтерфейсу з екранними копіями.

    курсовая работа [2,4 M], добавлен 22.06.2009

  • Задача лінійного програмування. Розв’язання задачі геометричним методом. Приведення системи рівнянь до канонічного вигляду. Розв’язання симплекс-методом. Розв’язок двоїстої задачі. Задача цілочислового програмування і дробово-лінійного програм.

    контрольная работа [385,2 K], добавлен 04.06.2009

  • Дослідження застосування різницевого методу для розв’язання крайової задачі. Дослідження проводиться на прикладі заданого диференційного рівняння. Дається опис методу та задачі в цілому. Застосування при обчисленні формули Чебишева і формули Гаусса.

    курсовая работа [157,2 K], добавлен 03.12.2009

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

    курсовая работа [29,7 K], добавлен 13.10.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.