Метод на най-малките квадрати за приближение на данни с използване на система Mathematica

[Graphics:HTMLFiles/index_1.gif]

Кратка теоретична част        

Дадено : Таблица ... #1082;цията  y = f (x) : { x_1, y_1}, ..., { x_n1, y_n1} .

Цел : Да се намерl ... е квадрати (МНМК) .

От теорията : Мет ... 88;есионен анализ .

Нека търсеният & ... .        .        .         2k                                       k                           k

Средноквадрат ... sp;δ_k = (Underoverscript[∑, i = 1, arg3] (f (x_i) - p_k (x_i))^2)^(1/2)    .

Приложения : Пол ... p;  така, че   p_k (t) ≈f (t) .

RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{RowBox ... 1083;ином . }], FontFamily -> Arial, FontSize -> 18, FontWeight -> Bold]}]

  Решение : Зад& ... 72;ме графиката в [1, 2] :

f[xx_] := xx + Sin[xx^2]      RowBox[{RowBox[{a, =, 1.}], ;, RowBox[{b, =, 2.}],  , ;}] gf = Plot[f[xx], {xx, a, b}]

[Graphics:HTMLFiles/index_11.gif]

⁃Graphics⁃

a) Изчисляваме ма ...    в интервала [a, b] :

n1 = 11 ;   h = (b - a)/(n1 - 1) ; Print["Step h= ", h] x = Table[a + h *  ... stPlot, [, RowBox[{xy, ,, RowBox[{PlotStyle, , RowBox[{PointSize, [, 0.02, ]}]}]}], ]}]}]

RowBox[{Step h= , , 0.1}]

RowBox[{x=, , RowBox[{{, RowBox[{1., ,, 1.1, ,, 1.2, ,, 1.3, ,, 1.4, ,, 1.5, ,, 1.6, ,, 1.7, ,, 1.8, ,, 1.9, ,, 2.}], }}]}]

RowBox[{y=, , RowBox[{{, RowBox[{1.84147, ,, 2.03562, ,, 2.19146, ,, 2.2929, ,, 2.32521, ,, 2.27807, ,, 2.14936, ,, 1.94895, ,, 1.70175, ,, 1.44853, ,, 1.2432}], }}]}]

RowBox[{{, RowBox[{RowBox[{{, RowBox[{1., ,, 1.84147}], }}], ,, RowBox[{{, RowBox[{1.1, ,, 2.0 ... ], ,, RowBox[{{, RowBox[{1.9, ,, 1.44853}], }}], ,, RowBox[{{, RowBox[{2., ,, 1.2432}], }}]}], }}]

[Graphics:HTMLFiles/index_19.gif]

⁃Graphics⁃

б) Изчисляваме с ... 087;олином   - c0  и  c1 :

s0 = n1 ; s1 = Underoverscript[∑, i = 1, arg3] x_〚i〛   ; s2 = Un ... Solve[S, d] c0 = c_〚1〛_〚1〛 c1 = c_〚2〛_〚1〛

RowBox[{{, RowBox[{RowBox[{{, RowBox[{11, ,, 16.5}], }}], ,, RowBox[{{, RowBox[{16.5, ,, 25.85}], }}]}], }}]

RowBox[{{, RowBox[{RowBox[{{, 21.4565, }}], ,, RowBox[{{, 31.4175, }}]}], }}]

RowBox[{{, RowBox[{RowBox[{{, 2.99685, }}], ,, RowBox[{{, RowBox[{-, 0.697508}], }}]}], }}]

2.99685

RowBox[{-, 0.697508}]

Описваме като ф& ... ;иближение с   p1 (x) :

p1[xx_] := c0 + c1 * xx gp1 = Plot[p1[xx], {xx, a, b}, PlotStyleHue[.6]] Show[gy, gp1]

[Graphics:HTMLFiles/index_30.gif]

⁃Graphics⁃

[Graphics:HTMLFiles/index_32.gif]

⁃Graphics⁃

в)   Изчислявам ... 072; приближението :

δ_1 = (Underoverscript[∑, i = 1, arg3] (f[x_〚i〛] - p1[x_〚i〛])^2)^(1/2)

0.87215

StyleBox[RowBox[{RowBox[{г),  , Приближе ... ности .}], FontFamily -> Arial, FontSize -> 18., FontWeight -> Bold]

RowBox[{StyleBox[RowBox[{p1, [, 1.33, ]}], FontColor -> GrayLevel[0.]],   }] RowBox[{Abs, [, RowBox[{RowBox[{f, [, 1.33, ]}], -, RowBox[{p1, [, 1.33, ]}]}],  , ]}]

2.06917

0.241273

Заключение:   Получената теоретична грешка   δ_1 очевидно е голяма, което добре се вижда и от графиката на двете функции. Трябва да намерим приближение с полином от по-висока степен.

StyleBox[RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{За ... , f, RowBox[{RowBox[{(, 1.33, )}], .}]}], FontFamily -> Arial, FontSize -> 18, FontWeight -> Bold]

 Решение :

а)   Изчислявам ... 5;аваме с  v0, v1  и  v2 :

s0 = n1 ; s1 = Underoverscript[∑, i = 1, arg3] x_〚i〛   ; s2 = Un ... 4;1〛 v1 = c_〚2〛_〚1〛 v2 = c_〚3〛_〚1〛

RowBox[{{, RowBox[{RowBox[{{, RowBox[{11, ,, 16.5, ,, 25.85}], }}], ,, RowBox[{{, RowBox[{16.5, ,, 25.85, ,, 42.075}], }}], ,, RowBox[{{, RowBox[{25.85, ,, 42.075, ,, 70.7333}], }}]}], }}]

RowBox[{{, RowBox[{RowBox[{{, 21.4565, }}], ,, RowBox[{{, 31.4175, }}], ,, RowBox[{{, 47.8688, }}]}], }}]

RowBox[{{, RowBox[{RowBox[{{, RowBox[{-, 3.32315}], }}], ,, RowBox[{{, 8.1211, }}], ,, RowBox[{{, RowBox[{-, 2.93954}], }}]}], }}]

RowBox[{-, 3.32315}]

8.1211

RowBox[{-, 2.93954}]

Декларираме ка&# ... приближение   p2 (x) :

p2[xx_] := v0 + v1 * xx + v2 * xx^2 gp2 = Plot[p2[xx], {xx, a, b}, PlotStyleHue[.3]] Show[gy, gp2]

[Graphics:HTMLFiles/index_54.gif]

⁃Graphics⁃

[Graphics:HTMLFiles/index_56.gif]

⁃Graphics⁃

б) Изчисляваме с ... 72;ртната формула :

