Вычисление прогнозного значения

Прогноз значения зависимость средней температуры прогрева частицы от её радиуса для наполнителя NH4Cl.с помощью функции наиболее хорошо аппроксимирующей табличные данные, т.е по формуле (23).Результаты вычислений прогнозного значения представлены на рис.13.

ПРОГНОЗНОЕ ЗНАЧЕНИЕ
Xmax= 3,00  
Xmin= 1,20  
R= 1,80  
x= 0,7823077  
y= 1,94  

 

 

Рис.13.Фрагмент рабочего листа MS Excel вычисления прогнозного значения.

Здесь в ячейку H29 введена формула

=МАКС(B3:B16)

В ячейку H30 введена формула =МИН(B3:B16)

В ячейку H31 введена формула=H29-H30

В ячейку H32 введена формула=A19+0,1*H31

В ячейку H33 введена формула=E26+E27*H32

 

8.Расчёт аппроксимаций по программе в среде TURBO PASCAL 7.0

 

 

 


Program Kurs_MNK;

Uses crt,Graph;

 

Const

Nmax=100;

 

Type

Vector=array[1..Nmax] of real;

ari=array[1..100] of longint;

 

Var

f,g : text;

filevvod:string;

x1,y1:ari;

x,y,lny,STL,SsrL,STsqr,Ssrsqr: Vector;

Ftab,Stab:vector;

YL,Ysqr,Yexp,lnYexp:Vector;

i,N,N1: integer;

Sx,Sy,Sxy,Sx2,Sx3,Sx4,Sx2y,Sx2sr,Sy2sr,Sxysr,Slny,Sxlny:real;

a1L,a2L,koef_cor:real;

MD:real;

Sa1L,Sa2L:real;

Xsr,Ysr,lnYsr:real;

SostL,SregrL,SpolnL,R_det_L:real;

FLine,SLine,ta1L,ta2L:real;

a1sqr,a2sqr,a3sqr:real;

Sa1sqr,Sa2sqr,Sa3sqr:real;

Sostsqr,Sregrsqr,Spolnsqr,R_det_sqr,DSost:real;

Fsqr,Ssqr,ta1sqr,ta2sqr,ta3sqr:real;

cexp,a1exp,a2exp:real;

Sa1exp,Sa2exp:real;

Sostexp,Sregrexp,Spolnexp,R_det_exp:real;

Fexp,ta1exp,ta2exp:real;

gr:integer;

Min,Max,Xpr,Ypr:real;

 

Procedure Inp_vect(name:String;Var a,b:Vector; Var N:Integer);

Var

k:integer;

f:text;

Begin

N:=0;

k:=1;

Assign(f,name);

{$I-}

reset(f);

{$I+}

if IOResult = 0 then

begin

reset(f);

while not SeekEOF(f) do

begin

while not SeekEOLN(f) do

begin

ReadLn(f,a[k],b[k]);

N:=N+1;

k:=k+1;

end;

end;

close(f);

end

else WriteLn('File with name ',name,' not found');

end;

 

Procedure L_Kram(Var a11:Integer; Var a12,a21,a22,b1,b2:real; Var a1,a2:real);

Var

D,D1,D2: Real;

begin

D:=a11*a22-a21*a12;

D1:=b1*a22-b2*a12;

D2:=a11*b2-a21*b1;

a1:=D1/D;

a2:=D2/D;

end;

 

Procedure Sqr_Kram(var a11:integer;

var a12,a13,a21,a22,a23,a31,a32,a33,b1,b2,b3:real;

var a1,a2,a3,MD:real);

var

D,D1,D2,D3:real;

begin

D:=a11*a22*a33+a12*a23*a31+a21*a32*a13-a13*a22*a31-a21*a12*a33-a11*a23*a32;

D1:=b1*a22*a33+a12*a23*b3+b2*a32*a13-a13*a22*b3-b2*a12*a33-b1*a23*a32;

D2:=a11*b2*a33+b1*a23*a31+a21*b3*a13-a13*b2*a31-a21*b1*a33-a11*a23*b3;

D3:=a11*a22*b3+a12*b2*a31+a21*a32*b1-b1*a22*a31-a21*a12*b3-a11*b2*a32;

a1:=D1/D;

a2:=D2/D;

a3:=D3/D;

MD:=D;

end;

 

Procedure koef_det(ns:integer;a,b:vector;c:real;var s1,s2,s3,r:real);

var

i:integer;

begin

for i:=1 to ns do

begin

s1:=s1+sqr(b[i]-a[i]);

s2:=s2+sqr(b[i]-c);

