用于绘制 2 个变量的隐式方程的常用方法或算法是什么?
我说的是方程式,例如,
罪(x*y)*y = 20
x*x - y*y = 1
等等。
有谁知道 Maple 或 Matlab 是如何做到这一点的?我的目标语言是 C#。
非常感谢!
一种方法是在规则的 2D 网格上对函数进行采样。然后,您可以在生成的 2D 网格上运行类似行进正方形的算法来绘制等高线。
在一个相关的问题中,有人还链接到了 gnuplot 源代码。它相当复杂,但可能值得一试。你可以在这里找到它:http ://www.gnuplot.info/
x
在要绘制的范围内迭代 的值。对于 x 的每个固定值,使用诸如区间二分法或Newton-Raphson 方法(您可以使用隐式微分计算导数,或者可能进行数值微分)等方法对方程进行数值求解。y
这将为您提供给定的相应值x
。在大多数情况下,您不需要太多的迭代来获得非常精确的结果,而且无论如何它都非常有效。
请注意,您需要将方程转换为 形式f(x) = 0
,尽管这总是微不足道的。这种方法的好处是它可以反过来工作(即采用固定范围y
并计算x
每个值)。
有多种方法。我能找到的最简单的算法在此处进行了描述: https : //homepages.warwick.ac.uk/staff/David.Tall/pdfs/dot1986b-implicit-fns.pdf 并描述了 Noldorin 对您的描述。
最复杂的一种,似乎是可以实际解决很多特殊情况的一种,描述如下: https ://academic.oup.com/comjnl/article/33/5/402/480353
我认为,
在 matlab 中,您将数组作为 x 的输入。
然后对于每个 x,它计算 y。
然后从 x0,y0 到 x1,y1 画线
然后从 x1,y1 到 x2,y2 画线
...
...