50063
Численное решение обыкновенных дифференциальных уравнений
Лабораторная работа
Математика и математический анализ
При выполнении данной лабораторной работы были получены теоретические и практические навыки в приближенном решении дифференциальных уравнений первого порядка с начальным условием методами Эйлера, Эйлера (уточнённый), Рунге-Кутты, Адамса, Милна. Сравнивая полученные результаты вычислений с истинным значением можно сделать вывод...
Русский
2014-01-15
957.5 KB
8 чел.
[1] СОДЕРЖАНИЕ
[2]
[3] [3.1] Метод Эйлера [3.2] Уточненный метод Эйлера [3.3] Метод Рунге-Кутты
[3.4] [3.5] Метод Милна [4] Програмная реализация [4.1] Описание основных процедур и функций
[4.2] [4.3] Текст программы
[5]
[6]
[7] [8] Кафедра: «Техническая кибернетика» [8.0.1] |
Необходимо решить дифференциальное уравнение с начальным условием y(0) = 1 методом:
на интервале [0;0,5].
Точное решение данного дифференциального уравнения представляется в следующем виде:
Вычисления производятся по формулам: , где h-шаг, f(x,y)-заданная функция; h = 0,05.
Вычисления представим в виде таблицы:
№ i |
xi |
|||
0 |
0,0000 |
1,0000 |
0,0000 |
0,0000 |
1 |
0,0500 |
1,0000 |
-0,0526 |
-0,0026 |
2 |
0,1000 |
0,9974 |
-0,1144 |
-0,0057 |
3 |
0,1500 |
0,9916 |
-0,1881 |
-0,0094 |
4 |
0,2000 |
0,9822 |
-0,2784 |
-0,0139 |
5 |
0,2500 |
0,9683 |
-0,3921 |
-0,0196 |
6 |
0,3000 |
0,9487 |
-0,5415 |
-0,0271 |
7 |
0,3500 |
0,9216 |
-0,7493 |
-0,0375 |
8 |
0,4000 |
0,8842 |
-1,0654 |
-0,0533 |
9 |
0,4500 |
0,8309 |
-1,6253 |
-0,0813 |
10 |
0,5000 |
0,7496 |
-3,0058 |
-0,1503 |
Значение, вычисленное данным методом: y(0,5) = 0,7496, а точно вычисленное y(0,5) = 0,5000.
Вычисления производятся по формулам:
где
h = 0,05; x1/2 = 0,025; y1/2 = 1;
Вычисления представим в виде таблицы:
№ i |
xi |
|||
0 |
0,0000 |
1,0000 |
||
1 |
0,0500 |
0,9987 |
-0,0256 |
-0,0013 |
2 |
0,1000 |
0,9974 |
-0,1143 |
-0,0057 |
3 |
0,1500 |
0,9873 |
-0,1943 |
-0,0097 |
4 |
0,2000 |
0,9780 |
-0,2853 |
-0,0143 |
5 |
0,2500 |
0,9588 |
-0,4109 |
-0,0205 |
6 |
0,3000 |
0,9369 |
-0,5701 |
-0,0285 |
7 |
0,3500 |
0,9017 |
-0,8124 |
-0,0406 |
8 |
0,4000 |
0,8557 |
-1,1946 |
-0,0597 |
9 |
0,4500 |
0,7823 |
-2,0094 |
-0,1005 |
10 |
0,5000 |
0,6547 |
Значение, вычисленное данным методом: y(0,5) = 0,6547, а точно вычисленное y(0,5) = 0,5000.
Вычисления производятся по формулам:
,где
h = 0,05.
Вычисления представим в виде таблицы:
№ |
xi |
φ0 |
φ1 |
φ2 |
φ3 |
||
0 |
0,0000 |
1,0000 |
0,0000 |
-0,0013 |
-0,0013 |
-0,0027 |
-0,0013 |
1 |
0,0500 |
0,9987 |
-0,0027 |
-0,0042 |
-0,0043 |
-0,0059 |
-0,0043 |
2 |
0,1000 |
0,9944 |
-0,0059 |
-0,0077 |
-0,0078 |
-0,0098 |
-0,0078 |
3 |
0,1500 |
0,9867 |
-0,0098 |
-0,0120 |
-0,0121 |
-0,0145 |
-0,0121 |
4 |
0,2000 |
0,9746 |
-0,0145 |
-0,0174 |
-0,0175 |
-0,0207 |
-0,0175 |
5 |
0,2500 |
0,9571 |
-0,0207 |
-0,0244 |
-0,0246 |
-0,0291 |
-0,0247 |
6 |
0,3000 |
0,9325 |
-0,0291 |
-0,0343 |
-0,0347 |
-0,0413 |
-0,0347 |
7 |
0,3500 |
0,8977 |
-0,0413 |
-0,0496 |
-0,0504 |
-0,0618 |
-0,0505 |
8 |
0,4000 |
0,8472 |
-0,0618 |
-0,0778 |
-0,0804 |
-0,1078 |
-0,0810 |
9 |
0,4500 |
0,7662 |
-0,1081 |
-0,1609 |
-0,1872 |
-0,5832 |
-0,2312 |
10 |
0,5000 |
0,5350 |
-1,3804 |
0,1235 |
-0,6473 |
0,1255 |
-0,3837 |
Значение, вычисленное данным методом: y(0,5) = 0,535, а точно вычисленное y(0,5) = 0,5000.
Вычисления производятся по формулам:
,
где
Вычисления представим в виде таблицы:
№ |
xi |
∆ |
∆2 |
∆3 |
∆4 |
∆5 |
||
0 |
0,0000 |
1,0000 |
0,0000 |
|||||
-0,0027 |
||||||||
1 |
0,0500 |
0,9987 |
-0,0027 |
-0,0005 |
||||
-0,0032 |
-0,0002 |
|||||||
2 |
0,1000 |
0,9944 |
-0,0059 |
-0,0007 |
-0,0001 |
|||
-0,0039 |
-0,0003 |
-0,000034 |
||||||
3 |
0,1500 |
0,9867 |
-0,0098 |
-0,0009 |
-0,0002 |
|||
-0,0048 |
-0,0004 |
-0,000216 |
||||||
4 |
0,2000 |
0,9746 |
-0,0145 |
-0,0014 |
-0,0004 |
|||
-0,0062 |
-0,0008 |
-0,000518 |
||||||
5 |
0,2500 |
0,9571 |
-0,0207 |
-0,0022 |
-0,0009 |
|||
-0,0083 |
-0,0017 |
-0,001735 |
||||||
6 |
0,3000 |
0,9325 |
-0,0291 |
-0,0039 |
-0,0026 |
|||
-0,0122 |
-0,0043 |
-0,009350 |
||||||
7 |
0,3500 |
0,8979 |
-0,0413 |
-0,0082 |
-0,0120 |
|||
-0,0204 |
-0,0163 |
-0,173723 |
||||||
8 |
0,4000 |
0,8478 |
-0,0617 |
-0,0245 |
-0,1857 |
|||
-0,0449 |
-0,2020 |
|||||||
9 |
0,4500 |
0,7694 |
-0,1065 |
-0,2265 |
||||
-0,2713 |
||||||||
10 |
0,5000 |
0,6169 |
-0,3779 |
Значение, вычисленное данным методом: y(0,5) = 0,6169, а точно вычисленное y(0,5) = 0,5000.
Вычисления производятся по формулам:
Формула прогноза:
Формула коррекции:
Определение начального отрезка y1, y2, y3 произведем по формуле Рунге-Кутта 4-го порядка точности.
y1=y(0,5)=0,9987, y2=y(0,1)= 0,9944, y3=y(0,15)= 0,9867;
Вспомогательная таблица:
xi |
yпр |
y'пр |
yкор |
y'кор |
0,0000 |
1,0000 |
0,0000 |
1,0000 |
0,0000 |
0,0500 |
0,9987 |
-0,0541 |
0,9987 |
-0,0541 |
0,1000 |
0,9944 |
-0,1181 |
0,9944 |
-0,1180 |
0,1500 |
0,9867 |
-0,1952 |
0,9867 |
-0,1952 |
0,2000 |
0,9746 |
-0,2909 |
0,9746 |
-0,2910 |
0,2500 |
0,9572 |
-0,4141 |
0,9571 |
-0,4142 |
0,3000 |
0,9326 |
-0,5809 |
0,9324 |
-0,5812 |
0,3500 |
0,8981 |
-0,8246 |
0,8977 |
-0,8258 |
0,4000 |
0,8482 |
-1,2311 |
0,8472 |
-1,2362 |
0,4500 |
0,7706 |
-2,1196 |
0,7662 |
-2,1624 |
0,5000 |
0,6221 |
-7,1915 |
0,5626 |
-14,9816 |
Значение, вычисленное данным методом: y(0,5) = 0,5626, а точно вычисленное y(0,5) = 0,5000.
- Procedure Eiler(h, Xo, Xmax, Yo :real; var StringGrid_data: TStringGrid);
Вычисляются значения точек функции, являющейся решением ОДУ, по методу Эйлера. На выходе получаются массивы чисел типа real, записанные в StringGrid_data.
- Procedure RK4(h, Xo, Xmax, Yo :real; var StringGrid_data: TStringGrid); Вычисляются значения точек функции, являющейся решением ОДУ, по методу Рунге-Кутты 4 порядка. На выходе получаются массивы чисел типа real, записанные в StringGrid_data.
Метод Эйлера Метод Рунге-Кутты 4 порядка
Приложение 1
unit Main_unit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Grids, pngimage;
type
TForm_lab6 = class(TForm)
Image_DE: TImage;
But_calc: TButton;
StringGrid_data: TStringGrid;
Edit_Xo: TEdit;
Edit_Xmax: TEdit;
Label_Xo: TLabel;
Label_Xmax: TLabel;
method_choice: TComboBox;
Label_DE: TLabel;
Label_method: TLabel;
Label_Yo: TLabel;
Edit_Yo: TEdit;
procedure But_calcClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_lab6: TForm_lab6;
implementation
{$R *.dfm}
procedure Eiler(h, Xo, Xmax, Yo :real; var StringGrid_data: TStringGrid);
var
yi_1,y1,y2,x,y,dydx,dy : real;
i:integer;
begin
StringGrid_data.Visible:=true;
StringGrid_data.Cells[0,0]:=' n ';
StringGrid_data.Cells[1,0]:=' x ';
StringGrid_data.Cells[2,0]:=' y ';
StringGrid_data.Cells[3,0]:=' dy/dx ';
StringGrid_data.Cells[4,0]:=' dy ';
for i:= 0 to 10 do
begin
StringGrid_data.Cells[0,i+1]:=inttostr(i);
StringGrid_data.Cells[1,i+1]:=FloatToStr(Xo+h*i);
end;
StringGrid_data.Cells[2,1]:='1';
for i:= 2 to 11 do
begin
yi_1:=strtofloat(StringGrid_data.Cells[2,i-1]);
x:= strtofloat(StringGrid_data.Cells[1,i-1]);
y:= strtofloat(StringGrid_data.Cells[2,i-1]);
StringGrid_data.Cells[2,i]:=floattostr(Yo+h*(1/(x-y)+1));
y1:=strtofloat(StringGrid_data.Cells[2,i-1]);
y2:=strtofloat(StringGrid_data.Cells[2,i]);
dy:=y2-y1;
StringGrid_data.Cells[4,i-1]:=floattostr(dy);
end;
for i:= 1 to 11 do
begin
y:=strtofloat(StringGrid_data.Cells[2,i]);
x:= strtofloat(StringGrid_data.Cells[1,i]);
StringGrid_data.Cells[3,i]:=floattostr(1/(x-y)+1);
end;
end;
procedure RK4(h, Xo, Xmax, Yo :real; var StringGrid_data: TStringGrid);
var
f0,f1,f2,f3, Xi,Yi : real;
Xmas,Ymas: array [1..10] of real;
yi_1,y1,y2,x,y,dy : real;
i:integer;
begin
StringGrid_data.Visible:=true;
StringGrid_data.Cells[0,0]:=' n ';
StringGrid_data.Cells[1,0]:=' x ';
StringGrid_data.Cells[2,0]:=' y ';
StringGrid_data.Cells[3,0]:=' f0 ';
StringGrid_data.Cells[4,0]:=' f1 ';
StringGrid_data.Cells[5,0]:=' f2 ';
StringGrid_data.Cells[6,0]:=' f3 ';
StringGrid_data.Cells[7,0]:=' dy ';
for i:= 0 to 10 do
begin
StringGrid_data.Cells[0,i+1]:=inttostr(i);
StringGrid_data.Cells[1,i+1]:=FloatToStr(Xo+h*i);
end;
StringGrid_data.Cells[2,1]:=FloatToStr(Yo);
for i := 0 to 10 do
begin
Xi:= StrToFloat(StringGrid_data.Cells[1,i+1]);
Yi:= StrToFloat(StringGrid_data.Cells[2,i+1]);
f0:= h*(1/(Xi-Yi)+1);
f1:=h*(1/((Xi+0.5*h)-(Yi+0.5*f0))+1);
f2:=h*(1/((Xi+0.5*h)-(Yi+0.5*f1))+1);
f3:=h*(1/((Xi+h)-(Yi+f2))+1);
dy:=1/6*(f0+2*f1+2*f2+f3);
StringGrid_data.Cells[2,i+2]:=floattostr(Yi+dy);
StringGrid_data.Cells[3,i+1]:=floattostr(f0);
StringGrid_data.Cells[4,i+1]:=floattostr(f1);
StringGrid_data.Cells[5,i+1]:=floattostr(f2);
StringGrid_data.Cells[6,i+1]:=floattostr(f3);
StringGrid_data.Cells[7,i+1]:=floattostr(dy);
end;
end;
procedure TForm_lab6.But_calcClick(Sender: TObject);
var
Xo, Xmax, Yo: real;
yi_1,y1,y2,x,y,dydx,dy : real;
i:integer;
h : real;
begin
Xo:=Strtofloat(Edit_Xo.Text);
Xmax:=Strtofloat(Edit_Xmax.Text);
h:=(Xmax-Xo)/10;
Yo:=Strtofloat(Edit_Yo.Text);
if method_choice.Text='Эйлера' then
Eiler(h,Xo,Xmax,Yo,StringGrid_data)
else
if method_choice.Text='Рунге-Кутты' then
RK4(h,Xo,Xmax,Yo,StringGrid_data) end; end.
Метод (Yi) Xi |
Метод Эйлера |
Уточненный метод Эйлера |
Метод Рунге-Кутта 4го порядка |
Метод Адамса |
Метод Милна |
Точное решение |
0,0000 |
1,0000 |
1,0000 |
1,0000 |
1,0000 |
1,0000 |
1,0000 |
0,0500 |
1,0000 |
0,9987 |
0,9987 |
0,9987 |
0,9987 |
0,9987 |
0,1000 |
0,9974 |
0,9974 |
0,9944 |
0,9944 |
0,9944 |
0,9944 |
0,1500 |
0,9916 |
0,9873 |
0,9867 |
0,9867 |
0,9867 |
0,9867 |
0,2000 |
0,9822 |
0,9780 |
0,9746 |
0,9746 |
0,9746 |
0,9746 |
0,2500 |
0,9683 |
0,9588 |
0,9571 |
0,9571 |
0,9571 |
0,9571 |
0,3000 |
0,9487 |
0,9369 |
0,9325 |
0,9325 |
0,9324 |
0,9325 |
0,3500 |
0,9216 |
0,9017 |
0,8977 |
0,8979 |
0,8977 |
0,8977 |
0,4000 |
0,8842 |
0,8557 |
0,8472 |
0,8478 |
0,8472 |
0,8472 |
0,4500 |
0,8309 |
0,7823 |
0,7662 |
0,7694 |
0,7662 |
0,7662 |
0,5000 |
0,7496 |
0,6547 |
0,5350 |
0,6169 |
0,5626 |
0,5000 |
При выполнении данной лабораторной работы были получены теоретические и практические навыки в приближенном решении дифференциальных уравнений первого порядка с начальным условием методами Эйлера, Эйлера (уточнённый), Рунге-Кутты, Адамса, Милна. Сравнивая полученные результаты вычислений с истинным значением можно сделать вывод, что наибольшей точностью из всех рассмотренных методов для данного дифференциального уравнения обладает метод Рунге-Кутты 4-го порядка.
Министерство образования и науки РФ
Федеральное Государственное Бюджетное образовательное
учреждение высшего
профессионального образования
«Белгородский Государственный Технологический Университет им. В.Г. Шухова»
(БГТУ им. В.Г. Шухова)
ИИТУС
Лабораторная работа №6
дисциплина: «Численные методы и оптимизация»
тема: «Численное решение обыкновенных дифференциальных
уравнений»
Вариант 1
Выполнил:
студент группы АП-21
Андрианов А.Ю.
Принял:
ст. препод. кафедры ТК
Рыбин И.А.
Белгород 2013
Да
Нет
ачало
x0 ,y0, h, n
x[0]=Xo
y[0]=Yo
i=1
i>=n
y[i]=y[i]+h*f(x,y)
x[i]=x[i]+h
i=i+1
Конец
А также другие работы, которые могут Вас заинтересовать | |||
83697. | Деньги и цена. Денежное обращение и его законы | 238.5 KB | |
Деньги это неотъемлемая и существенная часть финансовой системы каждой страны. Называются ли они долларами, рублями, гривнами, фунтами или франками, деньги служат средством оплаты, средством сохранения стоимости и единицей счёта во всех экономических системах. | |||
83698. | Проектирование одноэтажного жилого коттеджа «Дивный край» | 708.98 KB | |
Верхняя плоскость фундамента на которой располагаются надземные части здания называется поверхностью фундамента или обрезом а нижняя его плоскость соприкасающаяся с основанием подошвой фундамента. Особенности ленточного фундамента Если рассматривать основные особенности ленточного фундамента то в первую... | |||
83699. | Полевой контроль состояния сейсморазведочных работ | 2.86 MB | |
В административном отношении площадь исследований находится на территории Муслюмовского района Республики Татарстан. Объем полевых сейсморазведочных работ по ПВ составит 50,0 кв. км. В качестве регистрирующей аппаратуры будет использоваться телеметрическая система сбора сейсмической... | |||
83700. | ПРОЕКТИРОВАНИЕ БД СПОРТИВНОЙ ШКОЛЫ | 2.28 MB | |
Целью данной курсовой работы является рассмотрение теории и создания на практике базы данных в продукте корпорации Microsoft для управления базами данных Microsoft Access на тему: Проектирование БД спортивной школы. Система Access — это набор инструментов конечного пользователя для управления базами данных. | |||
83701. | Рекомендации по оптимизации системы подбора и подготовки персонала в гостинице «Космос» | 162.5 KB | |
Комплектование штатов является одним из ключевых элементов работы любой организации, так как от качества отобранных кадров зависит эффективность работы организации и использование всех остальных ресурсов. Поэтому ошибки в подборе кадров могут дорого обойтись организации, а подбор хороших кадров... | |||
83702. | Определение текущего рыночного спроса и прогнозирование будущего спроса на примере отеля | 90.92 KB | |
Когда компания находит привлекательный рынок, она должна тщательно оценить его размер и потенциальные возможности. Чтобы разработать действенную маркетинговую стратегию, контролировать эффективность ее реализации, маркетологам стоит научиться оценивать текущий спрос и прогнозировать его изменения. | |||
83705. | Разработка приложения для предметной области «Сбор сведений о писателях и их литературных произведениях» | 252.8 KB | |
Практическая часть работы разделена на следующие этапы: построение логической модели базы данных; описание таблиц и построение физической модели базы данных; разработка базы данных в XML и разработка клиентской части в среде программирования... | |||