回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我是python新手,所以我的知识还不够。
我有一个名为“tlove_cc_seq2_k2_NL3.dat”的数据文件。我想根据数据拟合曲线。
我使用的代码如下:</p>
<p>。。。在</p>
<pre><code> import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import math
import pandas as pd
import lmfit
from lmfit import Model
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
from array import *
def test(x, a, b, c):
return (a + b*math.log(x) + c*math.log(x)**2)
func = np.vectorize(test)
data_k2_2fl_NL3=np.loadtxt('tlove_cc_seq2_k2_NL3.dat')
plt.plot(data_k2_2fl_NL3[:,8], data_k2_2fl_NL3[:,5], 'b-', label='data')
popt, pcov = curve_fit(func, data_k2_2fl_NL3[:,8], data_k2_2fl_NL3[:,5])
popt
plt.plot(data_k2_2fl_NL3[:,8], func(data_k2_2fl_NL3[:,8], *popt), 'r-',
label='fit: a=%5.3f, b=%5.3f, c=%5.3f' % tuple(popt))
popt, pcov = curve_fit(func, data_k2_2fl_NL3[:,8], data_k2_2fl_NL3[:,5], bounds=(-20,
[30., 30., 20.5]))
popt
plt.plot(data_k2_2fl_NL3[:,8], func(data_k2_2fl_NL3[:,8], *popt), 'g--',
label='fit: a=%5.3f, b=%5.3f, c=%5.3f' % tuple(popt))
plt.xlabel('x')
plt.ylabel('y')
plt.legend()
plt.show()
</code></pre>
<p>。。。在</p>
<p>我得到的错误如下:</p>
<p>。。。
ValueError回溯(最近一次调用)
在里面
13#y=数据[:,1]
14plt.绘图(data_k2_2fl_NL3[:,8],数据_k2_2fl_NL3[:,5],“b-”,label=”数据“)
--->;15 popt,pcov=曲线拟合(func,data_k2_2fl_NL3[:,8],data_k2_2fl_NL3[:,5])
16磅
17</p>
^{pr2}$
<p>我如何解决这个问题?
谢谢您。在</p>