end;

s3:=s1+s2;

R:=1-s1/s3;

end;

 

Procedure ZnachLine(n:integer; DS,R2,a,asr,a1,a2:real; var s1,s2,f,t1,t2:real);

begin

s1:=sqrt(ds*a/(n*(n-2)*asr));

s2:=sqrt(ds/((n-2)*asr));

f:=R2*(n-2)/(1-R2);

t1:=abs(a1)/s1;

t2:=abs(a2)/s2;

end;

 

Procedure print(var gr:integer;

sa1,sa2,sa3,sk,sR,sm1,sm2,sm3,sf,st1,st2,st3:string;

a1,a2,a3,k,R,m1,m2,m3,f,t1,t2,t3:real);

var

Fd,Sd:real;

st:string;

begin

Case gr of

1: st:='Linear approximation';

2: st:='Quadratic approximation';

3: st:='Exponentional approximation';

end;

write(g,sa1,'=',a1:7:4,' ',sa2,'=',a2:7:4);

if gr=2 then write(g,' ',sa3,'=',a3:7:4);

writeln(g,' - coefficients ',st);

if gr=1 then writeln(g,sk,k:9:6,' - correlation coefficients');

writeln(f,sr,r:9:6,' - determination coefficient');

write(g,sm1,m1:8:6,' ',sm2,m2:8:6);

if gr=2 then write(g,' ',sm3,m3:8:6);

writeln(g,' - standard errors of coefficients');

writeln(g,'Criteria for checking null hypotheses');

write(g,sf,f:8:3,' ',st1,t1:8:3,' ',st2,t2:8:3);

if gr=2 then write(g,' ',st3,t3:8:3);

writeln(g);

if gr=2 then fd:=ftab[2] else fd:=ftab[1];

if gr=2 then sd:=stab[2] else sd:=stab[1];

if f>fd then writeln(g,'equation ',st,' is significant')

else writeln(g,'equation ',st,' is not significant');

if t1>sd then writeln(g,'coefficient ',sa1,' is significant')

else writeln(g,'coefficient ',sa1,' is not significant');

if t2>sd then writeln(g,'coefficient ',sa2,' is significant')

else writeln(g,'coefficient ',sa2,' is not significant');

if gr=2 then

if t3>sd then writeln(g,'coefficient ',sa3,' is significant')

else writeln(g,'coefficient ',sa3,' is not significant');

end;

 

Procedure grafik(var gr:integer);

const

k=100;

kxn=95;kxk=590;

kyn=70;kyk=385;

var

dr,md,i:integer;

x,y:vector;

kx,ky:ari;

ymin,ymax:real;

l:integer;

vol:string;

mx,my:real;

h:real;

 

function IntStr(l,dig:integer):string;

var buf:string[10];

begin

str(l:dig,buf);

IntStr:=buf;

end;

 

begin

clrscr;

h:=30/(k-1);

x[1]:=0;

ymin:=0;

ymax:=100;

 

for i:=1 to k do

begin

case gr of

1: y[i]:=a1l+a2l+x[i];

2: y[i]:=a1sqr+a2sqr+x[i]+a3sqr*x[i]*x[i];

3: y[i]:=a1exp*exp(a2exp*x[i]);

end;

if i<>100 then x[i+1]:=x[i]+h;

end;

mx:=(kxk-kxn)/(x[k]-x[1]);

my:=(kyk-kyn)/(ymax-ymin);

for i:=1 to k do

begin

kx[i]:=round((x[i]-x[1])*mx)+kxn;

ky[i]:=round((ymax-y[i])*my)+kyn;

end;

dr:=detect;

initgraph(dr,md,'');

setbkcolor(7);

cleardevice;

setcolor(1);

setlinestyle(0,0,2);

line(95,385,590,385);

line(95,385,95,70);

settextstyle(1,0,2);

for i:=0 to 10 do

begin

l:=100-i*10;

vol:=intstr(l,3);

outtextxy(30,50+i*32,vol);

end;

for i:=0 to 6 do

begin

l:=0+i*5;

vol:=intstr(l,3);

outtextxy(70+i*85,390,vol);

end;

for i:=1 to n do

circle(x1[i],y1[i],2);

case gr of

1: outtextxy(250,70,'y = a1L + a2L * x');

2: outtextxy(180,70,'y = a1sqr + a2sqr * x + a3sqr * x^2');

3: outtextxy(220,70,'y = a1exp * exp(a2exp * x)');

end;

setcolor(4);

for i:=1 to k-1 do

line(kx[i],ky[i],kx[i+1],ky[i+1]);

