我有一个常数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)
答案 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]