python曲线拟合通用代码

在工作中偶然遇到进行曲线拟合求多项式系数,因为需要批量做拟合,发现python非常适合做非通用多项式的拟合,分享出来供大家定制修改完成自己的拟合。

只需要修改自变量 r_data,因变量g_data和model即可。

import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
# 定义拟合函数
def model(r, k0, k1, k2, k3, k4):
    return 1 + k0*r**2 + k1*r**4 + k2*r**6 + k3*r**8 + k4*r**10
# 准备数据(示例数据)
r_data = np.array([1,0.860232527,0.721110255,0.640312424,0.5,0.424264069,0.282842712,0.141421356,0.1,0])  # 请替换为您的数据
g_data = np.array([7.668939362,5.388489209,3.618357488,2.960474308,2.115819209,1.779097387,1.304878049,1.051966292,1.024623803,1])  # 请替换为您的数据
#70%gain
g_data_0_7 = np.array([7.668939362*0.73,5.218489209*0.76,3.618357488*0.79,2.960474308*0.82,2.115819209*0.85,1.779097387*0.88,1.304878049*0.91,1.051966292*0.94,1.024623803*0.97,1])  # 请替换为您的数据

# 执行曲线拟合
params, covariance = curve_fit(model, r_data, g_data_0_7, p0=None, sigma=0.0000001, absolute_sigma=0.0000001, check_finite=True, method='dogbox')

# 提取拟合参数
k0, k1, k2, k3, k4 = params

# 绘图
plt.scatter(r_data, g_data_0_7, label='Data', color='red')
r_fit = np.linspace(min(r_data), max(r_data), 100)
g_fit = model(r_fit, *params)
plt.plot(r_fit, g_fit, label='Fitted Curve', color='blue')
plt.xlabel('r')
plt.ylabel('g')
plt.legend()
plt.show()

# 输出拟合参数
print(f'Fitted parameters: k0={k0}, k1={k1}, k2={k2}, k3={k3}, k4={k4}')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值