Автор работы: Пользователь скрыл имя, 03 Апреля 2015 в 11:28, курсовая работа
Аппроксимация (от латинского "approximate" -"приближаться")- приближенное выражение каких-либо математических объектов (например, чисел или функций) через другие более простые, более удобные в пользовании или просто более известные. В научных исследованиях аппроксимация применяется для описания, анализа, обобщения и дальнейшего использования эмпирических результатов.
Как известно, между величинами может существовать точная (функциональная) связь, когда одному значению аргумента соответствует одно определенное значение, и менее точная (корреляционная) связь, когда одному конкретному значению аргумента соответствует приближенное значение или некоторое множество значений функции, в той или иной степени близких друг к другу
Таблица 9
Рис.5.1. Блок-схема
program Kramer;
uses CRT;
const
n=25;
type
TArrayXY = array[1..2,1..n] of real;
TArray = array[1..n] of real;
var
SumX,SumY,SumX2,SumXY,SumX3,
OPRlin,OPRkvadr,OPRa1,OPRa2,
a1lin,a2lin,a1kvadr,a2kvadr,
Xsr,Ysr,S1,S2,S3,Slin,Skvadr,
Kkor,KdetLin,KdetKvadr,
i:byte;
const
ArrayXY:TArrayXY=((12.85,12.
145.59,108.37,100.76,98.32,81.
begin
ClrScr;
SumX:=0.0;
SumY:=0.0;
SumXY:=0.0;
SumX2:=0.0;
SumX3:=0.0;
SumX4:=0.0;
SumX2Y:=0.0;
SumLnY:=0.0;
SumXLnY:=0.0;
{ Вычисление сумм x, y, x*y, x^2, x^3, x^4, (x^2)*y, Ln(y), x*Ln(y) }
for i:=1 to n do
begin
SumX:=SumX+ArrayXY[1,i];
SumY:=SumY+ArrayXY[2,i];
SumXY:=SumXY+ArrayXY[1,i]*
SumX2:=SumX2+sqr(ArrayXY[1,i])
SumX3:=SumX3+ArrayXY[1,i]*
SumX4:=SumX4+sqr(ArrayXY[1,i])
SumX2Y:=SumX2Y+sqr(ArrayXY[1,
SumLnY:=SumLnY+ln(ArrayXY[2,i]
SumXLnY:=SumXLnY+ArrayXY[1,i]*
end;
{ Вычисление коэффициентов }
OPRlin:=0.0;
a1lin:=0.0;
a2lin:=0.0;
a1kvadr:=0.0;
OPRkvadr:=0.0;
a2kvadr:=0.0;
a2kvadr:=0.0;
a1exp:=0.0;
a2exp:=0.0;
OPRlin:=n*SumX2-SumX*SumX;
a1lin:=(SumX2*SumY-SumX*SumXY)
a2lin:=(n*SumXY-SumX*SumY)/
OPRkvadr:=n*SumX2*SumX4+SumX*
a1kvadr:=(SumY*SumX2*SumX4+
a2kvadr:=(n*SumXY*SumX4+SumY*
a3kvadr:=(n*SumX2*SumX2Y+SumX*
a2exp:=(n*SumXLnY-SumX*SumLnY)
cexp:=(SumX2*SumLnY-SumX*
a1exp:=exp(cexp);
{ Вычисление средних арифметических x и y }
Xsr:=SumX/n;
Ysr:=SumY/n;
S1:=0.0;
S2:=0.0;
S3:=0.0;
Slin:=0.0;
Skvadr:=0.0;
Sexp:=0.0;
Kkor:=0.0;
KdetLin:=0.0;
KdetKvadr:=0.0;
KdetExp:=0.0;
for i:=1 to n do
begin
S1:=S1+(ArrayXY[1,i]-Xsr)*(
S2:=S2+sqr(ArrayXY[1,i]-Xsr);
S3:=S3+sqr(ArrayXY[2,i]-Ysr);
Slin:=Slin+sqr(a1lin+a2lin*
Skvadr:=Skvadr+sqr(a1kvadr+
Sexp:=Sexp+sqr(a1exp*exp(
end;
{ Вычисление коэффициентов
Kkor:=S1/sqrt(S2*S3);
KdetLin:=1-Slin/S3;
KdetKvadr:=1-Skvadr/S3;
KdetExp:=1-Sexp/S3;
{ Вывод результатов }
WriteLn('Линейная функция');
WriteLn('a1=',a1lin:8:5);
WriteLn('a2=',a2lin:8:5);
WriteLn('Квадратичная функция');
WriteLn('a1=',a1kvadr:8:5);
WriteLn('a2=',a2kvadr:8:5);
WriteLn('a3=',a3kvadr:8:5);
WriteLn('Экспоненциальная функция');
WriteLn('a1=',a1exp:8:5);
WriteLn('a2=',a2exp:8:5);
WriteLn('c=',cexp:8:5);
WriteLn('Xcp=',Xsr:8:5);
WriteLn('Ycp=',Ysr:8:5);
WriteLn('Коэффициент корреляции ',Kkor:8:5);
WriteLn('Коэффициент
WriteLn('Коэффициент
WriteLn('Коэффициент
end.
Коэффициенты линейной функции
a1=-24.73516
a2=11.63471
Коэффициенты квадратичной функции
a1= 1.59678
a2=-0.62145
a3= 0.95543
Коэффициенты экспоненциальной функции
a1= 1.65885
a2= 0.40987
c= 0.50613
Xcp= 6.52320
Ycp=51.16040
Коэффициент корреляции 0.96196
Коэффициент детерминированности (линейная аппроксимация) 0.92537
Коэффициент детерминированности (квадратическая аппроксимация) 0.99409
Коэффициент детерминированности (экспоненциальная аппроксимация) 0.02691
Сделаем заключение по результатам полученных данных:
1. Анализ
результатов расчетов
2. Сравнивая результаты, полученные при помощи функции ЛИНЕЙН видим что они полностью совпадают с вычислениями, проведенными выше. Это указывает на то, что вычисления верны.
3. Полученное
при построении линии тренда
значение коэффициента
4. Результаты
полученные с помощью
Информация о работе Аппроксимация функций методом наименьших квадратов