【发布时间】:2023-01-31 00:59:38
【问题描述】:
假设我有两条曲线 f(x) 和 g(x),我想评估 g(x) 是否是 f(x) 的平移。
我使用 Sympy Curve 来完成函数translate 的工作。但是,我需要帮助才能获得正确的结果。考虑两个函数:
f(x) = -x^2 和 g(x) = -(x+5)^2 + 8
请注意,g 垂直平移 8,水平平移 5。为什么 at 在以下 Python 代码中不等于 b?
from sympy import expand, Symbol, Curve, oo
x = Symbol('x')
f = -x**2
g = -(x+5)**2+8
a = Curve((x, f), (x, -oo, oo))
at = a.translate(5,8)
b = Curve((x, g), (x, -oo, oo))
a, at, b, at == b
>>> (Curve((x, -x**2), (x, -10, 10)),
Curve((x + 5, 8 - x**2), (x, -10, 10)),
Curve((x, 8 - (x + 5)**2), (x, -10, 10)),
False)
我怎样才能使用这种或任何其他方法进行分析?
【问题讨论】:
-
我对
sympy.Curve不够熟悉,但这可能与 sympy 文档中的这个“陷阱”有关:sympy gotchas: double equal signs -
另外,我觉得应该是
at = a.translate(-5,8),而不是at = a.translate(5,8) -
请注意,测试两个表达式是否相等并不完全明显。你应该让
y = x+5,将8-x**2重写为y而不是x的函数,然后使用sympy.simplify测试结果表达式是否等同于8 - (y + 5)**2