2014-05-09 58 views
1

我有2個數組,分別表示X和Y.每個數組有5個元素。現在對於(X,Y)的每種可能組合,我有一個Z值,所以Z是一個5x5的矩陣。獲取3d形狀的公式

我正在尋找配方,例如Z = F(X,Y)。任何關於如何完成的想法。

我試過MS Excel曲面圖,但它沒有給出曲面圖上的任何方程或曲線擬合。

+0

查看這裏的Excel求解教程:http://sharpstatistics.co.uk/excel/non-linear-curve-fitting-in-exce/ –

回答

6

一般情況下,我會建議使用SciLab或Matlab等其他軟件來完成這項任務。這些產品比Excel更計算數學。 但Excel有一些內置的功能,可能會幫助你。

首先注意: 您將需要使用稱爲「求解器」的插件。此加載項隨Excel一起提供,但可能未安裝爲默認安裝。 一個描述(有上千個WWW提供)如何安裝插件,你會發現這裏: Solver Add-in

如果您正在使用這個工作,下一步是創建與數據片。 我試圖生成如下圖所示的示例。

範圍C5:G9包含您想通過函數來​​近似的矩陣。 所以這是z = f(x,y)矩陣。

旁邊的圖表只是您的(本例中爲my)原始數據的3D圖。

現在它會變得有點數學...... 你需要一個通用類型的函數來進行近似。 結果的質量取決於該功能能夠接近您的數據的程度。 在這個例子中,我使用了一個二階近似(最大二次項)的方法。 我的示例功能是z=a*x^2 + b*y^2 + c *x*y + d*x + e*y +f。 如果您需要更多,請嘗試使用三階詞條(包括x^3,y^3,...)。 我不想在這個例子中這樣做,因爲我討厭在Excel中輸入長公式。

打字長式是下一個步驟:

現在我們必須以填充範圍C15:G19與所計算式的值。但在此之前,我們必須定義J14:J19範圍內的多項式係數。作爲初始值,所有係數都可以使用1(圖片顯示運行求解器後的解)

單元格C15中的公式是=$J$14*C$14^2+$J$15*$B15^2+$J$16*C$14*$B15+$J$17*C$14+$J$18*$B15+$J$19 應該很容易將它複製到矩陣的其他單元格。

旁邊的圖表顯示了我們的近似函數的結果。

現在我們必須準備求解器。求解器需要以某種方式進行優化。 因此,我們需要定義一個函數來指示我們的逼近的質量。 我用最小平方值...看看www的解釋。 在C24:G28的範圍內,我計算了從我們的近似函數到原始數據的差異的平方。單元格C24具有公式=(C15-C5)^2

現在我們即將完成。就在這個公式複製到範圍的其餘部分,不是增加一個非常重要的細胞:

把範圍C24:G28的總和細胞H29 該值是錯誤的或更好的說我們逼近的差異總和功能到原始數據點。

enter image description here

諾威最重要的! 選擇單元格H29和啓動求解器加載項:

這個窗口將彈出(抱歉,我有我的電腦上德國的Excel安裝)

enter image description here

在來回目標值爲只需填寫單元格$H$29,目標值= 0和可變單元格(重要)$J$14;$J$19

按「求解」和....多邊形多項式係數已更改爲適合您的數據與函數。

是這樣的,你一直在尋找什麼?

請問候 阿克塞爾

+0

我也試圖解決同樣的問題,但在matplotlib。我用'leastsquare'得到了我的3D表面,但我怎麼能得到方程? – diffracteD

-2

您可以用google搜索並嘗試ThreeDify Excel的繪圖器V4.5,一個Excel插件,其中包括一個三維方程式與自動式取景器鉗工。

+0

這不提供問題的答案。要批評或要求作者澄清,在他們的帖子下留下評論 - 你總是可以評論你自己的帖子,一旦你有足夠的[聲譽](http://stackoverflow.com/help/whats-reputation),你會能夠[評論任何帖子](http://stackoverflow.com/help/privileges/comment)。 – Christoph

+0

如果您瞭解Python,那麼您可能還想嘗試一種開源解決方案:PyEq2(https://github.com/zunzun/pyeq2),其中包含一個3D方程式鉗工。 – Dan