Міністерство освіти і науки України
Національний університет „Львівська політехніка”
ІКТА, кафедра «Захисту інформації»
Звіт
З КУРСУ “ КОМП’ЮТЕРНІ МЕТОДИ ДОСЛІДЖЕННЯ ІНФОРМАЦІЙНИХ ПРОЦЕСІВ ТА СИСТЕМ ”
НА ТЕМУ: “ МЕТОДИ ЧИСЕЛЬНОГО РОЗВ`ЯЗУВАННЯ
ДИФЕРЕНЦІАЛЬНИХ РІВНЯНЬ“
Варіант 2
Мета роботи – ознайомлення з методами чисельного інтегрування диференційних рівнянь.
КОРОТКІ ТЕОРЕТИЧНІ ВІДОМОСТІ
Диференціальним називається рівняння, в яке входять похідні невідомої функції.
Приклад:
(1)
(2)
Диференціальне рівняння (ДР), що містить лише одну незалежну змінну і похідні за нею, називають звичайними (ДР). Це, наприклад, рівняння (1). ДР, що містить декілька незалежних змінних і похідні за ними, називають рівняння в частинних похідних
Порядком ДР називається найвищий порядок похідної (або диференціалу), який входить в рівняння. Звичайне ДР (ЗДР) -го порядку в загальному випадку має незалежну змінну, невідому функцію та її похідні (або диференціал) до -го порядку включно:
(3)
- незалежна змінна;
- невідома функція (залежна змінна);
- похідні цієї функції.
Диференціальне рівняння -го порядку, розв’язане відносно старшої похідної, може бути записано у вигляді:
(4)
Щоб розв’язати ЗДР, необхідно мати значення залежної змінної та (або) її похідних при деяких значення незалежної змінної.
Якщо ці значення задані при одному значенні незалежної змінної - така задача називається задачею з початковими умовами або задачею Коші.
Якщо ці значення задаються при або більше значеннях незалежної змінної - задача називається крайовою.
Значення залежної змінної та її похідних називаються ще додатковими умовами, котрі в задачі Коші називаються початковими, а в крайовій задачі - граничними.
Метод Рунге-Кутта-Мерсона з автоматичною зміною кроку
Метод дозволяє оцінити похибку на кожному кроці інтегрування. Похибка інтегрування має порядок . При цьому не потрібно зберігати в пам’яті обчислення значень функцій на кроці і для оцінки похибки - перевага порівняно з методом Рунге-Кутта з автоматичною зміною кроку.
Алгоритм методу
1. Задаємо число рівнянь , похибку , початковий крок інтегрування , початкові умови .
2. За допомогою п’яти циклів з керуючою змінною обчислюємо коефіцієнти
3. Знаходимо значення
та похибку
4. Перевіряємо виконання умов
Можливі випадки:
а) Якщо перша умова не виконується, тобто , то ділимо крок на 2 та повторюємо обчислення з п.2, встановивши початкові значення .
б) Якщо виконується перша та друга умови, значення та виводяться на друк.
Якщо друга умова не виконується, крок збільшується вдвічі і тоді обчислення знову повторюється з п.2 (нема потреби обчислювати при малому кроці).
Треба відмітити, що похибка на кожному кроці методу Рунге-Кутта-Мерсона оцінюється приблизно. При розв’язуванні нелінійних ДР істинна похибка може відрізнятися в декілька разів від заданої .
, де .
- крок поділити на 2 і повернутися на початок.
для всіх рівнянь: виводимо на друк , а крок збільшуємо удвічі.
2.ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ
Розв’язати чисельним методом звичайне диференційне рівняння.
СПИСОК ІДЕНТИФІКАТОРІВ КОНСТАНТ, ЗМІННИХ, ФУНКЦІЙ, ВИКОРИСТАНИХ У ПРОГРАМІ, ТА ЇХ ПОЯСНЕННЯ:
Текст програми на мові Паскаль:
program runge_kut_merson;
uses crt;
const n=1;a=0;b=1;e=0.001;
type vec=array[1..n] of real;
var
i,m,p :integer;
x,h,k :real;
y1,y,f,r,z :vec;
Function dy(var k:integer;x,s:real):real;
begin
for i:=1 to n do
z[i]:=y[i]+s;
dy:=sin(sqrt(x*x+k*k));
end;
Procedure Merson(var y1,r:vec; m:integer);
var k0,k1,k2,k3,k4,s:real;
begin
m:=0;
for i:=1 to n do
begin
k0:=h*dy(i,x,0);
k1:=h*dy(i,x+h/3,k0/3);
k2:=h*dy(i,x+h/3,k0/6+k1/6);
k3:=h*dy(i,x+h/2,k0/8+3*k2/8);
k4:=h*dy(i,x+h,k0/2-3*k2/2+2*k3);
y1[i]:=h*(k0+4*k3+k4)/6;
r[i]:=(-2*k0+9*k2-8*k3+k4)/30;
if abs(r[i])>e then m:=m+1;
end;
end;
BEGIN
clrscr;
for i:=1 to n do
begin
writeln ('Поч. знач.');
read(y[i]);
end;
x:=a;
h:=0.1;
repeat
p:=0;
repeat
for i:=1 to n do
begin
Merson(y1,r,m);
p:=p+1;
h:=h/2;
end;
until m<>n;
h:=2*h;
if p=1 then h:=2*h;
for i:=1 to n do
y[i]:=y[i]+y1[i];
writeln ('x=', x:2:3);
for i:=1 to n do
writeln( 'y[',i,']=', y[i]:1:9, ' r[',i,']=',r[i]:1:9);
x:=x+h;
until x>b;
repeat until keypressed;
END.
Результат роботи програми:
y[1]=0.008423679 r[1]=-0.000000035
x=0.200
y[1]=0.043025754 r[1]=-0.000002985
x=0.600
y[1]=0.196087164 r[1]=-0.000053898
Висновок:
Виконавши дану лабораторну роботу я ознайомилась з методами чисельного інтегрування диференційних рівнянь.