用Python重新排列和求解方程

用Python重新排列和求解方程,python,numpy,Python,Numpy,我有下面的速度方程,我想求解位置。我希望Python定义一个新的等式,以便position=(Velocity+100)/0.1 然而,如果我改变速度方程,那么我也必须改变位置方程。这很费时,我只想让Python自动求解position position = np.arange(-10000, 10001) # An array of integers from -10,000 to 10,000 Velocity = -100 + 0.1 * position # Equation posit

我有下面的速度方程,我想求解
位置
。我希望Python定义一个新的等式,以便
position=(Velocity+100)/0.1

然而,如果我改变速度方程,那么我也必须改变位置方程。这很费时,我只想让Python自动求解position

position = np.arange(-10000, 10001) # An array of integers from -10,000 to 10,000
Velocity = -100 + 0.1 * position # Equation
position = (Velocity + 100) / 0.1

重新排列方程需要符号数学。你需要同情

例如,定义符号(通常是单个字符,而不是单词):

现在,您可以为
v
创建一个表达式:

>>> vexpr = -100 + p / 10
您可以定义一个要求解的方程:

>>> veq = sympy.Eq(v, vexpr)
>>> sympy.pprint(veq)
    p       
v = ── - 100
    10      
>>> pexpr, = sympy.solve(veq, p)
>>> pexpr
10*v + 1000
您可以将表达式转换为Python函数,该函数将在
位置
数组上工作:

>>> f = sympy.lambdify(p, vexpr)
>>> position = np.arange(-10000, 10001)
>>> f(position)
array([-1100. , -1099.9, -1099.8, ...,   899.8,   899.9,   900. ])

您可以更改
v
的表达式,然后重新求解或重新计算这些其他内容。

就Python而言,这些并不是方程,您将表达式求值为一个值,并将该值赋给一个变量。我认为您需要复习Python的基本教程。一旦你完成了这项工作,你可能想看看一个库,它可以让你用Python定义方程,并按照你想要的方式将它们当作方程来处理(例如,你可以取一个速度和位置相关的方程,告诉它解位置,而不必写一个新的方程).我考虑过使用Symphy,但我不确定是否可以插入symbols@NEMM2020为什么不阅读Symphy文档,看看它们是否允许您这样做?您可以为符号指定数值,但通常您所做的是替换数值。换句话说,你不是说“x现在是20”,而是说,“解出x=20的方程”。就像在纸上做数学,而不是像普通的Python(或大多数其他编程语言),但在开始编写Symphy方程(并将其分配给Python变量)之前,您确实需要了解Python赋值的基础知识,否则您会更加困惑。我认为Sage教程可能是一个很好的开始,它很早就在Python中通过赋值、等式等,但设计的方式对数学家而不是程序员来说是有意义的。
>>> f = sympy.lambdify(p, vexpr)
>>> position = np.arange(-10000, 10001)
>>> f(position)
array([-1100. , -1099.9, -1099.8, ...,   899.8,   899.9,   900. ])