gpt4 book ai didi

python - 幂律拟合给出一条直线

转载 作者:太空宇宙 更新时间:2023-11-04 02:02:14 25 4
gpt4 key购买 nike

我基本上是在尝试做一个适合以下距离和加速度数组的幂律。然而,幂律拟合基本上给我一条直线。对于如何获得真正的幂律关系,我们将不胜感激。

Dis= [0.2065 0.2661 0.2026 0.22   0.2065 0.2661 0.264  0.2173 0.2615 0.2682
0.407 0.4085 0.409 0.4045 0.405 0.3985 0.5235 0.5846 0.5171 0.5385
0.6415 0.7661 0.699 0.6523 0.7745 0.7332 0.842 0.9085 0.909 0.8445
0.84 0.8635]

Acc= [-43.3 -3. -86.8 -10.5 -56.2 -2.5 -7.2 -12.2 -4.6 -9. -21.3 -2.
-3.2 -2.7 -5.8 -6.8 -15.5 -1.8 -22.1 -0.5 -8.7 -0.8 0. -3.3
-0.8 -0.8 -12.5 -0.5 -0.7 0.3 -1. -1.2]

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
def f(r, c0, m, c):
return c0 + r**m * c
data= pd.read_table('/Users/Hrihaan/Desktop/File.txt', dtype=float, header=None, sep='\s+').values
dis=r=data[:,0]
acc=data[:,1]
dis_min=np.min(dis)
dis_max=np.max(dis)
popt, pcov= curve_fit(f, dis, acc, p0 = np.asarray([-1, 10**5, 0]))
rr = np.linspace(dis_min, dis_max, len(dis))
aa = f(rr, *popt)
plt.xlabel('Distance (km)', fontsize=30)
plt.ylabel(' Acceleration (m/s-2)', fontsize=30)
plt.scatter(r, a, c='burlywood', s=10**2)
plt.plot(rr, aa, linewidth=3, label='Power law fit')
plt.show()

最佳答案

这种数据和方程的组合似乎对 curve_fit() 中使用的非线性求解器的初始参数值非常敏感。我的拟合值似乎很适合:

c = -2.2896848166160833E-21
c0 = -5.0760537033961146E+00
m = -3.2529524073781118E+01

给出 R 平方 = 0.899 和 RMSE = 5.83。

plot

关于python - 幂律拟合给出一条直线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55485273/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com