Python-计算两边都有数字的方程
对于图形计算器,我让用户输入一个等式,然后程序将运行x范围的等式,要求用户输入x以外的任何变量的值。当方程以Python-计算两边都有数字的方程,python,math,python-3.x,Python,Math,Python 3.x,对于图形计算器,我让用户输入一个等式,然后程序将运行x范围的等式,要求用户输入x以外的任何变量的值。当方程以y=开头时,这可以正常工作 但是,我还想求解稍微复杂一点的方程,例如a*x**2+a*y**2+b*x+c*y+d=0 有没有办法解决这样的问题,其中y不是唯一的,或者我必须将这些方程转换成y=blahblahblah?你不会(在一般情况下)得到唯一的y=f(x)线 例如,x²+y²-1=0将得到一个单位圆,因此对于x=-1,x=1,只需画一个点,对于任意x in]-1,1[和x in]-
y=
开头时,这可以正常工作
但是,我还想求解稍微复杂一点的方程,例如a*x**2+a*y**2+b*x+c*y+d=0
有没有办法解决这样的问题,其中y不是唯一的,或者我必须将这些方程转换成y=blahblahblah
?你不会(在一般情况下)得到唯一的y=f(x)线
例如,x²+y²-1=0将得到一个单位圆,因此对于x=-1,x=1,只需画一个点,对于任意x in]-1,1[和x in]-inf,-1[u]1,+inf,只需画两个点[
圆锥曲线
在您的例子中,您展示了两个变量x和y中的二次多项式的示例,其中没有混合项(即左侧的exy)。即使在添加此项时,如果您限制多项式的次数,您也会得到一个圆锥曲线,它可以是圆、椭圆、抛物线或双曲线(退化情况:一个点、一条线、两条线或什么都没有)
始终可以将它们表示为,对应于圆锥体和平面之间的交点,如下所示:
顺便说一句,所有的图片/公式都来自维基百科。正如你在右边看到的,双曲线(数字3)有两个不相交的部分。数字2表示圆和椭圆,数字1表示抛物线
然后,您需要确定自己是哪种情况,并找到一个合适的参数化来绘制。最容易理解所有这些内容的是遵循有关该主题的课程,例如:
确定你的二次曲线
幸运的是,网站会告诉你它是什么类型的。
计算行列式,检查它是否为非零。如果它为零,你有一个退化的情况
然后计算次要A33:m=B²-4AC(这是前面计算的一部分)
- 如果m<0,则为双曲线。
- 如果A+C=0,则为矩形双曲线
- 如果m=0,则为抛物线
- 如果m>0,则为椭圆。
- 如果A=C,B=0,则有一个圆
- 如果(A+C)m>0,则椭圆是虚构的,您无法绘制它
- 如果d=0(退化情况):
- 如果m<0,则得到2条相交线
- 如果m=0,则得到2条平行线
- 如果,你得到两条不同的实线(你可以画两条线)
- 如果,则得到2条重合实线(可以绘制1条线)
- 如果,则得到两条不同的实线(可以绘制0条线)
- 如果m>0,则得到一个点
如果你觉得你仍然想做这一切,我会认真地建议你学习关于这个主题的在线课程,因为这个答案很简单,不会给你太多的理解。否则,按照评论中的建议使用一个库。那么你想从上面的等式中找到x和y吗?生成光栅图像很容易e(以固定的预定像素分辨率)从任意2D方程中提取,但生成一条可以保存为矢量图形的精确直线更为棘手。如果不(a)重新排列以使
y
项全部位于一侧,我不知道如何进行后一种处理(b)能够识别并使用基于函数类型的假设(在您的示例中为二次函数)。光栅图像足够好吗?我建议使用一个库-我支持谷歌搜索的建议。