Нахождение приближающей функции в виде других элементарных функций

1. Степенная функция: y=a xm

Прологарифмируем: ln y = ln a + m ln x

Замена: m = A, ln a = B ln y = v ln x = u

Получим функцию v = A u + B

 

2. Показательная функция: y=a emx

Прологарифмируем: ln y = ln a + m x

Замена: m = A, ln a = B ln y = vx = u

Получим функцию v = A u + B

 

3. Дробно-линейная функция:

Откуда

Замена: a = A, b = B x = u

Получим функцию v = A u + B

 

4. Логарифмическая функция: y=a ln x + b

Замена: a = A, b = B y = v ln x = u

Получим функцию v = A u + B

 

5. Гипербола:

Замена: a = A, b = B y = v

Получим функцию v = A u + B

 

6. Дробно-рациональная функция:

Откуда: ;

Замена: a = B, b = A

Получим функцию v = A u + B

 

Программа нахождения уравнения регрессии методом наименьших квадратов:

program lin_regr; { *** Уравнение регрессии *** }

const p=30;

var x,y,u,v: array [1..p] of real;

i,j,n,k,m: byte;

d,a,b,s,s1,s2,s3,s4: real;

begin

Write('Введите N - число пар таблицы - ');Readln(N);

Writeln('Введите попарно координаты точки X Y - ');

For i:=1 to n do readln(x[i],y[i]);

Repeat

Writeln('Выберите вид уравнения регрессии,');

Writeln(' параметры которого хотите рассчитать');

Writeln('1) y = A * x + B 2) y = A * x^M 3) y = A * exp(M * x)');

Writeln('Введите номер выбранного варианта - '); Readln(k);

s1:=0; s2:=0; s3:=0; s4:=0;

For i:=1 to n do

begin

case k of

1: begin U[i]:=X[i]; V[i]:=Y[i] end;

2: begin U[i]:=ln(X[i]); V[i]:=ln(Y[i]) end;

3: begin U[i]:=X[i]; V[i]:=ln(Y[i]) end;

end;

s1:=s1+U[i]; s2:=s2+v[i];

s3:=s3+U[i]*V[i]; s4:=s4+U[i]*U[i]

end;

D:=N*s4-sqr(s1);

A:=(N*s3-s1*s2)/d; B:=(s4*s2-s1*s3)/d;

s:=0;

Writeln(' Y[i] V[i] (Y[i]-V[i])^2 S');

For i:=1 to n do

begin V[i]:=A*U[i]+B;

if (k=2) or (k=3) then V[i]:=exp(V[i]);

s:=s+sqr(Y[i]-V[i]) ;

writeln(y[i]:10:6,V[i]:15:6,sqr(y[i]-v[i]):15:6,' s=',s:10:6)

end;

Writeln('Уравнение линии регрессии');

case k of

1: Writeln('y = ',A:10:6,' * x + ',B:10:6);

2: Writeln('y = ', exp(B):10:6,'* x^',A:10:6);

3: Writeln('y= ', exp(B):10:6, '*exp(',A:10:6,'*X)');

end;

Writeln('S=',s:10:6);

Writeln('Если хотите использовать другой вид уравнения регрессии,');

Write('введите 1 , иначе 0 - '); Readln(m);

Until m=0;

end.

Введите N - число пар таблицы - 10

Введите попарно координаты точки X Y -

0.6 1.9

0.7 2.3

0.8 2.2

0.9 2.8

0.5 1.8

1.1 3.1

1.0 2.9

0.4 1.7

0.2 1.2

1.2 4.0

Выберите вид уравнения регрессии,

параметры которого хотите рассчитать

1) y = A * x + B 2) y = A * x^M 3) y = A * exp(M * x)

Введите номер выбранного варианта -

Y[i] V[i] (Y[i]-V[i])^2 S

1.900000 2.045455 0.021157 s= 0.021157

2.300000 2.291558 0.000071 s= 0.021228

2.200000 2.537662 0.114016 s= 0.135244

2.800000 2.783766 0.000264 s= 0.135508

1.800000 1.799351 0.000000 s= 0.135508

3.100000 3.275974 0.030967 s= 0.166475

2.900000 3.029870 0.016866 s= 0.183341

1.700000 1.553247 0.021537 s= 0.204878

1.200000 1.061039 0.019310 s= 0.224188

4.000000 3.522078 0.228410 s= 0.452597

Уравнение линии регрессии

y = 2.461039 * x + 0.568831

S= 0.452597

Если хотите использовать другой вид уравнения регрессии,

введите 1 , иначе 0 - 1

Выберите вид уравнения регрессии,

параметры которого хотите рассчитать

1) y = A * x + B 2) y = A * x^M 3) y = A * exp(M * x)

Введите номер выбранного варианта -

Введите номер выбранного варианта -

Y[i] V[i] (Y[i]-V[i])^2 S

1.900000 2.134337 0.054914 s= 0.054914

2.300000 2.345556 0.002075 s= 0.056989

2.200000 2.545345 0.119263 s= 0.176253

2.800000 2.735651 0.004141 s= 0.180394

1.800000 1.908933 0.011866 s= 0.192260

3.100000 3.093224 0.000046 s= 0.192306

2.900000 2.917911 0.000321 s= 0.192627

1.700000 1.665196 0.001211 s= 0.193838

1.200000 1.089392 0.012234 s= 0.206072

4.000000 3.262453 0.543975 s= 0.750047

 

Уравнение линии регрессии

y = 2.917911* x^ 0.612169

S= 0.750047

Если хотите использовать другой вид уравнения регрессии,

введите 1 , иначе 0 - 1

Выберите вид уравнения регрессии,

параметры которого хотите рассчитать

1) y = A * x + B 2) y = A * x^M 3) y = A * exp(M * x)

Введите номер выбранного варианта -

Y[i] V[i] (Y[i]-V[i])^2 S

1.900000 1.949325 0.002433 s= 0.002433

2.300000 2.169959 0.016911 s= 0.019344

2.200000 2.415565 0.046468 s= 0.065812

2.800000 2.688971 0.012328 s= 0.078140

1.800000 1.751125 0.002389 s= 0.080528

3.100000 3.332119 0.053879 s= 0.134408

2.900000 2.993321 0.008709 s= 0.143117

1.700000 1.573076 0.016110 s= 0.159226

1.200000 1.269449 0.004823 s= 0.164049

4.000000 3.709265 0.084527 s= 0.248577

Уравнение линии регрессии

y= 1.024426*exp( 1.072251*X)

S= 0.248577

Если хотите использовать другой вид уравнения регрессии,

введите 1 , иначе 0 - 0