Решите уравнение с python - PullRequest
       80

Решите уравнение с python

0 голосов
/ 08 января 2020

Я надеюсь, что кто-то может мне помочь, я пытаюсь решить уравнение, в принципе идея состоит в том, чтобы изолировать переменную t из следующего уравнения:

import math
import sympy
from sympy.solvers import solve
from sympy import Symbol

a=Symbol ('a')

t=Symbol ('t')

S=Symbol('S')

g=Symbol ('g')

h=Symbol('h')          

f=solve(sympy.exp(t*S/2)*(1+(3/2)*t*g*(h-S/2))**(2/(3*g)),t)

print (f)

, и я получаю следующее:

[0.333333333333333*(4.0 - 0**g)/(g*(S - 2.0*h))]

Когда я делаю это по математике, я получаю другой результат, чем в python, может ли кто-нибудь помочь мне лучше разработать этот код? получить правильный результат?

enter image description here

1 Ответ

1 голос
/ 08 января 2020

Ваша симпатичная версия не включает == b. В sympy вы можете добавить b как solve(expr - b, t) или solve(Eq(expr, b), t). Кроме того, у вашей версии sympy (h - S / 2), а у вашей версии Mathematica (X). Я предполагаю, что гамма - это просто переменная, а не гамма-функция.

В примере кода я изменил S на строчные, чтобы иметь возможность использовать S sympy для символического преобразования констант, участвующих в делениях.

Подставляя это, результат больше похож на результат Mathematica.

from sympy import Symbol, solve, exp, S

a = Symbol('a')
b = Symbol('b')
t = Symbol('t')
s = Symbol('s')
g = Symbol('g')
h = Symbol('h')

f = solve(Eq(b, exp(t * s / 2) * (1 + (S(3) / 2) * t * g * (h - s / 2)) ** (S(2) / (3 * g))), t)

результат (sympy предлагает 6 из них):

[4*(-s + (2*h - s)*LambertW(-s*exp(3*(2*g*h*log(2**(4/g)*b**3) - g*s*log(2**(4/g)*b**3) + 2*s)/(2*h - s))**(1/6)/(4*(2*h - s))))/(3*g*s*(2*h - s)), 
 4*(-s + (2*h - s)*LambertW(s*exp(3*(2*g*h*log(2**(4/g)*b**3) - g*s*log(2**(4/g)*b**3) + 2*s)/(2*h - s))**(1/6)/(4*(2*h - s))))/(3*g*s*(2*h - s)), 
 4*(-s + (2*h - s)*LambertW(-s*(1 - sqrt(3)*I)*exp(3*(2*g*h*log(2**(4/g)*b**3) - g*s*log(2**(4/g)*b**3) + 2*s)/(2*h - s))**(1/6)/(8*(2*h - s))))/(3*g*s*(2*h - s)),
 4*(-s + (2*h - s)*LambertW(s*(1 - sqrt(3)*I)*exp(3*(2*g*h*log(2**(4/g)*b**3) - g*s*log(2**(4/g)*b**3) + 2*s)/(2*h - s))**(1/6)/(8*(2*h - s))))/(3*g*s*(2*h - s)), 
 4*(-s + (2*h - s)*LambertW(-s*(1 + sqrt(3)*I)*exp(3*(2*g*h*log(2**(4/g)*b**3) - g*s*log(2**(4/g)*b**3) + 2*s)/(2*h - s))**(1/6)/(8*(2*h - s))))/(3*g*s*(2*h - s)), 
 4*(-s + (2*h - s)*LambertW(s*(1 + sqrt(3)*I)*exp(3*(2*g*h*log(2**(4/g)*b**3) - g*s*log(2**(4/g)*b**3) + 2*s)/(2*h - s))**(1/6)/(8*(2*h - s))))/(3*g*s*(2*h - s))]
...