将改完后的代码完整的发一下
时间: 2024-12-13 14:20:24 浏览: 9
当然可以,这是修改后的完整代码,包含了多项式拟合和正弦波拟合的结果,并在图中标注了各个拟合参数:
```python
import numpy as np
import matplotlib.pyplot as plt
import scipy.optimize
# 数据定义
n_values = np.array([0. , 0.5, 1. , 1.5, 2. , 2.5, 3. , 3.5, 4. , 4.5, 5. , 5.5, 6. , 6.5, 7.0])
y_data_A = np.array([...]) # 填写实际的y_data_A数组
y_data_B = np.array([...]) # 填写实际的y_data_B数组
# 生成细分的 x 值
x_fine = np.arange(0, 12, 0.01)
# 进行五阶多项式拟合
coeffs_A = np.polyfit(n_values, y_data_A, 5)
fitted_values_A = np.polyval(coeffs_A, x_fine)
coeffs_B = np.polyfit(n_values, y_data_B, 5)
fitted_values_B = np.polyval(coeffs_B, x_fine)
# 绘制原始数据和拟合曲线
plt.plot(n_values, y_data_A, 'ro', label='Original Data A')
plt.plot(n_values, y_data_B, 'ro', label='Original Data B')
plt.plot(x_fine, fitted_values_A, 'b', label=f'5th Order Polynomial Fit A (amplitude={coeffs_A[0]:.2f}, phase_shift={np.rad2deg(coeffs_A[1]):.2f}, vertical_shift={coeffs_A[2]:.2f})')
plt.plot(x_fine, fitted_values_B, 'r', label=f'5th Order Polynomial Fit B (amplitude={coeffs_B[0]:.2f}, phase_shift={np.rad2deg(coeffs_B[1]):.2f}, vertical_shift={coeffs_B[2]:.2f})')
# 定义模型函数
def sinusoidal_model(x, amplitude, phase_shift, vertical_shift):
return amplitude * np.sin(x + phase_shift) + vertical_shift
# 使用曲线拟合
params_A, _ = scipy.optimize.curve_fit(sinusoidal_model, n_values, y_data_A)
params_B, _ = scipy.optimize.curve_fit(sinusoidal_model, n_values, y_data_B)
# 提取拟合参数
amp_A, phase_A, vert_A = params_A
amp_B, phase_B, vert_B = params_B
# 绘制拟合结果
plt.plot(n_values, y_data_A, 'r^', label=f'Sinusoidal Fit A (amplitude={amp_A:.2f}, phase={phase_A:.2f} rad, vertical shift={vert_A:.2f})')
plt.plot(n_values, y_data_B, 'g^', label=f'Sinusoidal Fit B (amplitude={amp_B:.2f}, phase={phase_B:.2f} rad, vertical shift={vert_B:.2f})')
plt.legend(loc='best')
plt.ylim(0, max(max(y_data_A), max(y_data_B)) + 10)
plt.grid(True)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Polynomial and Sinusoidal Fitting')
plt.show()
```
请注意,你需要替换`y_data_A`和`y_data_B`为实际的数据数组。代码中展示了五次多项式拟合和正弦波拟合的结果,以及对应的参数。如果数据不符合正弦波模型,曲线拟合可能会产生较差的拟合效果。
阅读全文