python - 三角表达式中的 Sympy Collect()
问题描述
我是 sympy 的新手,在三角函数中使用 collect() 时遇到问题。我没有使用 simple() 或 trigsimp() 因为我的实际表达式更复杂,而且它们过于简化了。我正在尝试将其逐步简化为特定形式。为什么不 collect(sin(x y+x z),x) 对 x 项进行分组?谢谢。
x, y, z = symbols('x y z')
print(collect(sin(2*x + 3*x),x))
sin(5*x) #Works
print(collect(x*y + x*z, x))
x*(y + z) #Works
print(collect(sin(x*y+x*z),x))
sin(x*y + x*z) #Doesn’t work - Expected sin(x(y+z))
解决方案
如果您想将函数应用于表达式的参数并且该函数没有deep
选项,您可以尝试创建一个 lambda,将函数应用于任意表达式并将其与bottom_up
:
>>> from sympy.abc import *
>>> from sympy import *
>>> bottom_up(sin(x+x*y), lambda e: collect(e, x))
sin(x*(y + 1))
有针对性的替换也可以:
>>> sin(x+x*y).replace(lambda e: e.is_Add and e.has(x), lambda e: collect(e,x))
sin(x*(y + 1))
推荐阅读
- arrays - $set 不适用于在 vue.js 中更新我的数组
- r - 为什么 group_by -> filter -> 在 R 中总结比 pandas 快?
- c - 如何在 linux 中使用 c 从 txt 文件中删除空白行 - whitout Bash
- phpmyadmin - Wamp - 加载 xdebug 扩展时 Phpmyadmin 不工作
- javascript - 当我们在 html 代码中的某处调用 python 脚本文件时,webbrowser.open() 不显示网页
- python - 以下“斐波那契数列”代码无输出
- react-native - 如何在 react-native cli 中升级 core-js@3?
- c# - 文本框:数据是否仅在可见时绑定?
- php - 在 WordPress 插件中获取模板部分
- php - 如何将数组作为url的参数传递并完整接收