曲線擬合是一種把現有數據透過數學方法來代入一條數式的表示方式。
科學和工程問題可以通過諸如採樣、實驗等方法獲得若干離散的數據,
根據這些數據,我們往往希望得到一個連續的函數(也就是曲線)或者
更加密集的離散方程與已知數據相吻合,這過程就叫做擬合 (fitting)。
方程 在笛卡兒平面上是一條直線,而這條直線的斜率是a。
因為任何兩點可以決定一條直線,因此總能找到次數不多於1的多項式來
串起任何兩個x值相異的點。
如果把多次式的次數增加到2
那麼只要給定x值各異的3點,總會有次數不多於2的多項式可以把它們串起。
如果把多次式的次數再增加到3
那麼只要給定x值各異的4點,總會有次數不多於3的多項式可以把它們串起。
我以3次曲線來示範,假如我有以下的點
x | y |
52010 | -3.89177 |
52104 | -2.756 |
52198 | -2.11687 |
52292 | -1.91851 |
52386 | -2.12506 |
52480 | -2.70859 |
52574 | -3.62756 |
用Excel畫出來圖形如下
我可以透過Curve Fitting來求出曲線上的點,以python做示範
import numpy as np x = np.array([52010,52104,52198,52292,52386,52480,52574]) y=np.array([-3.89177,-2.756,-2.11687,-1.91851,-2.12506,-2.70859,-3.62756]) z = np.polyfit(x, y, 3) print z
會求出4個系數,分別是a,b,c,d
[ 7.52449150e-09 -1.20358144e-03 6.41491191e+01 -1.13927772e+06]
也就是
y'= 7.52449150e-09 X^3 + -1.20358144e-03 X^2 + 6.41491191e+01 X + -1.13927772e+06
預估值。
點多了,畫出來的曲線就比較圓滑了
我們比較一下原本有量測的y值,與Curve Fitting出來的y'值其實蠻接近的,
x | y' |
52010 | -3.89E+00 |
52020 | -3.75E+00 |
52030 | -3.61E+00 |
52040 | -3.47E+00 |
52050 | -3.35E+00 |
52060 | -3.23E+00 |
52070 | -3.11E+00 |
52080 | -3.00E+00 |
52090 | -2.90E+00 |
52100 | -2.80E+00 |
52110 | -2.70E+00 |
52120 | -2.62E+00 |
52130 | -2.53E+00 |
52140 | -2.46E+00 |
52150 | -2.39E+00 |
52160 | -2.32E+00 |
52170 | -2.26E+00 |
52180 | -2.20E+00 |
52190 | -2.15E+00 |
52200 | -2.11E+00 |
52210 | -2.06E+00 |
52220 | -2.03E+00 |
52230 | -2.00E+00 |
52240 | -1.97E+00 |
52250 | -1.95E+00 |
52260 | -1.93E+00 |
52270 | -1.92E+00 |
52280 | -1.92E+00 |
52290 | -1.92E+00 |
52300 | -1.92E+00 |
52310 | -1.93E+00 |
52320 | -1.94E+00 |
52330 | -1.95E+00 |
52340 | -1.97E+00 |
52350 | -2.00E+00 |
52360 | -2.03E+00 |
52370 | -2.06E+00 |
52380 | -2.10E+00 |
52390 | -2.14E+00 |
52400 | -2.19E+00 |
52410 | -2.24E+00 |
52420 | -2.30E+00 |
52430 | -2.35E+00 |
52440 | -2.42E+00 |
52450 | -2.48E+00 |
52460 | -2.56E+00 |
52470 | -2.63E+00 |
52480 | -2.71E+00 |
52490 | -2.79E+00 |
52500 | -2.88E+00 |
52510 | -2.97E+00 |
52520 | -3.06E+00 |
52530 | -3.16E+00 |
52540 | -3.26E+00 |
52550 | -3.36E+00 |
52560 | -3.47E+00 |
52570 | -3.58E+00 |
52580 | -3.69E+00 |
52590 | -3.81E+00 |
52600 | -3.93E+00 |
但仍有些許差異,求出來的點僅供參考,並非一定等於實際量測出來的值。
y和y'圖形幾乎是疊在一起的
x | y | y' |
52010 | -3.89177 | -3.89E+00 |
52104 | -2.756 | -2.76E+00 |
52198 | -2.11687 | -2.11E+00 |
52292 | -1.91851 | -1.92E+00 |
52386 | -2.12506 | -2.13E+00 |
52480 | -2.70859 | -2.71E+00 |
52574 | -3.62756 | -3.63E+00 |
y和y'圖形幾乎是疊在一起的
沒有留言:
張貼留言