Міністерство освіти і науки України
Національний університет „Львівська політехніка”
ІКТА, кафедра «Захисту інформації»
Звіт
З КУРСУ “ Комп’ютерні методи дослідження інформаційних процесів та систем ”
НА ТЕМУ: “ МЕТОДИ ЧИСЕЛЬНОГО РОЗВ`ЯЗУВАННЯ
диференціАЛЬНИХ рівнянь“
Варіант 21
Виконав:
Студент групи ІБ-2
Львів-2007
Мета роботи – ознайомлення з методами чисельного інтегрування диференційних рівнянь.
Короткі теоретичні відомості
Диференціальним називається рівняння, в яке входять похідні невідомої функції.
Приклад:
EMBED Equation.3 EMBED Equation.3 (1)
EMBED Equation.3 (2)
Диференціальне рівняння (ДР), що містить лише одну незалежну змінну і похідні за нею, називають звичайними (ДР). Це, наприклад, рівняння (1). ДР, що містить декілька незалежних змінних і похідні за ними, називають рівняння в частинних похідних
Порядком ДР називається найвищий порядок похідної (або диференціалу), який входить в рівняння. Звичайне ДР (ЗДР) EMBED Equation.3-го порядку в загальному випадку має незалежну змінну, невідому функцію та її похідні (або диференціал) до EMBED Equation.3-го порядку включно:
EMBED Equation.3 (3)
EMBED Equation.3 - незалежна змінна;
EMBED Equation.3- невідома функція (залежна змінна);
EMBED Equation.3- похідні цієї функції.
Диференціальне рівняння EMBED Equation.3-го порядку, розв’язане відносно старшої похідної, може бути записано у вигляді:
EMBED Equation.3 (4)
Щоб розв’язати ЗДР, необхідно мати значення залежної змінної та (або) її похідних при деяких значення незалежної змінної.
Якщо ці значення задані при одному значенні незалежної змінної - така задача називається задачею з початковими умовами або задачею Коші.
Якщо ці значення задаються при EMBED Equation.3 або більше значеннях незалежної змінної - задача називається крайовою.
Значення залежної змінної та її похідних називаються ще додатковими умовами, котрі в задачі Коші називаються початковими, а в крайовій задачі - граничними.
Метод Рунге-Кутта-Мерсона з автоматичною зміною кроку
Метод дозволяє оцінити похибку на кожному кроці інтегрування. Похибка інтегрування має порядок EMBED Equation.3. При цьому не потрібно зберігати в пам’яті обчислення значень функцій на кроці EMBED Equation.3 і EMBED Equation.3 для оцінки похибки - перевага порівняно з методом Рунге-Кутта з автоматичною зміною кроку.
Алгоритм методу
1. Задаємо число рівнянь EMBED Equation.3, похибку EMBED Equation.3, початковий крок інтегрування EMBED Equation.3, початкові умови EMBED Equation.3.
2. За допомогою п’яти циклів з керуючою змінною EMBED Equation.3 обчислюємо коефіцієнти
EMBED Equation.3
EMBED Equation.3
3. Знаходимо значення
EMBED Equation.3
EMBED Equation.3
та похибку EMBED Equation.3
4. Перевіряємо виконання умов
EMBED Equation.3
Можливі випадки:
а) Якщо перша умова не виконується, тобто EMBED Equation.3 , то ділимо крок EMBED Equation.3 на 2 та повторюємо обчислення з п.2, встановивши початкові значення EMBED Equation.3.
б) Якщо виконується перша та друга умови, значення EMBED Equation.3 та EMBED Equation.3 виводяться на друк.
Якщо друга умова не виконується, крок EMBED Equation.3 збільшується вдвічі і тоді обчислення знову повторюється з п.2 (нема потреби обчислювати при малому кроці).
Треба відмітити, що похибка EMBED Equation.3 на кожному кроці методу Рунге-Кутта-Мерсона оцінюється приблизно. При розв’язуванні нелінійних ДР істинна похибка може відрізнятися в декілька разів від заданої EMBED Equation.3.
EMBED Equation.3, де EMBED Equation.3.
EMBED Equation.3 - крок поділити на 2 і повернутися на початок.
EMBED Equation.3для всіх рівнянь: виводимо на друк EMBED Equation.3, а крок збільшуємо удвічі.
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.
Результат роботи програми:
Висновок:
Виконавши дану лабораторну роботу я ознайомився з методами чисельного інтегрування диференційних рівнянь.