Python - 有没有办法在方根的方程上使用SymPy的solve()?

时间:2016-05-01 17:04:15

标签: python math tkinter sympy

鉴于已知和未知的变量以及其他上下文线索,可以使用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)

0 个答案:

没有答案