2014-11-05 105 views
0

我有一个常数a的序列,我想在下面的公式中求解x。但它变成了一些错误。代码是:通过scipy.optimize求解方程

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) 
+0

你得到什么错误? – 101 2014-11-05 21:43:40

回答

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]