Аппроксимация функции методом наименьших квадратов

Автор работы: Пользователь скрыл имя, 28 Сентября 2013 в 12:42, курсовая работа

Описание работы

Аппроксимация (от латинского "approximate" -"приближаться")- приближенное выражение каких-либо математических объектов (например, чисел или функций) через другие более простые, более удобные в пользовании. В научных исследованиях часто применяется для описания, анализа, обобщения и дальнейшего использования эмпирических результатов.
Между величинами может существовать точная (функциональная) связь, когда одному значению аргумента соответствует одно определенное значение функции, и менее точная (корреляционная) связь, когда одному конкретному значению аргумента соответствует приближенное значение или некоторое множество значений функции, в той или иной степени близких друг к другу. При ведении научных исследований, обработке результатов наблюдения или эксперимента обычно приходится сталкиваться со вторым вариантом.

Файлы: 1 файл

курсовик .doc

— 1.56 Мб (Скачать файл)

В ячейке G71 введена формула: =B59/(1-B59)*((27-3)/2);

В ячейке G72 введена формула: =C72;

В ячейке G73 введена формула: =B73;

В ячейке G74 введена формула: =A73;

В ячейке J71 введено число 2,0639(определено по α=0,05 и df=25);

В ячейке I72 введена формула: =ABS(F42)/G72;

 В  ячейке I73 введена формула: =ABS(F43)/G73;

В ячейке I74 введена формула: =ABS(F44)/G74;

В итоге  имеем следующие неравенства:

Fквадр = 514,68>Fтабл = 4,26. Значит нулевая гипотеза Н0: Dфакт = Dост отвергается, т.е. коэффициент детерминированности R2квадр значим.

= 3,66> = 2,0639. Значит нулевая гипотеза Н0: а1 = 0 отвергается, т.е. коэффициент а1 значим.

= 15,47> = 2,0639. Значит нулевая гипотеза Н0: а2=0 принимается, т.е. коэффициент а2 значим.

  = 0,61< = 2,639. Значит нулевая гипотеза Н0: а3 = 0 принимается, т.е. коэффициент а3 незначим. Из этого следует, что зависимость y и x не является квадратичной, а фактически сводится к линейной y = a2x + a1.

5.4 Оценка значимости экспоненциальной  аппроксимации

Для построения числовых характеристик  экспоненциальной аппроксимации необходимо создать табличную формулу, которая будет содержать 5 строк и 2 столбца. Для этого выполним следующую последовательность действий:

  1. Выделим область А78:B82.
  2. Вызовем Мастер функции.
  3. Выберем функцию ЛГРФПРИБЛ.
  4. Определим аргументы функции
    • В качестве изв_знач_у укажем A2:A28.
    • В качестве изв_знач_х укажем B2:B28.
    • Третье поле Константа оставим пустым.
    • В четвертом поле стат наберем истина.
  5. Нажмем кнопку ОК.
  6. Установим курсор в строку формул.

Нажмем комбинацию клавиш Ctrl+Shift+Enter, это обеспечивает ввод табличной формулы.

В результате получим таблицу 5.5, где  в ячейках A78:B82 введена формула {=ЛИНЕЙН(A2:A28;B2:B28;ИСТИНА;ИСТИНА)}.

Таблица 5.5

 

Оценку значимости коэффициента детерминированности  R2эксп проводим по F-критерию Фишера , а оценку параметров a1 и a2 по t-критерию Стьюдента. Результаты представлены в таблице 5.6.

Таблица 5.6


В ячейке E78 введена формула: =Q29/26;

В ячейке E79 введена формула: =(Q29-R29)/1;

В ячейке E80 введена формула: =B82/25;

В ячейке G77 введено число 4,24 (определено по α=0,05 и df=25);

В ячейке G78 введена формула: =B61/(1-B61)*(27-2);

В ячейке G79 введена формула: =B79;

В ячейке G80 введена формула: =A79;

В ячейке I78 введено число 2,0555(определено по α=0,05 и df=26);

В ячейке I79 введена формула: =ABS(E51)/G79;

В ячейке I80 введена формула: =ABS(E50)/G80;

В итоге имеем следующие неравенства:

