- •1 Аппроксимация функции заданной таблицей
- •1.1 Основы аппроксимации табулированной функции одного аргумента
- •1.2 Аппроксимация методом наименьших квадратов
- •2. Решение обыкновенного дифференциального уравнения первого порядка
- •2.1 Аналитическое решение
- •2.2 Численное решение (неявный метод)
- •2.3 Численноее ршение в среде Excel
2. Решение обыкновенного дифференциального уравнения первого порядка
2.1 Аналитическое решение
Решению подлежит обыкновенное дифференциальное уравнение первого порядка (ОДУ1) (2.1).
, (2.1)
где - время,
X – безразмерное значение воздействия,
Y - безразмерное значение реакции объекта,
А. К – коэффициенты отражающие свойства объекта.
Воздействие описывается синусоидой со сдвигом по фазе
(2.2)
Аналитическое решение уравнения (2.1) при воздействии (2.2) имеет вид (2.3).
, (2.3)
где:
C1= |
1,2 |
C2= |
3,7485 |
C3= |
1,39598 |
2.2 Численное решение (неявный метод)
(2.4)
D1= |
0,6 |
D2= |
0,4 |
Абсолютное условие устойчивости 0<D<1
2.3 Численноее ршение в среде Excel
Результаты решения уравнения (2.1) при воздействии (2.2) представлено в таблице 2.2. и на рис. 2.1.
Для тестирования правильности выполнения вычислений приняты следующие значения исходных данных (Таблица 2.1).
-
A=
1,5
a0=
1,2
K=
1
a1=
5
Y0=
0
a2=
0,5
=
1
a3=
1
Таблица 2.1 – Исходные данные
Таблица 2.2
i |
|
X |
Ya |
Yн |
Yн |
Yн, % |
1 |
0,0 |
5,407 |
0,000 |
0,000 |
0,000 |
0,000 |
2 |
1,0 |
6,187 |
2,889 |
2,475 |
-0,414 |
-5,203 |
3 |
2,0 |
5,746 |
4,424 |
3,784 |
-0,641 |
-8,043 |
4 |
3,0 |
4,192 |
4,687 |
3,947 |
-0,739 |
-9,284 |
5 |
4,0 |
1,906 |
3,847 |
3,130 |
-0,717 |
-8,998 |
6 |
5,0 |
-0,554 |
2,232 |
1,657 |
-0,576 |
-7,227 |
7 |
6,0 |
-2,584 |
0,299 |
-0,040 |
-0,339 |
-4,256 |
8 |
7,0 |
-3,688 |
-1,447 |
-1,499 |
-0,052 |
-0,655 |
9 |
8,0 |
-3,595 |
-2,562 |
-2,337 |
0,225 |
2,822 |
10 |
9,0 |
-2,328 |
-2,765 |
-2,333 |
0,432 |
5,419 |
11 |
10,0 |
-0,197 |
-2,002 |
-1,479 |
0,523 |
6,566 |
12 |
11,0 |
2,276 |
-0,457 |
0,023 |
0,480 |
6,027 |
13 |
12,0 |
4,485 |
1,492 |
1,808 |
0,316 |
3,963 |
14 |
13,0 |
5,890 |
3,369 |
3,441 |
0,071 |
0,897 |
15 |
14,0 |
6,147 |
4,715 |
4,523 |
-0,192 |
-2,408 |
16 |
15,0 |
5,192 |
5,200 |
4,791 |
-0,409 |
-5,136 |
17 |
16,0 |
3,261 |
4,705 |
4,179 |
-0,527 |
-6,613 |
18 |
17,0 |
0,824 |
3,353 |
2,837 |
-0,516 |
-6,475 |
19 |
18,0 |
-1,520 |
1,473 |
1,094 |
-0,379 |
-4,755 |
20 |
19,0 |
-3,198 |
-0,474 |
-0,623 |
-0,149 |
-1,873 |
Таблица 2.2 – Результаты решения
Условные обозначения:
Ya, Yтр – соответственно решения уравнения (2.1):
Yтр – абсолютная погрешность решения уравнения (2.1)
Yтр – относительная погрешность решения уравнения (2.1)
Значение относительной погрешности определялось по формуле (2.5).
. (2.5)
2.4. Решение в Delphi
Листинг файла OutPut|.txt
A= 1.5000 K= 1.0000 Y0= 0.0000 Dtau= 1.0000 N= 20
A0= 1.2000 A1= 5.0000 A2= 0.5000 A3= 1.0000
I Tau X Ya Ynejav
0 0.00 5.4074 0.0000 0.0000
1 1.00 6.1875 2.8894 2.4750
2 2.00 5.7465 4.4242 3.7836
3 3.00 4.1924 4.6865 3.9471
4 4.00 1.9056 3.8472 3.1305
5 5.00 -0.5539 2.2324 1.6567
6 6.00 -2.5840 0.2994 -0.0396
7 7.00 -3.6877 -1.4466 -1.4988
8 8.00 -3.5946 -2.5619 -2.3371
9 9.00 -2.3277 -2.7650 -2.3334
10 10.00 -0.1971 -2.0018 -1.4788
11 11.00 2.2756 -0.4571 0.0229
12 12.00 4.4849 1.4921 1.8077
13 13.00 5.8900 3.3692 3.4406
14 14.00 6.1468 4.7149 4.5231
15 15.00 5.1924 5.1999 4.7908
16 16.00 3.2606 4.7054 4.1787
17 17.00 0.8242 3.3527 2.8369
18 18.00 -1.5201 1.4729 1.0941
19 19.00 -3.1985 -0.4737 -0.6229
I Tau DYnejav DeltaYnejav
0 0.00 0.0000 0.0000
1 1.00 -0.4144 -5.2029
2 2.00 -0.6406 -8.0431
3 3.00 -0.7394 -9.2837
4 4.00 -0.7167 -8.9982
5 5.00 -0.5756 -7.2274
6 6.00 -0.3390 -4.2561
7 7.00 -0.0522 -0.6554
8 8.00 0.2248 2.8218
9 9.00 0.4316 5.4190
10 10.00 0.5230 6.5663
11 11.00 0.4801 6.0272
12 12.00 0.3156 3.9626
13 13.00 0.0714 0.8966
14 14.00 -0.1918 -2.4083
15 15.00 -0.4090 -5.1355
16 16.00 -0.5267 -6.6127
17 17.00 -0.5158 -6.4754
18 18.00 -0.3788 -4.7555
19 19.00 -0.1492 -1.8729
ВЫВОДЫ
В данной работе я ознакомился с работой дифференциальных уравнений на практике. Рассмотрел, какие воздействия происходят под влиянием разных методов, разносторонних реакций воздействия.
Численное решение уравнения ОДУ неявным методом, проведенное в среде Excel и Turbo Delphi полностью совпадают и хорошо соотносятся с аналитическим решением уравнения.
СПИСОК ЛИТЕРАТУРЫ
-
Бронштейн И.Н., Семендяев К.А. Справочник по математике для инженеров и учащихся втузов. -13-е изд., исправленное. -М.: Наука, Гл.Ред. физ.-мат. лит., 1986. -544 с.
-
Волков Е.А. Численные методы: Учебное пособие. - М.: Наука. Главная редакция физико-математической литературы, 1982. - 256 с.
-
Тузова І.А., Челабчі В.В., Челабчі В.М. Чисельні методи. Навчальний посібник.- Одеса.:ОНМУ, 2012 – 39 с.
-
Годунов С.К., Рябенький В,С. Разностные схемы (введение в теорию). Учебное пособие. - М: Наука, 1973.- 400 с.
-
Львовский Е.Н. Статистические метода построения эмпирических формул: Учеб. пособие для втузов. - 2-е изд., перераб. и доп. -М.:Высш. шк., 1988. -239 с.
-
Мудров А.Е. Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль. - Томск: МП "Раско", 1991.-272 с.
-
Турчак Л.И. Основы численных методов: Учеб. Пособие. - М.: Наука, Гл.ред.физ.-мат. лит., 1987. - 320 с.
-
Методические указания разработанные кафедрой “Техническая кибернетика” и электронные документы – методические указания к лабораторным работам по курсам “Численные методы” и “Моделирование систем”.
ПРИЛОЖЕНИЕ
program Calc_ODU1;
{$APPTYPE CONSOLE}
uses
Math, sysutils, classes,
//Dialogs,
MyType, MyProc;
var
I,N : Ir;
A, K, Y0, A0, A1, A2, A3, Ymax, Ymin, Dtau : Db;
Tau, X, YA, Ynejav, DYnejav, DeltaYnejav : Vec;
F1,F2 : TextFile;
Begin
AssignFile(F1,'Input_ODU1.txt');
AssignFile(F2,'Output_ODU1.txt');
Reset(F1);
ReWrite(F2);
Readln(F1,A,K,Y0,Dtau,N);
Writeln('A=',A:7:4,' K=',K:7:4,' Y0=',Y0:7:4,' Dtau=',Dtau:7:4,' N=',N:3);
Writeln(F2,'A=',A:7:4,' K=',K:7:4,' Y0=',Y0:7:4,' Dtau=',Dtau:7:4,' N=',N:3);
Readln(F1,A0,A1,A2,A3);
Writeln(' A0=',A0:7:4,' A1=',A1:7:4,' A2=',A2:7:4,' A3=',A3:7:4);
Writeln(F2,' A0=',A0:7:4,' A1=',A1:7:4,' A2=',A2:7:4,' A3=',A3:7:4);
Readln;
An_Bienie(N,Y0,A,K,Dtau,A0,A1,A2,A3,Tau,X,YA);
Calc_Ynejav(N,A,K,Y0,Dtau,X,Ynejav);
Ymax := Ya[1];
Ymin := Ya[1];
for i:=2 to N-1 do
Begin
if (i=0) or (Ymax<YA[i]) then
Ymax:=Ya[i];
if (i=0) or (Ymin>YA[i]) then
Ymin:=Ya[i];
End;
Writeln(' I Tau X Ya Ynejav ');
Writeln(F2,' I Tau X Ya Ynejav ');
for I:=0 to N-1 do
begin
Writeln(I:2,' ',Tau[I]:6:2,' ',X[I]:7:4,' ',Ya[I]:7:4,' ',Ynejav[I]:7:4);
Writeln(F2,I:2,' ',Tau[I]:6:2,' ',X[I]:7:4,' ',Ya[I]:7:4,' ',Ynejav[I]:7:4);
end;
Readln;
Writeln(' I Tau DYnejav DeltaYnejav ');
Writeln(F2,' I Tau DYnejav DeltaYnejav ');
for I:=0 to N-1 do
begin
DYnejav[I]:=Ynejav[I]-Ya[I];
DeltaYnejav[I]:=DYnejav[I]/(Ymax-Ymin)*100;
Writeln(I:2,' ',Tau[I]:6:2,' ',DYnejav[I]:7:4,' ',DeltaYnejav[I]:7:4);
Writeln(F2,I:2,' ',Tau[I]:6:2,' ',DYnejav[I]:7:4,' ',DeltaYnejav[I]:7:4);
end;
Readln;
Close(F1);
Close(F2);
{ TODO -oUser -cConsole Main : Insert code here }
end.
unit MyProc;
interface
uses
MyType,
SysUtils,
Classes,
Math;
procedure An_Bienie(N:Ir; Y0,A,K,Dt,A0,A1,A2,A3:Db; Var T,X,Y:Vec);
procedure Calc_Ynejav(N:Ir; A,K,Y0,Dtau:Db; X:Vec; Var Ynejav:Vec);
implementation
procedure An_Bienie(N:Ir; Y0,A,K,Dt,A0,A1,A2,A3:Db; Var T,X,Y:Vec);
var
I : Ir;
C1,C2,C3 : Db;
begin
C1:=K*A0;
C2:=K*A1* (cos(A3) + A*A2*sin(A3) ) / (sqr(A*A2)+1);
C3:=K*A1* (sin(A3) - A*A2*cos(A3) ) / (sqr(A*A2)+1);
for I:=0 to N do
begin
T[I]:=Dt*I;
X[I]:=A0+A1*sin(A2*T[I] + A3);
Y[I]:=(Y0-C1-C3)*exp(-T[I]/A) + C1 + C2*sin(A2*T[I]) + C3*cos(A2*T[I]);
end;
End;
procedure Calc_Ynejav(N:Ir; A,K,Y0,Dtau:Db; X:Vec; Var Ynejav:Vec);
var
I : Ir;
D1,D2:Db;
begin
D1:=A/(A+Dtau);
D2:=K*Dtau/(A+Dtau);
Ynejav[0]:=Y0;
for I:=1 to N do
Ynejav[I]:=D1*Ynejav[I-1]+D2*X[I];
end;
End.