2015-10-02 50 views
0

嗨我有一個問題涉及兩個變量的完整多項式函數。例如:給定完整的五階多項式matlab - 完整的多元多項式函數圖

f(x,y)= theta1 + theta2 * x + theta3 * y + theta4 * x * y + theta5 * x^2 + theta6 * y^2 + ... + theta20 * x^5 + theta21 * y^5

我已經寫了代碼來計算f x,y)給出theta,x和y,但我怎麼能繪製這個函數

theta1 + theta2 * x + theta3 * y + theta4 * x * y + theta5 * x^2 + theta6 * y^2 +。 .. + theta20 * x^5 + theta21 * y^5 = 0?

謝謝!

+1

您可以嘗試'ezcontour'並調整'caxis'以繪製0輪廓線。 – mabe

+0

對我來說,這看起來更像是一個數學問題,而不是編程問題。你的二維函數和一個平面的交點(在你的情況下,由x和y軸定義)可以通過許多方式找到,無論是分析,代數或數字。 –

回答

1

我打算假設你的函數採用值元素明智。如果沒有,聲明函數句柄獲取在代表這些各自尺寸值的變量xy

f = @(x,y) theta1 + theta2*x + theta3*y + theta5*x.^2 + theta6*y.^2 + ... + theta24*x.^5 + theta25*y.^5; 

(....你需要有很多theta值?)。接下來,生成要繪製的座標的xy的座標。你可以做到這一點與meshgrid

[X,Y] = meshgrid(-10:0.01:10); 

這產生的(x,y)網格-10之間的協調,以10中的1

步驟中都維現在,通過使用上述函數生成您的Z座標:

Z = f(X,Y); 

現在,你終於完成後,使用contour功能與X,YZ。現在,如果你想只顯示水平,f(x,y) = 0,特別需要做到這一點:

contour(X,Y,Z,[0 0]); 

一般來說,第四個元素髮生在輪廓水平的載體,但如果你想專門繪製一個水平,這就是你需要做的。

+0

非常感謝您的回答!是的,我需要所有'theta',因爲它應該是一個具有完整項的多項式。我還有另一個問題: 我實際上需要繪製完整的多項式函數,其順序範圍從1到5.因此,我想寫一個函數來繪製其輸入是其所需順序的多項式的草圖(就像我寫給計算其價值,但我沒有任何想法讓它繪製圖)。我真的可以這樣做嗎?如果是,請給我一些提示。 –

+1

這將是困難的,因爲您需要知道生成了多少'theta'以及實際的'theta'參數本身,並且必須在創建句柄之前提供這些參數。你不能寫一個匿名函數來做到這一點。 – rayryeng

+0

非常感謝。我想除了寫下完整的功能之外別無他法。回頭見。 –