Fэксп= 256,1598>Fтабл= 4,24. Значит нулевая гипотеза Н0: Dфакт = Dост отвергается, т.е. коэффициент детерминированности R2эксп значим.

= 93,977> = 2,0555. Значит нулевая гипотеза Н0: а1 = 0 отвергается, т.е. коэффициент а1 значим.

= 16,005> = 2,0555. Значит нулевая гипотеза Н0: а2 = 0 отвергается, т.е. коэффициент а2 значим.

Вывод : Лучше всего функцию, заданную таблицей 1 аппроксимирует линейная функция (25) , т.к. не смотря на то, что коэффициент детерминированности квадратичной аппроксимации выше, но в ней а3 при x2 незначим, и она фактически сводится к линейной. У экспоненциальной аппроксимации коэффициент детерминированности значим, но он еще меньше, чем у линейной зависимости.

 

6. Решение задачи в Turbo Pascal 7.0

6.1. Схема алгоритма

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.2. Программа, выполненная на  языке Pascal,

с необходимыми пояснениями.

REGRESS.PAS

Program regress;

type matr_coef=array[1..3,1..3] of real;

     vect_3=array[1..5] of real;

     vect_dat=array[1..100] of real;

     vect_sys=array[1..5] of real;

  var f,f1:text;

       n,i:integer;

       ierr1:integer;

       ierr2:integer;

       ierr3:integer;

  x_sr,y_sr,sigma_x,sigma_y,

  r,r2_lin,r2_kvadr,r2_exp,

  s1,s2,s3,s4,sy,sy2,sxy,sx2y,slny,sxlny,

  xc,yc,

  s_reg_lin,s_reg_kvadr,s_reg_exp,

  s_ost_lin,s_ost_kvadr,s_ost_exp,

  s_full,h_exp_correct,

  h_lin,h_kvadr,h_exp:real;

  s_matr,s1_matr:matr_coef;

  a_lin,a_kvadr,a_exp,y_pr,y1_pr:vect_3;

  x,y,y_lin,y_kvadr,y_exp:vect_dat;

{Процедура решения системы линейных  уравнений медом Гаусса

 с выбором главном элемента}

 Procedure Gauss(A:matr_coef;b:vect_3;

  var x:vect_3;

  var ierr:integer;n:integer);

Var i,j,k,imax:integer;

   s:real;

begin

ierr:=0;

 {********************************************}

{Прямой ход метода  Гаусса}

{k-номер ключевой строки}

{ключевую строку делим  на главныйэлемент}

 For k:=1 to n-1 do

begin

if abs(a[k,k])<1e-5 then

    begin

    ierr:=1;

    exit

    end;

    for j:=k+1 to n do a[k,j]:=a[k,j]/a[k,k];

    b[k]:=b[k]/a[k,k];

 {Из всех срок, расположенных под ключевой, вычитаем ключевую,

  умноженную на соответствующий  коэффициент}

 for i:=k+1 to n do

     begin

     for j:=k+1 to n do

     a[i,j]:=a[i,j]-a[k,j]*a[i,k];

     b[i]:=b[i]-b[k]*a[i,k]

     end;

     end;{конец цикла по k}

     {Матрица приведена  к треугольному виду; ее коэффициенты

     находятся на диагонали  и выше.

     Новые значение коэффициентов,  расположенных под диагональю

     не вычисляем, т.к.  они не используется в последующих  вычислениях}

     {***************************************************************}

     {Обратный  ход методы Гаусса}

 if abs(a[n,n])<1e-5 then

    begin

    ierr:=1;

    exit

    end;

   x[n]:=b[n]/a[n,n];

   for i:=n-1 downto 1 do

   begin

   x[i]:=b[i];

   for j:=i+1 to n do x[i]:=x[i]-a[i,j]*x[j]

   end;

   end;{Конец процедуры Гаусса}

 

   {Основная программа}

 

begin

assign(f,'f:\avdeeva\123.txt');

assign(f1,'f:\avdeeva\321.txt');

reset(f);

rewrite(f1);

{ввод данных}

readln(f);

n:=0;

while not SeekEOF(f) do

begin

n:=n+1;

readln(f,x[n],y[n]);

