Автор работы: Пользователь скрыл имя, 18 Ноября 2012 в 12:37, курсовая работа
Целью курсовой работы является углубление знаний по информатике, развитие и закрепление навыков работы с табличным процессором Microsoft Excel и применение их для решения задач с помощью ЭВМ из предметной области, связанной с исследованиями.
В каждом задании формулируются условия задачи, исходные данные, форма выдачи результатов, указываются основные математические зависимости для решения задачи. В соответствии с методом решения задачи разрабатывается алгоритм решения, который представляется в графической форме. Разработанная программа проходит этап отладки, в процессе которого обнаруживаются ошибки, допущенные при составлении алгоритма и написании программы. Контрольный расчет позволяет убедится в правильности работы программы.
delta2_13,delta3_13
a1_13,a2_13,a3_13
delta_15,delta1_15,delta2_15
по формулам Крамера
c_15,a2_15,a1_15
Xsr,Ysr
X_XsrY_Ysr((X-Xср)(Y-Yср)),
X_Xsr2((X-Xср)^2),Y_Ysr2((Y-
ost_lin(a1+a2*x-y),ost_kv(a1+
reg_lin(a1+a2*x-Yср),reg_kv(
SumX_XsrY_Ysr,SumX_Xsr2,SumY_
Sumost_lin,Sumost_kv,Sumost_
Sumreg_lin,Sumreg_kv,Sumreg_
Ro
R2_lin
R2_kv
R2_exp
Описание типов}
type
A = array [1..25] of Real;
{Описание переменных}
var
date:text;
i:Integer;
X,Y:A;
x2,xy,x3,x4,x2y,lny,xlny,Sumx,
Sumx3,Sumx4,Sumx2y,Sumlny,
delta_11,delta1_11,delta2_11,
delta_13,delta1_13,delta2_13,
delta_15,delta1_15,delta2_15,
Xsr,Ysr,X_XsrY_Ysr,X_Xsr2,Y_
SumX_XsrY_Ysr,SumX_Xsr2,SumY_
Ro,R2_lin,R2_kv,R2_exp,reg_
reg_exp,Sumreg_lin,Sumreg_kv,
{Основная программа}
begin
Assign(date,'kurs.dat');
{Связывает переменную date с файлом kurs.dat,
который находится на диске С в каталоге kursinf}
Rewrite(date);{Открываем этот
{Ввод начальных значений
for i:=1 to 25 do begin
WRITE('Введите X[',i,'] = ');
READLN(X[i]);
WRITELN;
WRITE('Введите Y[',i,'] = ');
READLN(Y[i]);
WRITELN;
end;
{Выполняем промежуточные
Sumx:=0;
Sumy:=0;
Sumx2:=0;
Sumxy:=0;
Sumx3:=0;
Sumx4:=0;
Sumx2y:=0;
Sumlny:=0;
Sumxlny:=0;
for i:=1 to 25 do begin
x2:=X[i]*X[i];
xy:=X[i]*Y[i];
x3:=X[i]*X[i]*X[i];
x4:=X[i]*X[i]*X[i]*X[i];
x2y:=X[i]*X[i]*Y[i];
lny:=LN(Y[i]);
xlny:=X[i]*lny;
Sumx:=Sumx+X[i];
Sumy:=Sumy+Y[i];
Sumx2:=Sumx2+x2;
Sumxy:=Sumxy+xy;
Sumx3:=Sumx3+x3;
Sumx4:=Sumx4+x4;
Sumx2y:=Sumx2y+x2y;
Sumlny:=Sumlny+lny;
Sumxlny:=Sumxlny+xlny;
end;
{Аппроксимируем функцию y=f(x) линейной функцией у=a1+a2*x
(находим коэффициенты a1 и a2)}
delta_11:=25*Sumx2-Sumx*Sumx;
delta1_11:=Sumy*Sumx2-Sumx*
delta2_11:=25*Sumxy-Sumy*Sumx;
a1_11:=delta1_11/delta_11;
a2_11:=delta2_11/delta_11;
{Аппроксимируем функцию y=f(x) квадратичной функцией y=a1+a2*x+a3*x^2
(находим коэффициенты a1, a2 и a3)}
delta_13:=25*Sumx2*Sumx4+Sumx*
delta1_13:=Sumy*Sumx2*Sumx4+
delta2_13:=25*Sumxy*Sumx4+
delta3_13:=25*Sumx2*Sumx2y+
a1_13:=delta1_13/delta_13;
a2_13:=delta2_13/delta_13;
a3_13:=delta3_13/delta_13;
{Аппроксимируем функцию y=f(x) экпоненциальной функцией y=a1*exp(a2*x)
(находим коэффициенты a1 и a2)}
delta_15:=25*Sumx2-Sumx*Sumx;
delta1_15:=Sumlny*Sumx2-Sumx*
delta2_15:=25*Sumxlny-Sumlny*
c_15:=delta1_15/delta_15;
a2_15:=delta2_15/delta_15;
a1_15:=exp(c_15);
{Находим среднее арифметическое значений x и y}
Xsr:=Sumx/25;
Ysr:=Sumy/25;
{Выполняем промежуточные расчеты согласно таблице 7}
SumX_XsrY_Ysr:=0;
SumX_Xsr2:=0;
SumY_Ysr2:=0;
Sumost_lin:=0;
Sumost_kv:=0;
Sumost_exp:=0;
Sumreg_lin:=0;
Sumreg_kv:=0;
Sumreg_exp:=0;
for i:=1 to 25 do begin
X_XsrY_Ysr:=(X[i]-Xsr)*(Y[i]-
X_Xsr2:=(X[i]-Xsr)*(X[i]-Xsr);
Y_Ysr2:=(Y[i]-Ysr)*(Y[i]-Ysr);
ost_lin:=((a1_11+a2_11*X[i])-
ost_kv:=((a1_13+a2_13*X[i]+a3_
a3_13*X[i]*X[i])-Y[i]);
ost_exp:=((a1_15*exp(a2_15*X[
reg_lin:=((a1_11+a2_11*X[i])-
reg_kv:=((a1_13+a2_13*X[i]+a3_
a3_13*X[i]*X[i])-Ysr);
reg_exp:=((a1_15*exp(a2_15*X[
SumX_XsrY_Ysr:=SumX_XsrY_Ysr+
SumX_Xsr2:=SumX_Xsr2+X_Xsr2;
SumY_Ysr2:=SumY_Ysr2+Y_Ysr2;
Sumost_lin:=Sumost_lin+ost_
Sumost_kv:=Sumost_kv+ost_kv;
Sumost_exp:=Sumost_exp+ost_
Sumreg_lin:=Sumreg_lin+reg_
Sumreg_kv:=Sumreg_kv+reg_kv;
Sumreg_exp:=Sumreg_exp+reg_
end;
{Находим коэффициент
Ro:=SumX_XsrY_Ysr/(sqrt(SumX_
{Находим коэффициенты детерминированности}
{Для линейной аппроксимации}
R2_lin:=1-(Sumost_lin/(Sumost_
{Для квадратичной аппроксимации}
R2_kv:=1-(Sumost_kv/(Sumost_
{Для экспоненциальной аппроксимации}
R2_exp:=1-(Sumost_exp/(Sumost_
{Вывод результатов}
WRITELN;
WRITELN(date,' Результаты расчета');
WRITELN(date,' коэффициентов аппроксимации');
WRITELN(date);
WRITELN(date,' Для линейной аппроксимации');
WRITELN(date);
WRITE(date,' a1=',a1_11:8:4); Write(date,' ');
WRITE(date,' a2=',a2_11:7:4);
WRITELN(date);
WRITELN(date);
WRITELN(date,' Для квадратичной аппроксимации');
WRITELN(date);
WRITE(date,' a1=',a1_13:8:5); Write(date,' ');
WRITE(date,' a2=',a2_13:7:5); Write(date,' ');
WRITE(date,' a3=',a3_13:7:5);
WRITELN(date);
WRITELN(date);
WRITELN(date,' Для экспоненциальной аппроксимации');
WRITELN(date);
WRITELN(date);
WRITE(date,' a1=',a1_15:7:5); Write(date,' ');
WRITE(date,' a2=',a2_15:7:5);
WRITELN(date);
WRITELN(date);
WRITELN(date,' Результаты расчета коэффициента');
WRITELN(date,' корреляции (для линейной)');
WRITE(date,' Ro=',Ro:7:5);
WRITELN(date,' Результаты расчета коэффициентов');
WRITELN(date,' детерминированности');
WRITELN(date);
WRITELN(date);
WRITELN(date,' Для линейной аппроксимации');
WRITELN(date);
WRITE(date,' R2_lin=',R2_lin:7:5);
WRITELN(date);
WRITELN(date);
WRITELN(date,' Для квадратичной аппроксимации');
WRITELN(date);
WRITE(date,' R2_kv=',R2_kv:7:5);
WRITELN(date);
WRITELN(date);
WRITELN(date,' Для экспоненциальной аппроксимации');
WRITELN(date);
WRITE(date,' R2_exp=',R2_exp:7:5);
Close(date);{Закрытие файла, связанного с переменной date}
WRITELN(' Результаты расчета');
WRITELN(' коэффициентов аппроксимации');
WRITELN;
WRITELN(' Для линейной аппроксимации');
WRITELN;
WRITE(' a1=',a1_11:8:4); Write(' ');
WRITE(' a2=',a2_11:7:4);
WRITELN;
WRITELN(' Для квадратичной аппроксимации');
WRITELN;
WRITE(' a1=',a1_13:8:5); Write(' ');
WRITE(' a2=',a2_13:7:5); Write(' ');
WRITE(' a3=',a3_13:7:5);
WRITELN;
WRITELN(' Для экспоненциальной аппроксимации');
WRITELN;
WRITE(' a1=',a1_15:7:5); Write(' ');
WRITE(' a2=',a2_15:7:5);
WRITELN;
WRITELN(' Нажмите клавишу ENTER...');
READLN;
WRITELN(' Результаты расчета коэффициента');
WRITELN(' корреляции (для линейной)');
WRITELN;
WRITE(' Ro=',Ro:7:5);
WRITELN;
WRITELN(' Результаты расчета коэффициентов');
WRITELN(' детерминированности');
WRITELN;
WRITELN(' Для линейной аппроксимации');
WRITELN;
WRITE(' R2_lin=',R2_lin:7:5);
WRITELN;
WRITELN(' Для квадратичной аппроксимации');
WRITELN;
WRITE(' R2_kv=',R2_kv:7:5);
WRITELN;
WRITELN(' Для экспоненциальной аппроксимации');
WRITELN;
WRITE(' R2_exp=',R2_exp:7:5);
Информация о работе Аппроксимация функции методом наименьших квадратов