Перестановка и решение уравнения в Python - PullRequest
0 голосов
/ 11 мая 2018

У меня есть следующее уравнение скорости, и я хочу решить для position. Я хочу, чтобы Python определил новое уравнение, чтобы position = (Velocity + 100) / 0.1.

Однако, если я изменю уравнение скорости, мне также придется изменить уравнение положения. Это отнимает много времени, и я просто хочу, чтобы Python автоматически определил позицию.

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

1 Ответ

0 голосов
/ 11 мая 2018

Перестановка уравнений требует символической математики.Для этого вам нужен SymPy.

Например, определите символы (обычно это одиночные символы, а не слова):

>>> import numpy as np
>>> import sympy
>>> v, p = sympy.symbols('v p')

Теперь вы можете сделать выражение для 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, которая будет работать с вашим массивом position:

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

Вы можете изменить свое выражение на v и заново решить или пересчитать эти другие вещи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...