与 sympy/pyqt python 的集成和差异化

integration and differentiation with sympy/pyqt python

我正在创建一个系统,使用 python 3. 当我显示问题时,它们的形式如下:

-25*x**(3/5)/3 + 6*x**(4/3) - 5*x**6/3 + x**2/2 - 4*x

我怎样才能把它改成这样的形式:

-25x^(3/5)/3 + 6x^(4/3) - 5x^6/3 + x^2/2 - 4x

我也想要它,这样当用户输入等效答案时它仍然可以被识别

对于简单的显示器更换,您可以使用:

def format_math(string):
    return (string.replace("**", "^")).replace("*", "")

然后您可以将其与用户输入进行比较,以比较他们输入的答案与您的答案。

 x = format_math("-25*x**(3/5)/3 + 6*x**(4/3) - 5*x**6/3 + x**2/2 - 4*x")
 # -25x^(3/5)/3 + 6x^(4/3) - 5x^6/3 + x^2/2 - 4x
 user_input = format_math(input("Enter your answer: "))
 # If the user enters # -25x^(3/5)/3 + 6x^(4/3) - 5x^6/3 + x^2/2 - 4x or
 # -25*x**(3/5)/3 + 6*x**(4/3) - 5*x**6/3 + x**2/2 - 4*x the program will 
 # recognize both as correct
 if x == user_input:
     return True

来自python docs:

如果打算使用 sympy,那么以下方法将起作用:

import sympy as sp
x = sp.symbols('x')
sp.init_printing()

y = -25*x**(sp.Integer(3)/sp.Integer(5)
    )/sp.Integer(3) + 6*x**(sp.Integer(4)/sp.Integer(3)
    ) - sp.Integer(5)*x**sp.Integer(6)/sp.Integer(3) + x**sp.Integer(
    2)/sp.Integer(2) - 4*x

y

然后可以使用 sympy 的工具简化和比较表达式。如果最好不要显式使用 sp.Integer() 来防止 Python 进行除法,则可以在使用 sp.sympify() 将字符串转换为SymPy 表达式。