Автор работы: Пользователь скрыл имя, 06 Марта 2013 в 19:42, курсовая работа
В рассматриваемом случае функциональную зависимость Y=f(X) заданную таблично (табулированную) приближенно отражают (аппроксимируют) аналитической функцией, график которой проходит возможно ближе к точкам с координатами (xi, yi), но не требуют совпадения значений искомого полинома и табулированной функции в точках (xi, yi). При подобной аппроксимации чаще всего используется метод наименьших квадратов и надстройку «Поиск решения».
Последовательность действий:
Подлежащая обработке выборка экспериментальных данных представляется на диаграмме набором точек с координатами X, Y (строится точечная диаграмма);
СОДЕРЖАНИЕ КУРСОВОЙ РАБОТЫ 2
1 АППРОКСИМАЦИЯ 4
1.1 Основы методики 4
1.2 Последовательность действий при работе в среде Exsel. 4
2 РЕШЕНИЕ ОБЫКНОВЕННОГО ДИФФЕРЕНЦИАЛЬНОГО УРАВНЕНИЯ ПЕРВОГО ПОРЯДКА 7
2.1 Постановка задачи 7
2.2 Решение ОДУ1 неявным методом 7
2.3 Решение ОДУ1 разностным методом (Аналитико-сеточный B=a+bt ) 7
2.4 Реализация численных решений в среде Excel 8
2.5 Реализация численных решений в среде Delphi 10
2.6 Заключение 13
ЛИТЕРАТУРНЫЕ ИСТОЧНИКИ 14
ПРИЛОЖЕНИЕ А 15
program ODU1;
{$APPTYPE CONSOLE}
uses
SysUtils,
MyType,
Math,
classes, Graphics,
Graphik in 'Graphik.pas' {GraphikFm};
var
Im,I,Key: Ir;
A,K,Y0,DT,a0,a1,a2,a3,Start: Db; // a0, a1, a2, a3 - коофициенты воздействия
D1,D2,D4,D5,C1,C2,C3,C4,Yamax,
T,X,Ya,Yac,Yya, DYac, DYya, ddYac, ddYya: Vec;
F1,F2:TextFile;
begin
AssignFile(F1,'Input1.txt');
Reset(F1);
Readln(F1,A,K,Y0,Im,DT,a0,a1,
CloseFile(F1);
Writeln('A=', A:7:4, ' K=', K:7:4, ' Y0=', Y0:7:4);
Writeln(' Im=', Im:3, ' DT=', DT:5:2);
Writeln(' a0=', a0:7:4, ' a1=', a1:7:4, ' a2=', a2:7:4, ' a3=', a3:7:4 );
Readln;
D1:=exp(-DT/A); // коэфициенты аналитико-сеточного метода
D2:=(1-exp(-DT/A))*k/2;
D4:=1-DT/A; // коэфециенты явного метода
D5:=k*DT/A;
C1:=K*a0; // коэфициенты аналитического решения
C2:=K*a1*(cos(a3)+A*a2*sin(a3)
C3:=K*a1*(sin(a3)-A*a2*cos(a3)
T[1]:=Start;
X[1]:=a0+a1*sin(a2*T[1])*cos(
Ya[1]:=(Y0-C1-C3)*exp(-T[1]/A)
Yac[1]:=Y0; // Аналитико-сеточный метод с линейным воздействием
Yya[1]:=Y0; // явный метод
Yamin:=Ya[1];
Yamax:=Ya[1];
for I := 2 to Im do
begin
T[i]:=Start+Dt*(I-1);
X[i]:=a0+a1*sin(a2*T[i])*cos(
Ya[i]:=(Y0-C1-C3)*exp(-T[i]/A)
Yac[i]:=D1*Yac[i-1]+D2*(x[i]+
Yya[i]:=D4*Yya[i-1]+D5*x[i];
end;
for I := 1 to Im do
begin
if Ya[i]>Yamax then Yamax:=Ya[i] else
if Ya[i]<Yamin then Yamin:=Ya[i];
end;
for I := 1 to Im do
begin
DYac[i]:=Yac[i]-Ya[i]; // погрешность
DYya[i]:=Yya[i]-Ya[i];
ddYac[i]:=DYac[i]/(Yamax-
ddYya[i]:=DYya[i]/(Yamax-
end;
Writeln('T',#9,'X',#9,'Ya',#9,
for I := 1 to Im do
Writeln(T[i]:3:2,X[i]:8:4,Ya[
GrProp.Line1Color := clRed;
GrProp.Line2Color := clBlack;
GrProp.Line3Color := clBlue;
GrProp.Line4Color := clGreen;
GrProp.Point1Color := clRed;
GrProp.Point2Color := clBlack;
GrProp.Point3Color := clBlue;
GrProp.Point4Color := clGreen;
GrProp.GridDigitsY := 3;
GrProp.GridDigitsX := 3;
GrProp.Line1Caption := 'X(t)';
GrProp.Line2Caption := 'Ya(t)';
GrProp.Line3Caption := 'Yya(t)';
GrProp.Line4Caption := 'Yac(t)';
ShowGraphik (T, X, T, Ya, T, Yac, T, Yya, Im,Im,Im,Im);
GrProp.Line1Caption := 'dYac(t)';
GrProp.Line2Caption := 'dYya(t)';
GrProp.Line3Caption := '';
GrProp.Line4Caption := '';
ShowGraphik (T, ddYac, T, ddYya, T, Yac, T, Yya, Im,Im,0,0);
AssignFile(F2,'Output1.txt');
ReWrite(F2);
Writeln(F2,'A=', A:7:4, ' K=', K:7:4, ' Y0=', Y0:7:4);
Writeln(F2,' Im=', Im:3, ' DT=', DT:5:2);
Writeln(F2,' a0=', a0:7:4, ' a1=', a1:7:4, ' a2=', a2:7:4, ' a3=', a3:7:4);
Writeln(F2, 'T',#9,'X',#9,'Ya',#9,'Yac'#9,
for I := 1 to Im do
Writeln(F2, T[i]:3:2,X[i]:8:4,Ya[i]:8:4, Yac[i]:8:4, Yya[i]:8:4, DYac[i]:8:4, DYya[i]:8:4, ddYac[i]:8:4, ddYya[i]:8:4 );
CloseFile(F2);
readln;
end.
Информация о работе Решение обыкновенных дифференциальных уравнений 1-го порядка