为了账号安全,请及时绑定邮箱和手机立即绑定

我如何让 Python 返回一个函数的抽象表达式并获取其中的参数?

我如何让 Python 返回一个函数的抽象表达式并获取其中的参数?

米脂 2021-12-09 10:33:59
假设我定义了一个函数def pdf(x_1, x_2):         return ((x_1 ** 2.0) * ((1.0 - x_2) ** 3.0)) + (((1.0 - x_1) ** 3.0) * (x_1 ** 2.0) * (1.0 + x_2) ** 3.0)有没有办法让我返回函数的完全扩展抽象表达式,pdf如下所示2.0 * x_1 ** 2.0 - 3.0 * x_1 ** 3.0 + 3.0 * x_1 ** 4.0 - x_1 ** 5.0 - 9.0 * x_1 ** 3.0 * x_2 + 9.0 * x_1 ** 4 * x_2 - 3 * x_1 ** 5.0 * x_2 + 6.0 * x_1 ** 2.0 * x_2 ** 2.0 - 9.0 * x_1 ** 3.0 * x_2 ** 2.0 + 9.0 * x_1 ** 4.0 * x_2 ** 2.0 - 3.0 * x_1 ** 5.0 * x_2 ** 2.0 - 3.0 * x_1 ** 3.0 * x_2 ** 3.0 + 3.0 * x_1 ** 4.0 * x_2 ** 3.0 - x_1 ** 5.0 * x_2 ** 3.0另外,是否也可以返回每项中的系数和幂?上面描述的所有内容在 Python 中都可行吗?或者我应该寻求使用 Mathematica 吗?欢迎任何建议!提前致谢!
查看完整描述

1 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

这不能用任何任意函数来完成,但SymPy库应该让你以一种相当简单的方式为代数表达式做到这一点。要使用上面的示例:


import sympy

x_1, x_2 = sympy.symbols("x_1 x_2")

pdf = ((x_1 ** 2.0) * ((1.0 - x_2) ** 3.0)) + (((1.0 - x_1) ** 3.0) * (x_1 ** 2.0) * (1.0 + x_2) ** 3.0)

expanded = sympy.expand(pdf)

print(expanded) # x_1**2.0*(-x_1 + 1.0)**3.0*(x_2 + 1.0)**3.0 + x_1**2.0*(-x_2 + 1.0)**3.0

example_solution = pdf.subs(x_1, 3).subs(x_2, 5) # -16128.0000000000


查看完整回答
反对 回复 2021-12-09
  • 1 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信