Нахождение приближающей функции — КиберПедия 

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Нахождение приближающей функции

2017-05-21 358
Нахождение приближающей функции 0.00 из 5.00 0 оценок
Заказать работу

 

в виде других элементарных функций

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 = v x = u  
Получим функцию v = A u + B          
3. Дробно-линейная функция:        
y =        
ax + b    
Откуда   = ax + b            
             
  y            

 


 

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


 

 

  = v x = u  
y  
     

 


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

 

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

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

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

 

5. Гипербола: y = ax + b

 

Замена: a = A, b = B y = v  
Получим функцию v = A u + B          
6. Дробно-рациональная функция:   y = x  
     
ax + b  
Откуда:   = ax + b ;     = a + b            
y     y x          
    x              
Замена: a = B, b = A     = v  
     
                      y  
Получим функцию v = A u + B          

 

ln x = u

 

 

1 x = u

 

1 x = u

 


 

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

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('Если хотите использовать другой вид уравнения регрессии,'); Write('введите 1, иначе 0 - '); Readln(m); Until m=0;

 

end.

{ Для нелинейных уравнений вводят линеаризацию следующим образом:

1) для степенной функции y=axm: ln(y)=ln(a)+m•ln(x);

 

ln(y)=Y, m=A, ln(a)=B, ln(x)=X.

Получаем Y=AX+B.

2) для показательной функции y=a•emx, a>0: ln(y)=ln(a)+mx;

 

ln(y)=Y, ln(a)=B, m=A.

 

Получаем Y=Ax+B.


 

3) для дробно-линейной функции y=1/(ax+b): перепишем ур.: 1/y=ax+b;

 

1/y=Y.

Получаем Y=ax+b.

 

4) для логарифмической функции y=a•ln(x)+b: ln(x)=X.

 

Получаем y=aX+b.

 

5) для гиперболической функции y=(a/x)+b: 1/x=X.

 

Получаем y=aX+b.

 

6) для дробно-линейной функции y=x/(ax+b): перепишем ур.: 1/y=a+(b/x);

 

1/y=Y, a=B, 1/x=X, b=A.

 

Получаем Y=AX+B.

Для заданного набора данных (xi, yi) рассматривают несколько зависимостей и

выбирают такую, где функционал F меньше остальных.

Далее МНК применяем также как и к линейной функции:

Покажем как найти min F=∑i=1n(φ(xi)–yi)2; для лин. функ.: φ(x)=ax+b – лин. функ.

Задача, найти a и b так, чтобы F(a, b) достигала min.

 

F(a, b) –функ.двух переменных,необходимое условие экстремума(в данном случае min)–равенство 0 частных производных.

Составим: F(a, b)=

i=1n(yi–(axi+b))2;

Условие минимума: ∂F/∂a=0 и ∂F/∂b=0;

 

Сист. двух ур. с двумя неизвестными a и b (такая система наз. нормальной) (метод наименьших квадратов МНК).

∂F/∂a=–2∑i=1n(yi–(axi+b))xi;

∂F/∂b=–2∑i=1n(yi–(axi+b));

таким образом сист. норм. ур. запишется в виде:

{∑i=1n(yi–axi–b)xi=0;

|∑i=1n(yi–axi–b)=0;

{∑i=1nyixi–a∑i=1nxi2–b∑i=1nxi=0;

|∑i=1nyi–a∑i=1nxi–nb=0;

Введём обозначение:

Mx=(1/n)∑i=1nxi;

My=(1/n)∑i=1nyi;

Mxy=(1/n)∑i=1nyixi;

Mx2=(1/n)∑i=1nxi2;

Система запишется:

{aMx2+bMx=Mxy;

|aMx+b=My;

a=(Mxy–MxMy)/(Mx2–(Mx)2);

 

b=(Mx2My–MxMxy)/(Mx2–(Mx)2);}


 


Поделиться с друзьями:

История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.021 с.