readkey;

closegraph;

end;

 

procedure minmax(var a:vector;var n:integer; var min,max:real);

var i:integer;

begin

min:=a[1];

max:=a[1];

for i:=2 to n do

begin

if a[i]<min then min:=a[i];

if a[i]>max then max:=a[i];

end;

end;

 

 

BEGIN

writeln('Enter full name of the source data file');

readln(filevvod);

inp_vect(filevvod,x,y,n);

writeln('Enter full name of the table data file');

readln(filevvod);

inp_vect(filevvod,ftab,stab,n1);

sx:=0; sy:=0; sx2:=0; sxy:=0;

sx3:=0; sx4:=0; sx2y:=0;

slny:=0; sxlny:=0;

for i:=1 to n do

begin

sx:=sx+x[i];

sy:=sy+y[i];

sx2:=sx2+sqr(x[i]);

sxy:=sxy+x[i]*y[i];

sx3:=sx3+sqr(x[i])*x[i];

sx4:=sx4+sqr(sqr(x[i]));

sx2y:=sx2y+sqr(x[i])*y[i];

lny[i]:=ln(y[i]);

slny:=slny+lny[i];

sxlny:=sxlny+x[i]*lny[i];

end;

xsr:=sx/n;

ysr:=sy/n;

lnysr:=slny/n;

sxysr:=0; sx2sr:=0; sy2sr:=0;

for i:=1 to n do

begin

sxysr:=sxysr+(x[i]-xsr)*(y[i]-ysr);

sx2sr:=sx2sr+sqr(x[i]-xsr);

sy2sr:=sy2sr+sqr(y[i]-ysr);

end;

l_kram(n,sx,sx,sx2,sy,sxy,a1l,a2l);

koef_cor:=sxysr/(sqrt(sx2sr)*sqrt(sy2sr));

for i:=1 to n do yl[i]:=a1l+a2l*x[i];

koef_det(n,y,yl,ysr,sostl,sregrl,spolnl,r_det_l);

znachline(n,sostl,r_det_l,sx2,sx2sr,a1l,a2l,sa1l,sa2l,fline,ta1l,ta2l);

sqr_kram(n,sx,sx2,sx,sx2,sx3,sx2,sx3,sx4,sy,sxy,sx2y,a1sqr,a2sqr,a3sqr,md);

for i:=1 to n do ysqr[i]:=a1sqr+a2sqr*x[i]+a3sqr*sqr(x[i]);

koef_det(n,y,ysqr,ysr,sostsqr,sregrsqr,spolnsqr,r_det_sqr);

dsost:=sostsqr/(n-3);

sa1sqr:=sqrt(dsost*(sx2*sx4-sx3*sx3)/md);

sa2sqr:=sqrt(dsost*(n*sx4-sx2*sx2)/md);

sa3sqr:=sqrt(dsost*(n*sx2-sx*sx)/md);

fsqr:=r_det_sqr*(n-3)/(2*(1-r_det_sqr));

ta1sqr:=abs(a1sqr)/sa1sqr;

ta2sqr:=abs(a2sqr)/sa2sqr;

ta3sqr:=abs(a3sqr)/sa3sqr;

l_kram(n,sx,sx,sx2,slny,sxlny,cexp,a2exp);

a1exp:=exp(cexp);

for i:=1 to n do

begin

yexp[i]:=a1exp*exp(a2exp*x[i]);

lnyexp[i]:=ln(yexp[i]);

end;

koef_det(n,lny,lnyexp,lnysr,sostexp,sregrexp,spolnexp,r_det_exp);

znachline(n,sostexp,r_det_exp,sx2,sx2sr,a1exp,a2exp,sa1exp,sa2exp,fexp,ta1exp,ta2exp);

assign(g,'out.dat');

rewrite(g);

writeln(g,'Source data');

for i:=1 to n do writeln(g,x[i]:6:2,' ',y[i]:6:2);

writeln(g,' N=',N:2,' - number of observations');

writeln(g,'Table data');

for i:=1 to n1 do writeln(g,ftab[i]:6:2,' ',stab[i]:8:4);

gr:=1;

print(gr,'a1L','a2L','','koef_cor=','R_det_L=','Sa1L=','Sa2L=','',

' FLine=','ta1L=','ta2L=','',a1L,a2L,0,koef_cor,r_det_l,

sa1l,sa2l,0,fline,ta1l,ta2l,0);

gr:=2;

