Стукалов-Русских / лаб.раб.4
.docx
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«Омский государственный педагогический университет»
Факультет математики, информатики, физики и технологии
Кафедра прикладной математики
Лабораторная работа №4
по дисциплине «Численные методы»
Выполнил: студент
33 группы
Русских Юрий Вячеславович
_______________________
(подпись)
Проверил:
Стукалов Виктор Анатольевич
к.п.н., доцент
Оценка ________________
«___» _______________ 20___г.
_______________________
(подпись)
Омск, 2013
Задание.
Решить задачу Коши для дифференциального уравнения y=f(x,y) на отрезке [a;b] при заданном начальном условии и шаге интегрирования h.
a=2,6; b=4,6; c=1,8; h=0,2
y = f(x,y) |
a |
b |
c |
h |
2,6 |
4,6 |
1,8 |
0,2 |
-
Решим задачу Коши для дифференциального уравнения методом Эйлера с помощью программы для Pascal на компьютере, с шагом h=0,2.
program Euler;
Uses Crt;
Var x,y,h,b:real;
function f(x1,y1:real):real;
Begin f:= sqrt(4x^2+1)-3y^2; End;
Begin
Clrscr;
Writeln(‘Введите через пробел начальные значения x и y:');
readln(x,y);
writeln(Введите величину шага интегрирования:');
readln(h);
writeln(Введите абсциссу правого конца отрезка:');
readln(b);
writeln(Таблица значений искомой функции:');
writeln(' x ',' y ');
repeat
writeln(x:3:1,' ',y:4:2);
y:=y+h*f(x,y);
x:=x+h;
until x>=b+h/2;
repeat until keypressed
end.
По полученным значениям строим график:
x |
y |
y* |
ε |
2,6 |
1,8 |
1,3674 |
-0,4326 |
2,8 |
0,92 |
1,4022 |
0,4822 |
3 |
1,55 |
1,437 |
-0,113 |
3,2 |
1,32 |
1,4718 |
0,1518 |
3,4 |
1,57 |
1,5066 |
-0,0634 |
3,6 |
1,47 |
1,5414 |
0,0714 |
3,8 |
1,63 |
1,5762 |
-0,0538 |
4 |
1,57 |
1,611 |
0,041 |
4,2 |
1,7 |
1,6458 |
-0,0542 |
4,4 |
1,65 |
1,6806 |
0,0306 |
4,6 |
1,78 |
1,7154 |
-0,0646 |
-
Методом Рунге-Кутта с помощью программы для компьютера с шагом h и шагом h/2. На основе результатов двойного счета сделать вывод о точности полученного решения.
Program Runge_Kutta4;
Uses Crt, rung;
Type T=real;
Var x,y,h,b:T; i,n:integer;
Begin
Clrscr;
writeln(Задайте начальные значения: ');
read(x,y);
writeln('Укажите шаг интегрирования: ');
readln(h);
writeln(' и правую границу отрезка интегрирования: ');
readln(b); writeln(' x',' y');
n:=trunc((b-x+1E-10)/h);
writeln(' ',X:4:2,' ',y:10:6);
FOr I:=1 to n do
Begin
r_k(x,y,h,y);
x:=x+h;
writeln(' ',x:4:2,' ',y:10:6);
end;
repeat until keypressed
end.
По полученным значениям строим график:
x |
y |
y* |
ε |
2,6 |
1,8 |
1,4452 |
-0,3548 |
2,8 |
1,47 |
1,4191 |
-0,05087 |
3 |
1,43 |
1,416 |
-0,01403 |
3,2 |
1,45 |
1,4176 |
-0,03245 |
3,4 |
1,49 |
1,4207 |
-0,06929 |
3,6 |
1,53 |
1,4239 |
-0,10613 |
3,8 |
1,58 |
1,4278 |
-0,15218 |
4 |
1,62 |
1,431 |
-0,18902 |
4,2 |
1,66 |
1,4341 |
-0,22586 |
4,4 |
1,7 |
1,4373 |
-0,2627 |
4,6 |
1,74 |
1,4405 |
-0,29954 |
Сделаем сводную таблицу полученных результатов:
x |
y |
|||
Метод Эйлера |
Метод Рунге-Кутта |
Метод наименьших квадратов |
||
2,6 |
1,8 |
1,8 |
1,3674 |
1,4452 |
2,8 |
0,92 |
1,47 |
1,4022 |
1,4191 |
3 |
1,55 |
1,43 |
1,437 |
1,416 |
3,2 |
1,32 |
1,45 |
1,4718 |
1,4176 |
3,4 |
1,57 |
1,49 |
1,5066 |
1,4207 |
3,6 |
1,47 |
1,53 |
1,5414 |
1,4239 |
3,8 |
1,63 |
1,58 |
1,5762 |
1,4278 |
4 |
1,57 |
1,62 |
1,611 |
1,431 |
4,2 |
1,7 |
1,66 |
1,6458 |
1,4341 |
4,4 |
1,65 |
1,7 |
1,6806 |
1,4373 |
4,6 |
1,78 |
1,74 |
1,7154 |
1,4405 |
Вывод: Применяя разные методы, видим, что вычисления значения y разные, а более точным является метод наименьших квадратов.