gpt4 book ai didi

python - Sympy 在求解方程时返回 ConditionSet 对象,而 matlab 在求解相同方程时返回单个 float

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:20 25 4
gpt4 key购买 nike

我有 4 个输入变量( float ):

X最大最小百分比模式我想求解 s 的以下(相当长的)方程:

> (1/2+1/2*erf((log(Xmax)-(log(mode)+s**2))/(sqrt(2)*s))-(1/2+1/2*erf((log(Xmin)-(log(mode)+s**2))/(sqrt(2)*s))) - percentage == 0

我想使用 sympy 来解方程,但它返回一个 ConditionSet 对象(意味着它无法解方程)

我的代码如下:

from sympy import *

def CalcScaleParam(mode, CIfact, percentage):
s = Symbol('s', Real=True)
eqn = (1/2+1/2*erf((log(4)-(log(2)+s**2))/(sqrt(2)*s))-(1/2+1/2*erf((log(1)-(log(2)+s**2))/(sqrt(2)*s)))) - 0.95
sigma = solveset(eqn, s)
print(sigma)

CalcScaleParam(2,2, 0.9545)

我的Matlab代码如下:

function sigma = Test()

syms s
eqn =(1/2+1/2*erf((log(4)-(log(2)+s^2))/(sqrt(2)*s))-(1/2+1/2*erf((log(1)-(log(2)+s^2))/(sqrt(2)*s)))) - 0.95 == 0;
sigma = solve(eqn,s);

end

并返回 sigma=0.335

我最初认为这是数学问题,但由于方程在 matlab 中成功求解,我怀疑问题来自 sympy。

最佳答案

分数使用 Python 的整数除法,得到 1/2 == 0。整个表达式减少为 -0.95。使用 1./20.5 或 Rational(1,2) 来声明它。您可能还必须将百分比 0.95 表示为 Rational(19,20)

关于python - Sympy 在求解方程时返回 ConditionSet 对象,而 matlab 在求解相同方程时返回单个 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37818218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com