【问题标题】:Calculation where output is square polynomial plus remainder输出为平方多项式加余数的计算
【发布时间】:2016-05-29 03:08:00
【问题描述】:

我儿子在可汗学院课程中学习如何使用准线和焦点计算抛物线公式。 (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 返回一些分解为 (constant - x) 其中 (x -constant) 是首选:有没有指定形式的方法?

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

【问题讨论】:

  • 顺便说一句,(x+c1)(x+c2)+remainder 根本不是唯一的形式:(x-1)(x+1) +1(x-2)(x+2) + 4 相同,等等。你想要(x+c)^2 + remainder

标签: sympy factorization


【解决方案1】:

这个过程通常被称为“完成正方形”。它不是作为单一的 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

【讨论】:

  • 谢谢——一个非常优雅的答案。没想到只使用系数。您的示例在文档中会很有用!!!
猜你喜欢
  • 2020-02-04
  • 1970-01-01
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多