Читайте также: |
|
program kursovik;
uses crt;
type mas_1=array[1..15] of real;
mas_2=array[1..3,1..3] of real;
mas_3=array[1..2,1..2] of real;
var f,f1:text;
apprLIN,
A1_apprLIN,
A2_apprLIN,
C_apprEXP,
A2_apprEXP:mas_3;
apprKVAD,
A1_apprKVAD,
A2_apprKVAD,
A3_apprKVAD:mas_2;
X,Y:mas_1;
i,j:byte;
A1LIN,A2LIN,
CEXP,A1EXP,A2EXP,
A1KVAD,A2KVAD,A3KVAD,
kor_lin, {коэффициент корреляции }
deter_lin, {коэф. детерминированности
линейной аппроксимации}
deter_kvad, {коэф. детерминированности
квадратичной аппроксимации}
deter_exp, {коэф. детерминированности
экспоненциальная аппроксимация}
x2, {сумма квадратов х}
x3, {сумма кубов х}
x4, {сумма четвертых степеней х}
xy, {сумма произведений х на у}
x2y, {сумма произведений квадрата х на у}
lny, {сумма логарифмов у }
xlny, {сумма произведений х на логарифм у}
xsum, {сумма х}
ysum, {сумма у}
xsr, {среднее значение х}
ysr, {среднее значение у}
S1, {(x_i-x)*(y_i-y)}
S2, {(x_i-x)^2}
S3, {(y_i-y)^2}
LIN, {лин}
KVAD, {квадрат}
EXPON:real; {экспоненц}
{ функция возведения в целую степень }
function stepen(chislo:real;pokazat:integer):real;
var result:real;
istep:byte;
begin
result:=1;
for istep:=1 to pokazat do
result:=result*chislo;
stepen:=result;
end;
{ функция, возращающая значение опредилителя 2-ого порядка}
function det_2(mat:mas_3): real;
var result:real;
begin
result:=mat[1,1]*mat[2,2]-mat[1,2]*mat[2,1];
det_2:=result;
end;
{ функция, возращающая значение опредилителя 3-его порядка}
function det_3(mat:mas_2):real;
var M_d:mas_3; {минор элемента ij}
k_det3,i0_det3,j0_det3,j_det3:byte;
result:real;
begin
result:=0;
for j_det3:=1 to 3 do
begin
for i0_det3:=1 to 2 do
begin
k_det3:=0;
for j0_det3:=1 to 2 do
begin
if j_det3=j0_det3 then k_det3:=1;
M_d[i0_det3,j0_det3]:=mat[i0_det3+1,j0_det3+k_det3];
end;
end;
result:=stepen(-1,1+j_det3)*det_2(M_d)*mat[1,j_det3]+result;
end;
det_3:=result;
end;
{{{{{{ОСНОВНАЯ ПРОГРАММА}
begin
{ чтение исходных данных из файла }
assign(f,'parametr.txt');
reset(f);
readln(f);
for i:=1 to 15 do readln(f,x[i],y[i]);
close(f);
{ вычисление необходимых в расчетах параметров}
xsum:=0;ysum:=0;x2:=0;x3:=0;x4:=0;xy:=0;x2y:=0;
for i:=1 to 15 do
begin
x2:=x2+((X[i])*(X[i])); {сумма квадратов х}
x3:=x3+((X[i])*(X[i])*(X[i])); {сумма кубов х}
x4:=x4+((X[i])*(X[i])*(X[i])*(X[i])); {сумма четвертых степеней х}
xy:=xy+X[i]*Y[i]; {сумма произведений х на у}
x2y:=x2y+((X[i])*(X[i])*Y[i]); {сумма произведений квадрата х на у}
lny:=lny+ln(Y[i]); {сумма логарифмов у }
xlny:=xlny+X[i]*ln(Y[i]); {сумма произведений х на логарифм у}
xsum:=xsum+X[i];
ysum:=ysum+Y[i];
end;
xsr:=xsum/15; {среднее значение х}
ysr:=ysum/15; {среднее значение у}
{ВЫЧИСЛЕНИЕ КОЭФФИЦИЕНТОВ ПРОИЗВОДИТЬСЯ ПО ФОРМУЛЕ КРАМЕРА}
{ЛИНЕЙНАЯ АППРОКСИМАЦИЯ}
apprLIN[1,1]:=15; {матрица коэффициентов}
apprLIN[1,2]:=xsum;
apprLIN[2,1]:=xsum;
apprLIN[2,2]:=x2;
A1_apprLIN:=apprLIN;
A1_apprLIN[1,1]:=ysum;
A1_apprLIN[2,1]:=xy;
A2_apprLIN:=apprLIN;
A2_apprLIN[1,2]:=ysum;
A2_apprLIN[2,2]:=xy;
A1LIN:=det_2(A1_apprLIN)/det_2(apprLIN);
A2LIN:=det_2(A2_apprLIN)/det_2(apprLIN);
{КВАДРАТИЧНАЯ АППРОКСИМАЦИЯ}
apprKVAD[1,1]:=15; {матрица коэффициентов}
apprKVAD[1,2]:=xsum;
apprKVAD[1,3]:=x2;
apprKVAD[2,1]:=xsum;
apprKVAD[2,2]:=x2;
apprKVAD[2,3]:=x3;
apprKVAD[3,1]:=x2;
apprKVAD[3,2]:=x3;
apprKVAD[3,3]:=x4;
A1_apprKVAD:=apprKVAD;
A1_apprKVAD[1,1]:=ysum;
A1_apprKVAD[2,1]:=xy;
A1_apprKVAD[3,1]:=x2y;
A2_apprKVAD:=apprKVAD;
A2_apprKVAD[1,2]:=ysum;
A2_apprKVAD[2,2]:=xy;
A2_apprKVAD[3,2]:=x2y;
A3_apprKVAD:=apprKVAD;
A3_apprKVAD[1,3]:=ysum;
A3_apprKVAD[2,3]:=xy;
A3_apprKVAD[3,3]:=x2y;
A1KVAD:=det_3(A1_apprKVAD)/det_3(apprKVAD);
A2KVAD:=det_3(A2_apprKVAD)/det_3(apprKVAD);
A3KVAD:=det_3(A3_apprKVAD)/det_3(apprKVAD);
{ЭКСПОНЕНЦИАЛЬНАЯ АППРОКСИМАЦИЯ}
{матрица коэффициентов совпадает с матрицей коэффициентов
при линейной аппроксимации}
C_apprEXP:=apprLIN;
C_apprEXP[1,1]:=lny;
C_apprEXP[2,1]:=xlny;
A2_apprEXP:=apprLIN;
A2_apprEXP[1,2]:=lny;
A2_apprEXP[2,2]:=xlny;
CEXP:=det_2(C_apprEXP)/det_2(apprLIN);
A2EXP:=det_2(A2_apprEXP)/det_2(apprLIN);
A1EXP:=exp(CEXP);
{ коэффициент корреляции }
for i:=1 to 15 do
begin
S1:=S1+(X[i]-xsr)*(Y[i]-ysr);
S2:=S2+stepen((X[i]-xsr),2);
S3:=S3+stepen((Y[i]-ysr),2);
end;
kor_lin:=S1/(sqrt(S2)*sqrt(S3));
{ коэффициент детерминированности}
for i:=1 to 15 do
begin
LIN:=LIN+sqr(A1LIN+A2LIN*X[i]-Y[i]);
KVAD:=KVAD+sqr(A1KVAD+A2KVAD*X[i]+A3KVAD*stepen(X[i],2)-Y[i]);
EXPON:=EXPON+sqr(A1EXP*exp(A2EXP*X[i])-Y[i]);
end;
deter_lin:=1-LIN/S3; {линейная аппроксииация}
deter_kvad:=1-KVAD/S3;{квадратичная аппроксимация}
deter_exp:=1-EXPON/S3; {экспоненциальная аппроксимация}
{ВЫВОД РЕЗУЛЬТАТОВ}
clrscr;
writeln('ЛИНЕЙНАЯ АППРОКСИМАЦИЯ');
writeln(' 1.коэффициенты:');
writeln(' A1=',A1LIN:10:5);
writeln(' A2=',A2LIN:10:5);
writeln(' 2.коэф. корреляции:',kor_lin:10:5);
writeln(' 3.коэф. детерминированности:',deter_lin:10:6);
writeln;
{}
writeln('КВАДРАТИЧНАЯ АППРОКСИМАЦИЯ');
writeln(' 1.коэффициенты:');
writeln(' A1=',A1KVAD:10:5);
writeln(' A2=',A2KVAD:10:5);
writeln(' A3=',A3KVAD:10:5);
writeln(' 2.коэф. детерминированности:',deter_kvad:10:5);
writeln;
{}
writeln('ЭКСПОНЕНЦИАЛЬНАЯ АППРОКСИМАЦИЯ');
writeln(' 1.коэффициенты:');
writeln(' A1=',A1EXP:10:5);
writeln(' C= ',CEXP:10:5);
writeln(' A2=',A2EXP:10:5);
writeln(' 2.коэф. детерминированности:',deter_exp:10:5);
writeln;
{ вывод результатов в файл}
assign(f1,'pararez.txt');
rewrite(f1);
writeln(f1,'ЛИНЕЙНАЯ АППРОКСИМАЦИЯ');
writeln(f1,' 1.коэффициенты:');
writeln(f1,' A1=',A1LIN:10:5);
writeln(f1,' A2=',A2LIN:10:5);
writeln(f1,' 2.коэф. корреляции:',kor_lin:10:5);
writeln(f1,' 3.коэф. детерминированности:',deter_lin:10:5);
writeln(f1);
{}
writeln(f1,'КВАДРАТИЧНАЯ АППРОКСИМАЦИЯ');
writeln(f1,' 1.коэффициенты:');
writeln(f1,' A1=',A1KVAD:10:5);
writeln(f1,' A2=',A2KVAD:10:5);
writeln(f1,' A3=',A3KVAD:10:5);
writeln(f1,' 2.коэф. детерминированности:',deter_kvad:10:5);
writeln(f1);
{}
writeln(f1,'ЭКСПОНЕНЦИАЛЬНАЯ АППРОКСИМАЦИЯ');
writeln(f1,' 1.коэффициенты:');
writeln(f1,' A1=',A1EXP:10:5);
writeln(f1,' C=',CEXP:10:5);
writeln(f1,' A2=',A2EXP:10:5);
writeln(f1,' 2.коэф. детерминированности:',deter_exp:10:5);
writeln(f1);
close(f1);
end.
Дата добавления: 2015-07-19; просмотров: 62 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Получение числовых характеристик зависимости. | | | Результаты работы программы. |