【发布时间】:2019-08-11 01:47:21
【问题描述】:
我有一个 x 和 y 值的数组,并且想获得 x 和 y 中每个值的拟合参数。请提供正确代码的任何帮助。
我已经尝试过正常的 scipy 优化曲线拟合,但我得到 popt (2.66871,1.0246) 根据我的幂函数只有两个拟合参数。我也尝试了一个 for 循环,但我得到了相同的答案。并且还打印 func(x,*popt) 但它给了我 yfit 这有点对应于我的函数中的 A 值。
x = (0,
3.33333e-05,
6.66667e-05,
0.0001,
0.000133333,
0.000166667,
0.0002,
0.000233333,
0.000266667,
0.0003,
0.000333333,
0.000366667,
0.0004,
0.000433333,
0.000466667,
0.0005,
0.000533333,
0.000566667,
0.0006,
0.000633333,
0.000666667,
0.0007,
0.000733333,
0.000766667,
0.0008,
0.000833333,
0.000866667,
0.0009,
0.000933333,
0.000966667,
0.001,
0.00103333,
0.00106667,
0.0011,
0.00113333,
0.00116667,
0.0012,
0.00123333,
0.00126667,
0.0013,
0.00133333,
0.00136667,
0.0014,
0.00143333,
0.00146667,
0.0015,
0.00153333,
0.00156667,
0.0016,
0.00163333,
0.00166667,
0.0017,
0.00173333,
0.00176667,
0.0018,
0.00183333,
0.00186667,
0.0019,
0.00193333,
0.00196667,
0.002,
0.00203333,
0.00206667,
0.0021,
0.00213333,
0.00216667,
0.0022,
0.00223333,
0.00226667,
0.0023,
0.00233333,
0.00236667,
0.0024,
0.00243333,
0.00246667,
0.0025,
0.00253333,
0.00256667,
0.0026,
0.00263333,
0.00266667,
0.0027,
0.00273333,
0.00276667,
0.0028,
0.00283333,
0.00286667,
0.0029,
0.00293333,
0.00296667,
0.003,
0.00303333,
0.00306667,
0.0031,
0.00313333,
0.00316667,
0.0032,
0.00323333,
0.00326667,
0.0033,
0.00333333,
0.00336667,
0.0034,
0.00343333,
0.00346667,
0.0035,
0.00353333,
0.00356667,
0.0036,
0.00363333,
0.00366667,
0.0037,
0.00373333,
0.00376667,
0.0038,
0.00383333,
0.00386667,
0.0039,
0.00393333,
0.00396667,
0.004,
0.00403333,
0.00406667,
0.0041,
0.00413333,
0.00416667,
0.0042,
0.00423333,
0.00426667,
0.0043,
0.00433333,
0.00436667,
0.0044,
0.00443333,
0.00446667,
0.0045,
0.00453333,
0.00456667,
0.0046,
0.00463333,
0.00466667,
0.0047,
0.00473333,
0.00476667,
0.0048,
0.00483333,
0.00486667,
0.0049,
0.00493333,
0.00496667,
0.005,
0.00503333,
0.00506667,
0.0051,
0.00513333,
0.00516667,
0.0052,
0.00523333,
0.00526667,
0.0053,
0.00533333,
0.00536667,
0.0054,
0.00543333,
0.00546667,
0.0055,
0.00553333,
0.00556667,
0.0056,
0.00563333,
0.00566667,
0.0057,
0.00573333,
0.00576667,
0.0058,
0.00583333,
0.00586667,
0.0059,
0.00593333,
0.00596667,
0.006,
0.00603333,
0.00606667,
0.0061,
0.00613333,
0.00616667,
0.0062,
0.00623333,
0.00626667,
0.0063,
0.00633333,
0.00636667,
0.0064,
0.00643333,
0.00646667,
0.0065,
0.00653333,
0.00656667,
0.0066,
0.00663333,
0.00666667,
0.0067,
0.00673333,
0.00676667,
0.0068,
0.00683333,
0.00686667,
0.0069,,
0.00693333,
0.00696667,
0.007,
0.00703333,
0.00706667,
0.0071,
0.00713333,
0.00716667,
0.0072,
0.00723333,
0.00726667,
0.0073,
0.00733333,
0.00736667,
0.0074,
0.00743333,
0.00746667,
0.0075,
0.00753333,
0.00756667,
0.0076,
0.00763333,
0.00766667,
0.0077,
0.00773333,
0.00776667,
0.0078,
0.00783333,
0.00786667,
0.0079,
0.00793333,
0.00796667,
0.008,
0.00803333,
0.00806667,
0.0081,
0.00813333,
0.00816667,
0.0082,
0.00823333,
0.00826667,
0.0083,
0.00833333,
0.00836667,
0.0084,
0.00843333,
0.00846667,
0.0085,
)
y = (0,
9.77702e-05,
0.000237679,
0.000299228,
0.000366429,
0.000445037,
0.000490029,
0.000595593,
0.00065321,
0.000717839,
0.000773689,
0.000889214,
0.000927582,
0.00103097,
0.00105215,
0.00113667,
0.00122925,
0.00129494,
0.00136738,
0.00141601,
0.00153778,
0.00159565,
0.00166984,
0.00175198,
0.00177656,
0.00185014,
0.00195058,
0.00202898,
0.00209635,
0.00215949,
0.00224518,
0.00233188,
0.00240365,
0.00247784,
0.00258604,
0.0026452,
0.00266751,
0.00276437,
0.00286343,
0.00292966,
0.002997,
0.00308734,
0.00314009,
0.00322987,
0.00330018,
0.003383,
0.00344143,
0.00352123,
0.00359572,
0.00365992,
0.00376528,
0.00382154,
0.00392247,
0.00397464,
0.0040601,
0.00414649,
0.00423872,
0.00429021,
0.00439166,
0.00445013,
0.00450119,
0.00461507,
0.00469472,
0.00477171,
0.00483289,
0.00492618,
0.00502626,
0.00510817,
0.00516617,
0.00524999,
0.00534527,
0.0053922,
0.00547761,
0.00556275,
0.00564411,
0.00572986,
0.00580148,
0.00586369,
0.00595674,
0.00604375,
0.00612363,
0.006176,
0.00627588,
0.00637313,
0.00644189,
0.00650487,
0.00659345,
0.00668509,
0.00676752,
0.00683972,
0.00691615,
0.00701001,
0.00708816,
0.0071639,
0.00724708,
0.00731911,
0.00739313,
0.00748537,
0.00756975,
0.00764525,
0.00775061,
0.00779779,
0.00787695,
0.00796442,
0.00806116,
0.00811312,
0.00819669,
0.00830632,
0.00837673,
0.00845325,
0.00855253,
0.00860464,
0.00868055,
0.00874798,
0.00883282,
0.00891638,
0.00901305,
0.00908279,
0.00914724,
0.00925233,
0.00932962,
0.00942191,
0.00949068,
0.0095593,
0.00965188,
0.00970508,
0.00980721,
0.00987311,
0.00996671,
0.01006,
0.0101293,
0.0102212,
0.0103019,
0.0103609,
0.0104735,
0.0105097,
0.0106198,
0.010685,
0.0107703,
0.0108545,
0.0109384,
0.0110384,
0.0110988,
0.0111974,
0.0112623,
0.0113555,
0.0114211,
0.0114959,
0.0115857,
0.0116601,
0.0117616,
0.0118188,
0.0118778,
0.011973,
0.0120829,
0.0121126,
0.0122247,
0.0122977,
0.0123908,
0.0124597,
0.0125432,
0.0126173,
0.0127231,
0.0127778,
0.0128513,
0.0129628,
0.0130098,
0.0131243,
0.0131773,
0.0132635,
0.0133378,
0.0134521,
0.0135126,
0.0135784,
0.0136653,
0.0137546,
0.0138244,
0.0138878,
0.0139888,
0.0140703,
0.0141507,
0.0142301,
0.0142997,
0.0143909,
0.0144541,
0.0145466,
0.0146388,
0.014724,
0.0147789,
0.0148628,
0.0149542,
0.0150488,
0.0151159,
0.0151999,
0.0152634,
0.0153319,
0.0154347,
0.0155179,
0.0156085,
0.0156746,
0.0157548,
0.0158439,
0.0158922,
0.0159768,
0.0160629,
0.0161538,
0.0162197,
0.0163176,
0.0163816,
0.0164921,
0.0165265,
0.0166317,
0.0167016,
0.0168169,
0.0168582,
0.0169487,
0.0170116,
0.017109,
0.0171757,
0.017267,
0.017331,
0.0174196,
0.0174913,
0.0175946,
0.017643,
0.0177419,
0.0178178,
0.0179052,
0.0179508,
0.0180451,
0.0181352,
0.0182274,
0.0182664,
0.0183839,
0.0184546,
0.018529,
0.0186133,
0.0187013,
0.0187776,
0.0188498,
0.0189304,
0.0190077,
0.0190788,
0.0191742,
0.019248,
0.0193209,
0.0194058,
0.0194936,
0.0195449,
0.0196263,
0.0197098,
0.0197909,
0.0198741,
0.0199533,
0.0200391,
0.0201009,
)
def func(x,A,beta):
return A*x**beta
popt,pcov = curve_fit(func,x,y, maxfev=2000)
或者,我尝试了如下的 for 循环,但没有成功
def func(x,A,beta):
return A*x**beta
for i in range(len(x)):
for j in range(len(y)):
popt,pcov = curve_fit(func,x,y, maxfev=2000)
我预计 A 和 beta 的不同值将与 x 和 y 的大小相对应。但是对于 A 和 beta,我只得到一个值 popt (2.66871, 1.0246)。
【问题讨论】:
-
请添加您尝试过的代码
-
@ DrBwts 请向下滚动那里的代码。谢谢。
-
我还是不明白你在做什么。您是否正在尝试为您的数据拟合函数?
-
@ DrBwts,是的,我正在尝试将数据拟合到我的函数中,但我想获取 x 和 y 中每个值的拟合参数。因此,例如,如果 x = (a............b) 和 y = (c............d) 我想得到拟合配对 a 和 b、c 和 d 时的参数。所以我想使用我的函数以及我的 x 和 y 数据来做到这一点,并在我的函数中为所有 x 和 y 数据获取所有 A 和 beta 值。谢谢。
-
@DrBwts 所以根据我的数据和我的函数,我想得到拟合参数,A = (s................f) 和 beta = (g ...............H)。谢谢
标签: python curve-fitting