【发布时间】:2016-06-17 18:56:18
【问题描述】:
我正在尝试为拟合函数传递两个数组,它接受两个值。
数据文件:
第 1 栏:时间 第 2 列:温度 第 3 栏:体积 第 4 栏:压力
0.000,0.946,4.668,0.981
0.050,0.946,4.668,0.981
0.100,0.946,4.669,0.981
0.150,0.952,4.588,0.996
0.200,1.025,4.008,1.117
0.250,1.210,3.093,1.361
0.300,1.445,2.299,1.652
0.350,1.650,1.803,1.887
0.400,1.785,1.524,2.038
0.450,1.867,1.340,2.145
0.500,1.943,1.138,2.280
0.550,2.019,0.958,2.411
0.600,2.105,0.750,2.587
0.650,2.217,0.542,2.791
0.700,2.332,0.366,2.978
0.750,2.420,0.242,3.116
0.800,2.444,0.219,3.114
0.850,2.414,0.219,3.080
这里是代码
import numpy as np
from scipy.optimize import curve_fit
# Importing the Data
Time_Air1 = []
Vol_Air1 = []
Temp_Air1 = []
Pres_Air1 = []
with open('Good_Air_Run1.csv', 'r') as Air1:
reader = csv.reader(Air1, delimiter=',')
for row in reader:
Time_Air1.append(row[0])
Temp_Air1.append(row[1])
Vol_Air1.append(row[2])
Pres_Air1.append(row[3])
# Arrays are now passable floats
Time_Air1 = np.float32(np.array(Time_Air1))
Vol_Air1 = np.float32(np.array(Vol_Air1))
Temp_Air1 = np.float32(np.array(Temp_Air1))
Pres_Air1 = np.float32(np.array(Pres_Air1))
# fitting Model
def model_Gamma(V, gam, C):
return -gam*np.log(V) + C
# Air Data Fitting Data
x1 = Vol_Air1
y1 = Pres_Air1
p0_R1 = (1.0 ,1.0)
optR1, pcovR1 = curve_fit(model_Gamma, x1, y1, p0_R1)
gam_R1, C_R1 = optR1
gam_R1p, C_R1p = pcovR1
y1Mair = model_Gamma2(x_air1, gam_R1, C_R1)
计算 gamma 系数,但它没有给出我期望的值,~1.2。它给了我〜0.72
是的,这是正确的值,因为我的朋友将数据放入 gnuplot 并得到了该值。
如果有任何实际尝试所需的信息,我很乐意提供。
【问题讨论】:
-
如果有任何实际尝试所需的信息,我很乐意提供。数据文件会很好。
-
@OliverW。给我一点时间
-
您有两个适合的参数:您确定它们没有(部分)退化。您是否比较了另一个变量 C 的值?
-
合身并不完美,但也绝对不错。我很想说“你确定这个模型是正确的吗”,但你已经回答了。但是,我确实在您的代码提示中看到这不是您的完整代码:没有
p0_R1,但有p0_R1air(因此您会在尝试运行代码时遇到 NameError),然后是谈话model_Gamma2。也许您一直在尝试不同的模型? -
@OliverW。我有很多合适的模型,因为我们有很多数据记录。所以我试图对其进行编辑以使其看起来更简单。所以这是我的错。
标签: python numpy scipy curve-fitting