```python import numpy as np import matplotlib.pyplot as plt X = np.array([46, 49, 51, 52, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64, 66, 67, 68, 71, 72, 71]) Y = np.array([40, 50, 55, 63, 72, 70, 77, 73, 90, 93, 96, 88, 99, 110, 113, 120, 127, 137, 132, 137]) # 划分拟合数据和预测数据 split_index = len(X) // 2 X_fit = X[:split_index] Y_fit = Y[:split_index] X_pred = X[split_index:] Y_pred = Y[split_index:] # 线性拟合 coefficients_linear = np.polyfit(X_fit, Y_fit, 1) poly_linear = np.poly1d(coefficients_linear) # 二次多项式拟合 coefficients_quadratic = np.polyfit(X_fit, Y_fit, 2) poly_quadratic = np.poly1d(coefficients_quadratic) # 预测 Y_pred_linear = poly_linear(X_pred) Y_pred_quadratic = poly_quadratic(X_pred) # 计算相对误差 relative_error_linear = np.abs((Y_pred - Y_pred_linear) / Y_pred) relative_error_quadratic = np.abs((Y_pred - Y_pred_quadratic) / Y_pred) # 计算平均值和最值 average_error_linear = np.mean(relative_error_linear) max_error_linear = np.max(relative_error_linear) min_error_linear = np.min(relative_error_linear) average_error_quadratic = np.mean(relative_error_quadratic) max_error_quadratic = np.max(relative_error_quadratic) min_error_quadratic = np.min(relative_error_quadratic) # 绘制原始数据和拟合曲线 plt.scatter(X, Y, label='Original Data') plt.plot(X_pred, Y_pred_linear, label='Linear Fit') plt.plot(X_pred, Y_pred_quadratic, label='Quadratic Fit') plt.xlabel('X') plt.ylabel('Y') plt.title('Data Fitting') plt.legend() plt.show() print("线性拟合相对误差平均值:", average_error_linear) print("线性拟合相对误差最大值:", max_error_linear) print("线性拟合相对误差最小值:", min_error_linear) print("二次多项式拟合相对误差平均值:", average_error_quadratic) print("二次多项式拟合相对误差最大值:", max_error_quadratic) print("二次多项式拟合相对误差最小值:", min_error_quadratic) ``` [2025-04-06 09:06:10 | AI问答 | 697点数解答]