我给出了这两个方程,a(α)和v都有给定值. 我知道这些问题不能用classic 的方法来解决,而是迭代地解决,所以我想用scipy和scipy来计算Phi(分布).

我的主要目标是计算k1和k2(在代码中用x和y替换).

enter image description here

(我用x替换K1,用y替换K2,用a替换阿尔法.)

from sympy import symbols, Eq, solve, exp
from scipy.stats import norm

x, y = symbols('x y')
v = 2.2526  # given
a = 0.1  # given

eq1 = (x + (1/v)) * exp((-(1/2)) * (x**2)) - (-y + (1/v)) * exp((-(1/2)) * (y**2))
eq2 = (((1 - norm.cdf(-1/v))**-1) * (norm.cdf(y) - norm.cdf(-x)) + a - 1)

sol = solve((eq1, eq2), (x, y))
print(sol)

如果我运行这个,我会得到

TypeError("无法确定关系的真值")

这个错误是什么意思?

发帖主题:Re:Kolibrios

x, y = symbols('x y', real=True)

引向

TypeError:输入类型不支持ufunc‘isnan’,并且 无法安全地将输入强制为任何受支持的类型 选角规则是"安全"

推荐答案

使用您的代码和this comment提供的提示,以下代码可以提供数值解决方案:

from sympy import symbols, exp, nsolve, solve
from sympy.stats import Normal, cdf

x, y = symbols('x y')
T = Normal("t", 0, 1)
v = 2.2526  # given
a = 0.1  # given

eq1 = (x + (1 / v)) * exp((-(1 / 2)) * (x ** 2)) - (-y + (1 / v)) * exp((-(1 / 2)) * (y ** 2))
eq2 = (((1 - cdf(T)(-1 / v)) ** -1) * (cdf(T)(y) - cdf(T)(-x)) + a - 1)

sol = nsolve((eq1, eq2), (x, y), (1, 1))
# sol = solve((eq1, eq2), (x, y), (1, 1))
print(sol)

# output is: Matrix([[2.42082817559350], [0.284669014405097]])

均值为0,方差为1的正态分布连续随机变量指定为T = Normal("t", 0, 1),CDF指定为cdf(T).nsolve要求呼叫者提供关于起始点的答案估计,所以我猜测(1,1),它起作用了.

Python相关问答推荐

如何根据参数推断对象的返回类型?

ModuleNotFound错误:没有名为flags.State的模块; flags不是包

使用miniconda创建环境的问题

运行Python脚本时,用作命令行参数的SON文本

pandas滚动和窗口中有效观察的最大数量

无法使用DBFS File API路径附加到CSV In Datricks(OSError Errno 95操作不支持)

Stacked bar chart from billrame

导入...从...混乱

如何在表中添加重复的列?

不能使用Gekko方程'

如何从列表框中 Select 而不出错?

可以bcrypts AES—256 GCM加密损坏ZIP文件吗?

Numpyro AR(1)均值切换模型抽样不一致性

如何在Great Table中处理inf和nans

一个telegram 机器人应该发送一个测验如何做?""

PySpark:如何最有效地读取不同列位置的多个CSV文件

如何在Django模板中显示串行化器错误

如何在PYTHON中向单元测试S Side_Effect发送额外参数?

Pandas:使列中的列表大小与另一列中的列表大小相同

如何让PYTHON上的Selify连接到现有的Firefox实例-我无法连接到Marionette端口