鉴于已知和未知的变量以及其他上下文线索,可以使用Sympy和数学导入进行简单的物理计算。
然而,我遇到了一个问题。我目前正试图用恒定加速度编程一维运动的方程。有4个方程和5个变量,并且在每个方程中,根本不使用四个变量中的一个。
所讨论的等式是Vf 2 = Vo 2 + 2 * a * x,其中Vf是最终速度,Vo是初始速度,a是加速度,并且x是位移。
我的程序可以解决方程式,但前提是要求解的变量是Vf。如果我尝试解决任何其他变量,python会抛出错误:TypeError: can't convert expression to float
。我之前写过一个非gui程序,它做了同样的事情并且有效。我无法弄清楚为什么没有。
下面的代码,对不起,如果我犯了一些新手的错误。
if unusedvar1dk == 't':
if solvefor_1dk.get() == 'vfx':
vfx = solvefor1dk = math.sqrt((vox * vox) + 2 * ax * x)
elif solvefor_1dk.get() == 'vox':
vox = Symbol(solvefor_1dk.get())
vfx = math.sqrt((vox * vox) + 2 * ax * x)
solvefor1dk = solve(vfx - knownvfx)
elif solvefor_1dk.get() == 'ax':
ax = Symbol(solvefor_1dk.get())
vfx = math.sqrt((vox * vox) + 2 * ax * x)
solvefor1dk = solve(vfx - knownvfx)
elif solvefor_1dk.get() == 'x':
x = Symbol(solvefor_1dk.get())
vfx = math.sqrt((vox * vox) + 2 * ax * x)
solvefor1dk = solve(vfx - knownvfx)
ttk.Label(answerframe, text=solvefor_1dk.get()).grid(row=2, column=1, sticky=W)
ttk.Label(answerframe, text="=").grid(row=2, column=1)
ttk.Label(answerframe, text=solvefor1dk).grid(row=2, column=2, sticky=W)