end;

if n=0 then begin writeln('Файл данных  пуст');exit end;

{Вывод данных}

writeln(f1,'chislo nabludenii n=',n);

writeln(f1,'massivi dannix');

writeln(f1,' x  y');

for i:=1 to n do

      writeln(f1,x[i]:7:3,'',y[i]:7:3);

      {Вычисление  сумм}

s1:=0;s2:=0;s3:=0;s4:=0;sy:=0;sy2:=0;sxy:=0;sx2y:=0;slny:=0;sxlny:=0;

for i:=1 to n do

begin

xc:=x[i];yc:=y[i];

s1:=s1+xc;

s2:=s2+sqr(xc);

s3:=s3+xc*sqr(xc);

s4:=s4+sqr(sqr(xc));

sy:=sy+yc;

sy2:=sy2+sqr(yc);

sxy:=sxy+xc*yc;

  sx2y:=sx2y+sqr(xc)*yc;

  slny:=slny+ln(yc);

  sxlny:=sxlny+xc*ln(yc)

  end;

  {Формирование матрицы систем  уравнений для параметров регрессии}

  s_matr[1,1]:=n;s_matr[1,2]:=s1;s_matr[1,3]:=s2;

  s_matr[2,1]:=s1;s_matr[2,2]:=s2;s_matr[2,3]:=s3;

  s_matr[3,1]:=s2;s_matr[3,2]:=s3;s_matr[3,3]:=s4;

  {Формирование вектора правой части системы для экспоненциальной регрессии}

  y_pr[1]:=sy;y_pr[2]:=sxy;y_pr[3]:=sx2y;

  y1_pr[1]:=slny; y1_pr[2]:=sxlny;

  {Вычисление коэффицинтов уравнения регрессии}

  gauss(s_matr,y_pr,a_lin,ierr1,2);

  gauss(s_matr,y_pr,a_kvadr,ierr2,3);

  gauss(s_matr,y1_pr,a_exp,ierr3,2);

  a_exp[1]:=exp(a_exp[1]);

  {Вывод коэффициентов уравнений регрессии}

  writeln(f1,'koeficienti linein regresii');

  writeln(f1,'a1=',a_lin[1]:7:3,'a2=',a_lin[2]:7:3);

  writeln(f1,'koeficient kvadr regresii');

  writeln(f1,'a1=',a_kvadr[1]:7:3,'a2=',a_kvadr[2]:7:3,'a3=',a_kvadr[3]:7:3);

writeln(f1,'koefficient exponen regresii');

writeln(f1,'a1=',a_exp[1]:7:3,'a2=',a_exp[2]:7:3);

 {Определение общих статистических параметров}

 x_sr:=s1/n; y_sr:=sy/n;

sigma_x:=sqrt(s2/n-sqr(x_sr)); sigma_y:=sqrt(sy2/n-sqr(y_sr));

r:=(sxy/n-x_sr*y_sr)/(sigma_x*sigma_y);

 {Вычисление регрессионных и остаточных сумм}

 s_reg_lin:=0;s_reg_kvadr:=0;s_reg_exp:=0;

s_ost_lin:=0;s_ost_kvadr:=0;s_ost_exp:=0;

s_full:=0;

for i:=1 to n do

begin

s_reg_lin:=s_reg_lin+sqr(a_lin[1]+a_lin[2]*x[i]-y_sr);

s_reg_kvadr:=s_reg_kvadr+sqr(a_kvadr[1]+a_kvadr[2]*x[i]+

                a_kvadr[3]*sqr(x[i])-y_sr);

s_reg_exp:=s_reg_exp+sqr(a_exp[1]*exp(a_exp[2]*x[i])-y_sr);

s_ost_lin:=s_ost_lin+sqr(a_lin[1]+a_lin[2]*x[i]-y[i]);

s_ost_kvadr:=s_ost_kvadr+sqr(a_kvadr[1]+a_kvadr[2]*x[i]+

            a_kvadr[3]*sqr(x[i])-y[i]);

s_ost_exp:=s_ost_exp+sqr(a_exp[1]*exp(a_exp[2]*x[i])-y[i]);

