python-将sympy中的变量定义为常量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-将sympy中的变量定义为常量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2318字,纯文字阅读大概需要4分钟。
内容图文
![python-将sympy中的变量定义为常量](/upload/InfoBanner/zyjiaocheng/665/2a6bf4c3b68d4c939af6086627c4ad6c.jpg)
from sympy import *
from sympy.stats import *
mu, Y = symbols('mu Y', real = True, constant = True)
sigma = symbols('sigma', real = True, positive=True)
X = Normal('X', mu, sigma)
当要求:
E(X, evaluate=False)
我得到:
∞
?
? 2
? -(X - μ)
? ──────────
? 2
? 2?σ
? √2?X??
? ──────────────── dX
? 2?√π?σ
?
-∞
这是我所期望的.当要求:
E(X, X>0, evaluate=False)
E(X, X>pi, evaluate=False)
E(X, X >-3, evaluate=False)
使用任何常数,结果将符合条件期望的标准定义中的期望.但是,在尝试解决以下问题时:
E(X, X>Y)
我遇到一个与根有关的错误.有没有一种方法可以定义一个Y,以使sympy确认它是一个常数,就像0或-3甚至pi一样,并按预期显示积分?我假设来自sympy的请求存在问题,即以某种方式Y不会被确认为常量,因此,在尝试解决此请求时,sympy会遇到根问题.
解决方法:
您的问题似乎是当前不等式求解器的局限性:将不等式系统转换为集合的并集的算法显然需要对由这些不等式确定的边界点进行排序(即使只有一个这样的点).尚未实现减少具有符号极限的不等式.
我建议一个肮脏的把戏来解决这个限制.限定:
class SymbolTrick(NumberSymbol):
def __new__(self, name):
obj = NumberSymbol.__new__(self)
obj._name = name
return obj
_as_mpf_val = pi._as_mpf_val
approximation_interval = pi.approximation_interval
__str__ = lambda self: str(self._name)
这定义了一个具有pi相同数值的NumberSymbol的子类(必须指定一个,因为不等式减少算法需要对列表边界进行排序,否则将失败).
这一点:
In [7]: Y = SymbolTrick("Y")
In [8]: E(X, X > Y, evaluate=False)
Out[8]:
∞
?
? 2
? -(X - μ)
? ──────────
? 2
? 2?σ
? √2?X??
? ────────────────────────── dX
? ∞
? ?
? ? 2
? ? -(X - μ)
? ? ──────────
? ? 2
? ? 2?σ
? ? √2??
? 2?√π?σ?? ────────────── dX
? ? 2?√π?σ
? ?
? Y
?
Y
内容总结
以上是互联网集市为您收集整理的python-将sympy中的变量定义为常量全部内容,希望文章能够帮你解决python-将sympy中的变量定义为常量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。