python - 用 Sympy 符号求解方程

标签 python solver sympy

Sympy 无法解决以下代码吗?我在几分钟前执行了这段代码,但它在屏幕上打印了 n = 5 并且卡住了。

import sympy

Wmin = 31
m = 8

p = sympy.symbols('p')

for n in range(5, 10):
    print 'n = %3d' % n

    denominator = (1 + Wmin + p * Wmin * ((1 - (2 * p) ** m) / (1 - 2 * p)))
    right = 1 - (1 - 2 / denominator) ** (n - 1)

    p_solve = sympy.solve(sympy.Eq(p, right))

    print p_solve

实际上,我已经在 MATLAB 中用二分法求解了方程,我目前正在修改无二分法和 Python 移植。

最佳答案

您可以使用 nsolve 来解决这样的问题——但是您需要猜测解决方案可能在哪里:

>>> for n in range(5, 10):
...     print 'n = %3d' % n
...     denominator = (1 + Wmin + p * Wmin * ((1 - (2 * p) ** m) / (1 - 2 * p)))

...     right = 1 - (1 - 2 / denominator) ** (n - 1)
...     p_solve = nsolve(sympy.Eq(p, right),p,0)
...     print p_solve
...
n =   5
0.181881594898608
n =   6
0.210681675044646
n =   7
0.235278433487669
n =   8
0.256480923202426
n =   9
0.27492972759045

关于python - 用 Sympy 符号求解方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18527181/

相关文章:

python - Numpy 下一个元素减去上一个

python - float 分类器

python - 无法在新的 ubuntu 分区 : tensorflow-0. 上安装 tensorflow 8.0-cp34-cp34m-linux_x86_64.whl 在此平台上不受支持

用于查找具有奇异矩阵的线性代数系统的参数解的 Java 库

java - 如何在 Apache Commons Math SimplexSolver 中设置决策变量类型,如 binary、int、double?

c++ - 线性数学方程的方程求解器

python - 象征性地解决。选择最终表示中的符号

Python保存一个(稀疏)矩阵,里面有一个变量

python - 使用另一个列表计算一个列表中元素的出现次数时,有什么更快的方法

c++ - 使用 Boost-Python 计算 python 中定义的函数的导数