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