python - sympy 中的 global_assumptions 和 sqrt 简化
问题描述
我正在简化表达式,例如sqrt(a**2*b**2)
积极a
并b
希望得到a*b
. 设置假设的所谓“旧式”似乎可行。但是在相当简单的情况下,global_assumptions
对象以及技术的使用都失败了。assuming
出于某种原因,我更喜欢“新风格”。任何想法,我做错了什么?
from sympy import *
from sympy.assumptions.assume import global_assumptions
x = Symbol('x', positive=True)
f = Function('f', positive=True)
y = Symbol('y')
g = Function('g')
global_assumptions.add(Q.positive(y), Q.positive(g(y)))
print(refine(sqrt(x**2))) #ok
print(refine(sqrt(y**2))) #ok
print(refine(sqrt(f(x)**2))) #ok
print(refine(sqrt(g(y)**2))) #ok
print(refine(sqrt(x**2*f(x)**2))) #ok
print(refine(sqrt(y**2*f(x)**2))) #ok
print(refine(sqrt(x**2*g(y)**2))) #ok
print(refine(sqrt(y**2*g(y)**2))) # doesn't work - no simplification
解决方案
推荐阅读
- android - 英文国名
- r - 从大列表中进行条件提取
- python - 如何删除/修改熊猫数据框图表上的轴标题?
- elasticsearch - 带有嵌套对象查询的 Elasticsearch
- python - 我想通过在画布小部件中创建一个框架来创建一个滚动条,但该条不显示
- java - 我想将扫描仪的整数输入限制在一个范围内
- python-3.x - Python 非阻塞套接字关闭:它会引发 BlockingIOError 吗?
- python - 不能完全理解用于创建模式的循环
- apache-kafka - 如何使用控制台消费者从特定点消费来自 kafka 主题的消息?
- django - 如何从 Django Graphene 中的 Tagulous 获取所有标签的列表