s_full:=s_full+sqr(y[i]-y_sr);

  h_lin:=1-s_ost_lin/s_full;

  h_kvadr:=1-s_ost_kvadr/s_full;

  h_exp:=1-s_ost_exp/s_full; h_exp_correct:=1-s_ost_exp/(s_ost_exp+s_reg_exp)

  end;

  writeln(f1,'cr znach peremen x: x_sr=',x_sr:7:3);

  writeln(f1,'cr znachen peremen y: y_sr=',y_sr:7:3);

  writeln(f1,'standartn otklon peremen x: sigma_x',sigma_x:7:3);

  writeln(f1,'standartn otklon peremen y: sigma_y',sigma_y:7:3);

  writeln(f1,'koeff korelaicii r=',r:7:4);

  writeln(f1,'koef determ lin regresii h_lin=', h_lin:7:3);

  writeln(f1,'koef determ kvadr regresii h_kvadr',h_kvadr:7:3);

  writeln(f1,'koef determ expon regresii h_exp=',

  h_exp:7:3);

  writeln(f1,'ispravl koef h_exp_correct=',h_exp_correct:7:3);

  close(f1);

  end.

Прежде, чем приступить к запуску  программы, нужно создать файл данных:

123.txt

 

27

0.51   4.57

1.11   6.22

1.62   8.99

2.65   13.09

2.74   13.45

3.33   15.11

3.39   16.03

3.51   16.51

3.99   18.42

4.42   20.13

4.87   20.87

5.35   23.83

5.94   26.18

6.87   26.76

7.12   30.88

7.3     31.15

7.44   32.15

7.98   33.32

8.87   37.84

8.9     37.96

9.54   42.65

9.6     42.88

9.87    41.82

10.65  43.76

10.76  45.36

11.03  45.97

    1. 49.34

 

Результаты работы программы содержатся в файле:

321.txt

chislo nabludenii n=27

massivi dannix

x  y

  0.510  4.570

  1.110  6.220

  1.620  8.990

  2.650 13.090

  2.740 13.450

  3.330 15.110

  3.390 16.030

  3.510 16.510

  3.990 18.420

  4.420 20.130

  4.870 20.870

  5.350 23.830

  5.940 26.180

  6.870 26.760

  7.120 30.880

  7.300 31.150

  7.440 32.150

  7.980 33.320

  8.870 37.840

  8.900 37.960

  9.540 42.650

  9.600 42.880

  9.870 41.820

10.650 43.760

10.760 45.360

11.030 45.970

11.760 49.340

koeficienti linein regresii

a1=  2.153a2=  4.015

koeficient kvadr regresii

a1=  2.491a2=  3.866a3=  0.012

koefficient exponen regresii

a1=  7.543a2=  0.180

cr znach peremen x: x_sr=  6.338

cr znachen peremen y: y_sr= 27.601

standartn otklon peremen x: sigma_x  3.277

standartn otklon peremen y: sigma_y 13.190

koeff korelaicii r= 0.9976

koef determ lin regresii h_lin=  0.995

koef determ kvadr regresii h_kvadr  0.995

koef determ expon regresii h_exp=  0.891

ispravl koef h_exp_correct=  0.928

 

Заключение

В работе были рассмотрены различные  виды аппроксимаций. Сравним три  аппроксимации: результаты, полученные с помощью средств Microsoft Excel; значения коэффициента корреляции и коэффициентов детерминированности для трех аппроксимаций, полученные графически; результаты, с помощью программы на языке Turbo Pascal 7.0. Исходя из анализа результатов всех способов аппроксимации, можно сказать, что линейная аппроксимация наилучшим образом описывает рассмотренные эмпирические данные. Ее коэффициент детерминированности наиболее близок к 1 и равен 0,9952.

Сравнивая результаты коэффициентов  корреляции и детерминированности, полученные при помощи программы  на языке PASCAL, видим, что они полностью  совпадают с вычислениями, проведенными выше. Это указывает на то, что вычисления верны.

 

Рекомендательный библиографический  список

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

3. Меженный О. А. Самоучитель по Turbo Pascal 7.0, М.: «Вильямс», 2004.




Информация о работе Аппроксимация функции методом наименьших квадратов