Python-有没有一种使用SymPy';用平方根解方程?

Python-有没有一种使用SymPy';用平方根解方程?,python,math,tkinter,sympy,Python,Math,Tkinter,Sympy,给定已知和未知的变量以及其他上下文线索,可以使用Sympy和math导入进行简单的物理计算 然而,我遇到了一个问题。我现在正试图用恒定加速度编程一维运动方程。有4个方程和5个变量,在每个方程中,四个变量中的一个根本不用 所讨论的方程是Vf 2=Vo2+2*a*x,其中Vf是最终速度,Vo是初始速度,a是加速度,x是位移 我的程序可以解这个方程,但只有当要解的变量是Vf时。如果我尝试求解任何其他变量,python会抛出一个错误:TypeError:无法将表达式转换为float。我以前写过一个非gu

给定已知和未知的变量以及其他上下文线索,可以使用Sympy和math导入进行简单的物理计算

然而,我遇到了一个问题。我现在正试图用恒定加速度编程一维运动方程。有4个方程和5个变量,在每个方程中,四个变量中的一个根本不用

所讨论的方程是Vf 2=Vo2+2*a*x,其中Vf是最终速度,Vo是初始速度,a是加速度,x是位移

我的程序可以解这个方程,但只有当要解的变量是Vf时。如果我尝试求解任何其他变量,python会抛出一个错误:
TypeError:无法将表达式转换为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)

检查所有符号变量是否声明为符号,并且没有意外覆盖。在报告错误之前,请检查每个变量的类型。只是一个建议您是否可以为给出错误的表达式显示
str(vfx-knownvfx)
?检查您的所有符号变量是否声明为符号,并且没有意外覆盖。在报告错误之前,请检查每个变量的类型。只是一个建议,您可以为给出错误的表达式显示
str(vfx-knownvfx)