需要使用曲线拟合,又不想自己从头实现,查找script库实现。
安装:
pip install scipy numpy matplotlib
代码实现:
import math
import numpy as np
from scipy import optimize
import matplotlib.pyplot as plt
def linear_func(x, k, b):
return k * x + b
def main():
plt.figure()
# 拟合点
x0 = [75, 70, 65, 60, 55, 50, 45, 40, 35, 30]
y0 = [22.44, 22.17, 21.74, 21.37, 20.92, 20.67, 20.32, 20.05, 19.84, 19.59]
# 绘制散点
plt.scatter(x0[:], y0[:], 3, "red")
# 直线参数拟合
k, b = optimize.curve_fit(linear_func, x0, y0)[0]
# k = 1
# 显示拟合直线
x1 = np.arange(30, 75, 0.01) # 30和75要对应x0的两个端点,0.01为步长
y1 = k * x1 + b
plt.plot(x1, y1, "blue")
print("k, b, alfa:", k, b, math.degrees(math.atan(k))) # degrees弧度转角度
plt.title(" ")
plt.xlabel('t')
plt.ylabel('Mt/g')
plt.show()
if __name__ == "__main__":
main()
pass
结果图: