def as_symbol(expr):
"""
Extract the "main" symbol from a SymPy object.
"""
try:
return Number(expr)
except (TypeError, ValueError):
pass
if isinstance(expr, str):
return Symbol(expr)
elif isinstance(expr, Dimension):
return Symbol(expr.name)
elif expr.is_Symbol:
return expr
elif isinstance(expr, Indexed):
return expr.base.label
elif isinstance(expr, Function):
return Symbol(expr.__class__.__name__)
else:
raise TypeError("Cannot extract symbol from type %s" % type(expr))
评论列表
文章目录