2009-07-15 41 views
5

用於繪製2個變量的隱式方程的常用方法或算法是什麼?如何繪製隱式方程

我說的方程如,

SIN(X * Y)* Y = 20

X * X - Y * Y = 1

等等

不任何人都知道Maple或Matlab如何做到這一點?我的目標語言是C#。

非常感謝!

回答

9

做到這一點的一種方法是在常規2D網格上對函數進行採樣。然後,您可以在生成的2D網格上運行一個像行進方塊的算法來繪製等值線。

在一個相關的問題,有人還鏈接到gnuplot源代碼。這相當複雜,但可能值得一試。你可以在這裏找到它:http://www.gnuplot.info/

+2

謝謝你提供正確的關鍵字進行搜索。 此次搜索(http://www.google.com.sg/search?q=Marching+squares+contours)特別引發了一些有趣的鏈接。 – ARV 2009-07-15 15:00:53

5

遍歷你想要繪製的範圍的x的值。對於x的每個固定值,使用諸如interval bisectionNewton-Raphson method(爲此可以使用隱式微分計算導數,或者可能在數值上進行區分)的方法以數字方式求解方程。對於給定的x,這將給出相應的值y。在大多數情況下,您不需要太多的迭代即可獲得精確的結果,而且無論如何都非常高效。

請注意,您需要將公式轉換爲f(x) = 0的形式,儘管這通常很簡單。這種方法的好處在於,它的工作方式也相同(即每個值的固定範圍爲y和計算x)。

-3

我認爲,

在MATLAB你給數組作爲X輸入。

然後對於每個x,它計算y。

則吸引了來自X0線,Y0到X1,Y1

則吸引了來自X1線,Y1到X2,Y2

...

...