δ_2 = (Underoverscript[∑, i = 1, arg3] (f[x_〚i〛] - p2[x_〚i〛])^2)^(1/2)

0.138776

StyleBox[RowBox[{в),  , Приближен& ... f, RowBox[{(, 1.33, )}],  , е :}], FontFamily -> Arial, FontSize -> 18., FontWeight -> Bold]

RowBox[{StyleBox[RowBox[{p2, [, 1.33, ]}], FontColor -> GrayLevel[0.]],   }] RowBox[{RowBox[{a ... wBox[{p2, [, 1.33, ]}]}], ]}]}], ;,  , Print[" The test absolute error now is=", aer]}]

2.27817

RowBox[{ The test absolute error now is=, , 0.0322716}]

Заключение:   Получената грешка  δ_2  и  aer  са очевидно све още големи, но по-приемливи от предишния случай в задача 1 (сравнете графиките). Ще потърсим полином от по-висока степен.

StyleBox[RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{RowBox[{За ... , RowBox[{RowBox[{(, 1.33, )}], .,  }]}], FontFamily -> Arial, FontSize -> 18, FontWeight -> Bold]

 Решение :

а)   Изчислявам ... 072;ме с   z0, z1, z2 , z3, z4  и  z5 :

s0 = n1 ; s1 = Underoverscript[∑, i = 1, arg3] x_〚i〛   ; s2 = Un ... 2315; ; z4 = c_〚5〛_〚1〛 ; z5 = c_〚6〛_〚1〛 ;

RowBox[{{, RowBox[{RowBox[{{, RowBox[{-, 1.28578}], }}], ,, RowBox[{{, 9.76408, }}], ,, RowBox ... owBox[{{, 22.9844, }}], ,, RowBox[{{, RowBox[{-, 12.0308}], }}], ,, RowBox[{{, 2.21355, }}]}], }}]

Декларираме ка&# ...  приближение  p5 (x) :

p5[xx_] := z0 + z1 * xx + z2 * xx^2 + z3 * xx^3 + z4 * xx^4 + z5 * xx^5 gp5 = Plot[p5[xx], {xx, a, b}, PlotStyleHue[.8]] Show[gy, gp5]

[Graphics:HTMLFiles/index_73.gif]

⁃Graphics⁃

[Graphics:HTMLFiles/index_75.gif]

⁃Graphics⁃

б)   Изчислявам ... 085;ом от 5 - та степен :

δ_5 = (Underoverscript[∑, i = 1, arg3] (f[x_〚i〛] - p5[x_〚i〛])^2)^(1/2)

0.00175523

StyleBox[RowBox[{в),  , Приближен& ... f, RowBox[{(, 1.33, )}],  , е :}], FontFamily -> Arial, FontSize -> 18., FontWeight -> Bold]

RowBox[{StyleBox[RowBox[{p5, [, 1.33, ]}], FontColor -> GrayLevel[0.]],   }] RowBox[{RowBox[{a ... ; грешка сега е=", aer5]}]

2.31092

RowBox[{ The test absolute error now is=, , 0.000477489}]

Заключение:   Получената грешка  δ_5  и тестовата абсолютна грешка сега са по-удовлетворителни.

StyleBox[RowBox[{RowBox[{Задача,  , 4.,   , 
 ... 7;ния .   }], FontFamily -> Arial, FontSize -> 18, FontWeight -> Bold]

Решение :

Show[gy, gp1, gp2, gp5]

[Graphics:HTMLFiles/index_88.gif]

⁃Graphics⁃


Created by Mathematica  (July 17, 2008)