通过scipy.optimize求解方程

时间:2014-11-05 21:40:50

标签: python numpy equation

我有一个常数a的序列,我想在下面的等式中求解x。但它变成了一些错误。代码是:

import numpy as np
import scipy.optimize

a = np.transpose(np.loadtxt('/Desktop/a.txt'))

def fun(x, i):
    return 10.6699144 * np.log(1 + 0.0026245 * 0.5 * a[i] / x) - 10.4659342 * np.log(1 +    0.03242374 * 0.5 * a[i] / (1 - x)) 

solutions = [scipy.optimize.fsolve(fun, x0=0.04, args=(i, ))[0]
            for i in range(len(a))]
np.savetxt('/Desktop/solutions2.txt', solutions)

1 个答案:

答案 0 :(得分:0)

您正在使用文本文件阅读数据。如果我是你,我会再次检查a是否为一维(在这种情况下,np.transpose是无操作)。

与此同时,您不需要遍历索引,只需循环遍历值:

In [16]: def f(x, a):
    return 10.6699144 * np.log(1 + 0.0026245 * 0.5 * a/ x) - 10.4659342 * np.log(1 + 0.03242374 * 0.5*a / (1 - x))   ....: 

In [17]: for a in [5, 6, 7, 8]:
    res = fsolve(f, x0=0.1, args=(a,))                                                                            
    print res, f(res, a)
   ....:     
[ 0.07628813] [ -3.33066907e-16]
[ 0.07629924] [ -2.88657986e-15]
[ 0.07631023] [ -1.55431223e-15]
[ 0.07632111] [ -1.11022302e-15]