python - Sympy 一直在试图求解这个涉及 sigmoid 函数的方程
问题描述
我的 Jupiter notebook 正在运行。它没有给我答案。我不知道原因。您能为我做的任何事情都将不胜感激。
import sympy as sp
X, T = sp.symbols('X, T')
K = 100000*sp.exp(-33.78*(T-298)/T)
eq1 = sp.Eq(X, K/(1+K))
eq2 = sp.Eq(X**2, 0.0025*(T-300))
R = sp.solve((eq1,eq2), (X, T))
print(R)
解决方案
这是处理方程的一种可能方法。首先,绘制两条曲线。如果我们考虑到负面结果也适用,第二条曲线可以写成平方根。
Matplotlib 和 numpy 可以处理这个问题。对于较小的 T 值,参数exp
变得太高并导致第一个等式溢出。但是第二个方程显然需要 T 是以≥ 300
避免负数的根。所以,曲线可以从 开始T == 300
。
from matplotlib import pyplot as plt
import numpy as np
T = np.linspace(300, 1000, 1000)
K = 100000 * np.exp(-33.78 * (T - 298) / T)
plt.plot(T, K / (1 + K), label='$K/(1+K)$')
plt.plot(T, np.sqrt(0.0025 * (T - 300)), label='$\\sqrt{0.0025(T-300)}$')
plt.legend()
plt.show()
哪些情节:
橙色曲线从 0 开始T == 300
并持续增长。蓝色曲线类似于 sigmoid,从 1 附近开始,在 400 到 500 之间大致为 T 转弯,然后保持在 0 附近。
这表明 周围的相等T == 440
,可以插入 sympy 的数值求解器nsolve
:
import sympy as sp
X, T = sp.symbols('X, T')
K = 100000 * sp.exp(-33.78 * (T - 298) / T)
sp.nsolve(sp.Eq(K / (1 + K), sp.sqrt(0.0025 * (T - 300))), T, 440)
结果:443.993681772465
推荐阅读
- python - 雅虎金融股票信息数据加载到 Pandas
- sql - Angular 8 上传图像文件(jpg 等) - 第二种方法
- docker - 如何在从 Docker 启动 apache 之前启用 Apache2 mods
- pyspark - 如何将 4/23/19 之类的字符串解析为 pysark 中的时间戳
- javascript - reduxReact-native 中的搜索功能
- python - 在 VS Code 中运行 python 代码时出现缩进错误
- php - PHPMailer 不是通过 CRON 执行,而是通过浏览器工作。可能是什么问题?
- javascript - 自动检查复选框以在 ajax 调用中匹配结果
- c++ - 我可以使用常量定义数组的长度,那么为什么 int d[b] 不起作用?
- database - 当按钮的值存储在 ms 访问数据库 vb.net 中时如何禁用按钮