对于图形计算器,我让用户输入一个等式,然后程序将运行x范围的等式,询问用户除x之外的任何变量的值。当方程以y=
开始时,这很好。
但是,我还想解决更复杂的方程式,例如a*x**2+a*y**2+b*x+c*y+d=0
。
有没有办法解决这样的问题,y并不是唯一的,或者我必须将这些方程式转换为y=blahblahblah
?
答案 0 :(得分:2)
你不会(在一般情况下)得到一个唯一的y = f(x)行。
例如x²+y²-1 = 0会得到一个单位圆,因此只有一个点可以绘制x = -1,x = 1,任意x的两个点都在-1,1 [和0点] for x in] -inf,-1 [u] 1,+ inf [
在您的情况下,您将显示两个变量x和y中的二次多项式的示例,其中没有混合项(即左侧的e x y)。即使添加这个术语,如果你限制多项式的次数,你得到一个圆锥截面,可以是圆形,椭圆形,抛物线或双曲线(和退化情况:一个点,一条线,两条线,或者根本没有任何东西)。
您始终可以将它们表达为,它对应于圆锥和平面之间的交点,如下所示:
顺便说一句,所有图像/公式都来自维基百科。正如您在右侧看到的那样,双曲线(数字3)有两个不相交的部分。数字2显示圆和椭圆,数字1显示抛物线。
然后,您需要确定自己的情况,并找到合适的参数化来绘制。最容易理解所有这些,是关于该主题的课程,例如:https://www.khanacademy.org/math/algebra2/conics_precalc
幸运的是,matrix representation of a conic section会告诉你它是什么类型的。 计算行列式,检查它是否为非零。如果它为零,你就会有一个堕落的情况。
然后计算次要A33:m =B²-4AC(这是之前计算的一部分)。
您可能会非常直观地注意到,退化圆或椭圆是一个点,退化双曲线是交叉线,退化抛物线是平行线。
现在你还远没有完成,你仍然应该为每个案例重写你的初始等式作为规范形式,在一般情况下意味着改变变量
从那以后,你得到参数方程,你可以绘制它。有关所有这些规范形式和参数方程的列表,请参阅this wikipedia section(而不是全部复制)。我认为详细说明这一点并不重要,这很长,而且我觉得我已经劝阻大多数读者(如果你知道数学你不怕改变变量:))。
参数方程意味着您将有一个参数(在t,u或theta中连接的方程式中),并且当您改变该参数的值时,公式将描述圆锥曲线的点集。 / p>
如果您觉得自己仍然想要这一切,我会认真地建议您参加有关该主题的在线课程,因为这个答案非常重要,并不会给您太多的了解。否则,请使用评论中建议的库。