print(gr,'a1sqr','a2sqr','a3sqr','','R_det_sqr=',' Sa1sqr=',' Sa2sqr=',

' Sa3sqr=','Fsqr=','ta1sqr=','ta2sqr=','ta3sqr=',a1sqr,a2sqr,

a3sqr,0,r_det_sqr,sa1sqr,sa2sqr,sa3sqr,fsqr,ta1sqr,ta2sqr,ta3sqr);

gr:=3;

print(gr,' a1exp',' a2exp','','',' R_det_exp=',' Sa1exp=',' Sa2exp=','',

' Fexp=','ta1exp=','ta2exp=','',a1exp,a2exp,0,0,r_det_exp,

sa1exp,sa2exp,0,fexp,ta1exp,ta2exp,0);

minmax(x,n,min,max);

xpr:=xsr+0.1*(max-min);

ypr:=a1l+a2l*xpr;

writeln(g,'In the forecast point Xpr=',xpr:6:4,' forecast value Ypr=',ypr:6:4);

close(g);

for i:=1 to n do

begin

x1[i]:=round(95+x[i]*495/30);

y1[i]:=round(385-y[i]*315/100);

end;

gr:=1;

grafik(gr);

gr:=2;

grafik(gr);

gr:=3;

grafik(gr);

END.

 

 

 

 

((((((В результате программы был создан файл out.txt.

Его содержимое таково:

 

Source data

0.30 12.00

0.34 18.00

0.40 25.00

0.41 32.00

0.42 38.00

0.43 44.00

0.45 50.00

0.46 56.00

0.47 62.00

0.48 68.00

0.49 75.00

0.43 82.00

0.45 87.00

0.32 100.00

N=14 - number of observations

Table data

4.75 2.1604

4.84 2.1788

a1L=-18.9299 a2L=173.3365 - coefficients Linear approximation

koef_cor= 0.381798 - correlation coefficients

Sa1L=51.087560 Sa2L=121.130453 - standard errors of coefficients

Criteria for checking null hypotheses

FLine= 2.048 ta1L= 0.371 ta2L= 1.431

equation Linear approximation is not significant

coefficient a1L is not significant

coefficient a2L is not significant

a1sqr=277.9180 a2sqr=-1369.9111 a3sqr=1956.4418 - coefficients Quadratic approximation

Sa1sqr=359.837834 Sa2sqr=1855.333517 Sa3sqr=2346.937491 - standard errors of coefficients

Criteria for checking null hypotheses

Fsqr= 1.345 ta1sqr= 0.772 ta2sqr= 0.738 ta3sqr= 0.834

equation Quadratic approximation is not significant

coefficient a1sqr is not significant

coefficient a2sqr is not significant

coefficient a3sqr is not significant

a1exp= 3.5136 a2exp= 6.1484 - coefficients Exponentional approximation

Sa1exp=1.043173 Sa2exp=2.473400 - standard errors of coefficients

Criteria for checking null hypotheses

Fexp= 6.179 ta1exp= 3.368 ta2exp= 2.486

equation Exponentional approximation is significant

coefficient a1exp is significant

coefficient a2exp is significant

In the forecast point Xpr=0.4369 forecast value Ypr=56.7934)))))) ИСПРАВИТЬ

 

Вывод.

В курсовой работе мы решили задачу при проведении эксперимента зависимости средней температуры прогрева частицы от её радиуса для различных наполнителей. зависимость средней температуры прогрева частицы от её радиуса для различных наполнителей, определили тип и параметры аналитической зависимости, аппроксимирующей результаты испытаний. Используя компьютерные возможности, которые мы проходили на первом курсе нашего обучения в СПГГУ, и методические указания. Это во многом облегчило нам решение поставленной задачи. Курсовая выполнена и оформлена программами: текстовой редактор Microsoft World, электронные таблицы Microsoft Excel. Программа на языке программирования Паскаль является реализацией цикла табулирования. Полученные ответы выполненные разными программами, сходятся и проверены.

 

Список литературы.

1. Методические указания по выполнению курсовой работы / Санкт Петербургский государственный горный институт (технический университет). Сост. Г.Н.Журов, В.В.Беляев, Г.П.Парамонов. СПб,2010.54 с.

2.Беляев В.В. Информатика. Аппроксимация методом наименьших квадратов. Методическое указание по выполнению курсовой работы студентов всех специальностей. / В.В. Беляев, Г.Н. Журов. Спб.:СПГГИ(ТУ),2005.

 

 

Приложения

Рис.15. Образ в программе Microsoft Excel.

Рис.16. Образ в программе Microsoft Excel.

 

 

Рис.17. Образ в программе Microsoft Excel.

 

 

Рис.18. Образ в программе Microsoft Excel (графики).