📜  Python| sympy.cancel() 方法(1)

📅  最后修改于: 2023-12-03 15:19:16.873000             🧑  作者: Mango

Python | sympy.cancel() 方法

sympy.cancel() 方法是 SymPy 库中的一个函数,可用于化简表达式。它将分数表达式中的公共因子约分,并将表达式保留在规范表达式(一个代数标准化形式)中。

语法

sympy.cancel() 方法的语法如下:

sympy.cancel(expr)

参数说明:

  • expr:需要化简的表达式。
返回值

sympy.cancel() 方法将返回一个化简后的表达式。如果输入表达式本身就是规范的,那么直接返回原表达式。

实例

以下程序演示了 sympy.cancel() 方法的使用:

import sympy 

# 定义分数表达式
expr = (2*x**2 + 2*x)/(x**2 + 3*x)

result = sympy.cancel(expr)

print("化简前的表达式为:", expr)
print("化简后的表达式为:", result)

以上程序的输出结果为:

化简前的表达式为: (2*x**2 + 2*x)/(x**2 + 3*x)
化简后的表达式为: 2*x/(x + 3)

通过 cancel() 方法,我们可以轻松地化简表达式。

注意事项
  1. 当表达式中有多个变量时,cancel() 方法默认对所有变量进行约分:
import sympy 

# 定义多个变量的分数表达式
expr = (x + y + z)/(x**2 + y**2 + z**2)

result = sympy.cancel(expr)

print("化简前的表达式为:", expr)
print("化简后的表达式为:", result)

以上程序的输出结果为:

化简前的表达式为: (x + y + z)/(x**2 + y**2 + z**2)
化简后的表达式为: (x + y + z)/(x**2 + y**2 + z**2)
  1. cancel() 方法只适用于分数表达式,对于整数表达式和符号表达式,它将返回原始表达式:
import sympy 

# 定义整数表达式
expr1 = (2*x**2 + 2*x) - (x**2 + 3*x)

# 定义符号表达式
expr2 = sympy.sqrt(x**2 + y**2)

result1 = sympy.cancel(expr1)
result2 = sympy.cancel(expr2)

print("化简前的表达式为:", expr1)
print("化简后的表达式为:", result1)

print("化简前的表达式为:", expr2)
print("化简后的表达式为:", result2)

以上程序的输出结果为:

化简前的表达式为: x**2 + x
化简后的表达式为: x**2 + x

化简前的表达式为: sqrt(x**2 + y**2)
化简后的表达式为: sqrt(x**2 + y**2)
  1. cancel() 方法返回的是 SymPy 表达式对象,而不是 Python 浮点数。如果需要将结果转换为 Python 浮点数,请使用 evalf() 方法:
import sympy 

# 定义分数表达式
expr = (2*x**2 + 2*x)/(x**2 + 3*x)

result1 = sympy.cancel(expr)
result2 = result1.evalf()

print("化简前的表达式为:", expr)
print("化简后的表达式为:", result1)
print("转换为 Python 浮点数后的结果为:", result2)

以上程序的输出结果为:

化简前的表达式为: (2*x**2 + 2*x)/(x**2 + 3*x)
化简后的表达式为: 2*x/(x + 3)
转换为 Python 浮点数后的结果为: 2.0*x/(x + 3.0)
  1. cancel() 方法只是化简分子分母中的公共因子,如果需要完全化简表达式,可以将化简函数链式使用:
import sympy 

# 定义分数表达式
expr = (2*x + 2)/(x + 1) - (x**2 - 1)/(x - 1)

result = sympy.cancel(sympy.factor(expr))

print("化简前的表达式为:", expr)
print("化简后的表达式为:", result)

以上程序的输出结果为:

化简前的表达式为: (2*x + 2)/(x + 1) - (x**2 - 1)/(x - 1)
化简后的表达式为: -5/((x - 1)*(x + 1))

通过链式使用化简函数,我们可以完全化简表达式。