已经研究了以下问题-主要是python中的matplotlib
“基本”函数是可能的,例如y = x^2
,但如果我想绘制一个方程(由于多个x-y关联,它不一定是函数),例如:
x^2 + y^2 = 1
(在二维坐标系中,围绕点(0/0)的半径为1的基本圆)
有没有办法用matplotlib或类似的库绘制这样的方程
我想到了将方程重新写入可绘制函数的想法,但由于绝对值赋值,它看起来比原始方程更难,例如,将上面的方程转换为“函数”:|y| = sqrt(1-x²)
带有-y
和+y
//编辑:应@mkrieger1的请求,编辑此问题。
我的软件的目的是使用一个输入(由另一个函数给出;表示任何方程的字符串,例如"y^3-sqrt(sin(x^2)-2)*2 = 3x"
),并将其转换为绘图。我个人在解决y的函数的方法上失败了(如前所述),尤其是对于更复杂的函数。考虑到各种各样的数学输入,将这些方程分解为“更小的部分”也相当困难,因此我认为采用轮廓求解方法将是最好的部分。(如@mkrieger1所示)。
同样,由于在plt.contour(X, Y, func, [0])
中实现之前需要对等式进行“编辑”,以及稍后的用户警告,这种方法非常关键
如果使用matplotlib,您会注意到
plot
接受一对长度相等的数组,表示x-y对序列。它不了解函数、方程或您提到的任何其他概念因此,支持绘制简单函数的断言在很大程度上是毫无意义的,即使是真的。也就是说,转换笛卡尔空间中的非函数(如圆)的标准方法是将其参数化。对于许多流行的非函数,一种可能的参数化方法是使用极坐标
例如:
您还可以使用sympy到convert字符串中的表达式转换为方程,然后再转换为plot。我省略了示例中的
-2
,因为这将导致一个非常空的绘图。Symphy的解析器支持特殊函数,以允许省略乘法(如3x
),并将Python的xor函数(^
)转换为幂函数另一个例子:
请注意,如果不显式设置变量的范围,
plot_implicit
假定默认范围在-5和5之间相关问题 更多 >
编程相关推荐