酷代码 AI
菜单
全部AI  /  热门  /  AI问答
服务商

实验任务: 下表中,X是华氏温度,Y是一分钟内一只蟋蟀的鸣叫次数,试用线性拟合(不利于polyfit()函数)和二次多项式模型拟合这些数据,并画出拟合曲线,其中一半数据作为拟合数据,另一半作为预测数据,并分别求出这两种预测的相对误差的平均值及最值 X 46 49 51 52 54 56 57 58 59 60 Y 40 50 55 63 72 70 77 73 90 93 X 61 62 63 64 66 67 68 71 72 71 Y 96 88 99 110 113 120 127 137 132 137

```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点数解答]

相关提问