输出为平方多项式加余数的计算

Calculation where output is square polynomial plus remainder

我儿子在他的可汗学院课程中学习如何使用准线和焦点计算抛物线公式。 (a,b) 是焦点,k 是准线的参数,y=k。我想向他展示一种使用 Sympy 检查结果的简单方法;编程对巩固内部算法有很大帮助。第 1 步显然是要列出等式。

Parabola = Eq(sqrt((y-k)**2),sqrt((x-a)**2+(y-b)**2))

我首先解决了 y 的问题,然后打算展示如何代入值并推导方程,因此:

Y = solve(Parabola,y)

这是一种合理的形式,将1/(2b-2k)收集到了外面。 接下来,我将焦点和准线的值代入方程,得到方程y= 1/6*(x**2+16*x+49),是正确的

接下来他需要以 (x+c1)(x+c2)+remainder 的形式解决这个问题。似乎没有一种直接的方法可以将上面的等式分解为这种形式,至少不是从一个小时搜索文档。

Answer = Y[0].subs({a:-8,b:-1,k:-4})
factor(Answer,deep=True)

当然我明白如何化简为平方因式分解加余数;我的问题只是这在 sympy 中是否可行,如果可行,如何实现?

第二个,也许是微不足道的问题是为什么 Sympy returns 一些因式分解为 (constant - x) 其中 (x -constant) 是首选:是否有指定形式的方法?

代表我的儿子感谢您的帮助,我正在向他展示 Sympy 的奇迹。

该进程通常称为"completing the square"。它不是作为单一的 SymPy 方法实现的,但是可以使用 SymPy 方程求解器来找到这种形式的多项式的系数:

>>> var('A B C')
>>> solve(Eq(Answer, A*(x-B)**2 + C), [A, B, C])
[(1/6, -8, -5/2)]

所以抛物线的顶点在(8, -5/2),多项式可以写成1/6*(x+8)**2 - 5/2