使用Python拟合函数 n=(1-a/b) 并计算拟合优度

本示例演示如何使用Python对函数 n = (1 - a / b) 进行拟合,其中已知 nb 的值,目标是找到最佳拟合参数 a 并计算拟合优度。

import numpy as np
from scipy.optimize import curve_fit

# 定义拟合函数
def fit_func(b, a):
    return 1 - a / b

# 提供n和b的值
n_values = np.array([0.5, 0.7, 0.9, 0.3])  # n的值
b_values = np.array([2, 4, 6, 8])  # b的值

# 使用curve_fit进行拟合
params, _ = curve_fit(fit_func, b_values, n_values)

# 提取拟合的参数a
a_fit = params[0]

# 计算拟合优度
n_values_fit = fit_func(b_values, a_fit)
ss_res = np.sum((n_values - n_values_fit) ** 2)  # 残差平方和
ss_tot = np.sum((n_values - np.mean(n_values)) ** 2)  # 总平方和
r_squared = 1 - (ss_res / ss_tot)  # 拟合优度

print('拟合参数a:', a_fit)
print('拟合优度 (R²):', r_squared)

代码说明:

  1. 首先,我们定义了拟合函数 fit_func(b, a),它接受参数 ba 并返回 1 - a / b
  2. 然后,我们创建了 NumPy 数组来存储已知的 nb 值。
  3. 使用 scipy.optimize 模块中的 curve_fit 函数进行拟合。
  4. curve_fit 函数返回两个值:params_params 是一个包含拟合参数的数组,本例中为 [a]
  5. 我们从 params 数组中提取拟合参数 a
  6. 然后,我们使用拟合参数和 b_values 计算拟合后的 n 值 (n_values_fit)。
  7. 最后,我们计算拟合优度 R²。

注意:

  • 这里使用的是最小二乘法进行拟合。
  • 拟合结果可能受到初始参数的选择和数据的噪声影响。
Python拟合函数n=(1-a/b)求解参数a及拟合优度计算

原文地址: https://www.cveoy.top/t/topic/fOpi 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录