已知三點坐標,如何求過這三點的一元二次函數?

已知三點(x1,y1)(x2,y2)(x3,y3),求過這三點的一元二次函數通式。
貌似是解三元一次方程組,百科的解法看過了,好複雜的說。聽說可以用矩陣還是行列式解啊,怎麼做?
——————————————————————————————————————————
其實我只是想逆推過來出題。但是題量太大。想用一些簡單的方法解決。


x_1^2 a+x_1b+c=y_1
x_2^2 a+x_2b+c=y_2
x_3^2 a+x_3b+c=y_3

看,方程組在這。


拉格朗日插值法,提供了已知N+1個點,求N次多項式的通式。
Lagrange polynomial



算矩陣的Least squares
Amathbf{c}=mathbf{y}

將公式帶入此題求second order fit
[mathbf{1},mathbf{x},mathbf{x}^2][c_0, c_1, c_2]

這裡的mathbf{x}mathbf{y}是三個點的x坐標組成的column vector和y坐標組成的column vector,然後通過解
A^TAmathbf{c}=A^Tmathbf{y}
得到c_0,c_1c_2即可。

最後組成的一元二次的方程為
y=c_0+c_1x+c_2x^2

舉例:
現在有(1, 5), (2, 3), (3, 3)這三個點,組成的Least square的式子為

通過MATLAB解得
mathbf{c}=Y ackslash A
mathbf{c}=[9,-5,1]

所以一元二次方程為
y=9-5x+x^2

如圖


.........最簡單的方法不是待定係數法解三元方程嗎?初中不是教過嗎?


這個都覺得複雜怎麼學矩陣?


解三元一次方程組你一定會的吧。首先你得到用那六個變數描述的三元一次方程組,然後《線性代數》會告訴你如何判斷那個方程組是否只有一組解、是否沒有解、或者有無窮多組解。你拿到方程組之後要判斷一下。最後你就在紙上在保留這些字母的情況下直接人肉解出來,你就得到了一個通用的方法了。


別整那堆複雜的,如果你只是要解題,參考關鍵字:高斯消元法


嗯!差不多就這樣紙~
left( a ,, b,,c 
ight) =left ( y_1,,y_2,,y_3 
ight), left( 
egin{matrix}
x_1^2  x_1  1 \
x_2^2  x_2  1 \
x_3^2  x_3  1 \
end{matrix}
 
ight)^{-1}


題主是數學老師嗎?幾何畫板有個很好用的功能啊,自定義工具中的三點二次函數,你可以在直角坐標系裡面隨便點三個點就馬上得出二次函數表達式了。


牛頓解方程法


。。看著就恐懼。跑。


公司最近做一個績效考核,精確度到了0.01,給到我的數據是這樣:

其中0.85-0.9是一個計算區間,0.9-1.0又是一個計算區間。每個區間內相鄰的Y值的差值成等差,在0.85&

(別問後來是怎麼知道是二次函數的)我這裡介紹我通過人肉計算和用excel工具求解的兩種方法。

1.人肉求解:

1.1根據三點坐標,列出三個三元一次方程,然後暴力求解。這個方式簡單粗暴,但是遇到參數複雜或坐標複雜的情況,計算量會加大,準確度會下降,用的時間自然會增多。經過半個小時奮鬥,結果以失敗告終。

1.2我在excel上列出輔助列,是這樣的:

得出關係式:

1)when 0.85&

Z1=0.16,Z2=Z1+0.04,,,Zn=0.04n+0.12

Y1=0.3,Y2=Y1+Z1,,,Yn=Y(n-1)+Z(n-1)=Y1+(Z1+Z2+...+Z(n-1))

n=(X-0.84)/0.01

2) when 0.9&

Z1=0.16,Z2=Z1+0.02,,,Zn=0.02n+0.12

Y6=1.5,Y7=Y6+Z6,,,Yn=Y(n-6)+Z(n-6)=Y1+(Z6+Z7+...+Z(n-6))

n=(X-0.84)/0.01

又經歷半個小時奮鬥,把第一部分答案算出來了:Y=200X^2-326X+132.9 case(0.85&

然後第二部分思路同上,約莫十分鐘出來結果:Y=100X^2-165X+69 case(0.9&

1.3結合物理中勻加速運動公式求解:

今早想起,Zn列的差值其實類似於物理中勻加速運動中相同相鄰單位時間內的位移的差值S2-S1=A*T^2(A是加速度,在這裡面a是此處求的二次函數的2倍)。A=2a

因此可以很快速算出此二次函數二次項係數a,然後利用曲線的首末點可以快速算出b,c。

2.工具法:

step1在搜索引擎上輸入「excel擬合曲線」;

step2打開excel;

step3按照搜索結果去操作。

相信我,一分鐘就出結果了。


代入通式


你這個題是用三元一次方程組求係數。
矩陣,行列式是解三元一次方程組的。
你也可以硬帶來帶去倒騰出來。

三點不共線說明一定有解。
對於解方程,
行列式可以整潔地求。
Matlab可以偷懶地求。
我比較喜歡後者。


推薦閱讀:

到今天為止,數學都有那些分支?它們的聯繫又是什麼?
乘法豎式運算是誰發明的?原理是什麼?
如何真正透徹數學思想?
為什麼實際旋轉角度是四元數裡面的角度的兩倍?有什麼數學上的原因嗎?
數學競賽是體育嗎?

TAG:演算法 | 數學 | 趣味數學 | 矩陣 | 行列式 |