1. 对以下数据分别作二次和三次多项式拟合,求得多项式系数,并画出拟合的效果图. 2 4 5 6 7 8 10 12 14 16 6.4 8.4 9.28 9.5 9.7 9.86 10.2 10.4 10.5 10.6 python代码
时间: 2024-10-09 15:15:47 浏览: 35
在Python中,我们可以使用`numpy`库来进行数值计算,`matplotlib`库用于绘图,以及`scipy.optimize.curve_fit`函数来执行多元线性回归(拟合),这里我们先假设数据是列表形式:
```python
import numpy as np
import matplotlib.pyplot as plt
# 数据
x_data = [4, 5, 6, 7, 8, 10, 12, 14, 16]
y_data = [6.4, 8.4, 9.28, 9.5, 9.7, 10.2, 10.4, 10.5, 10.6]
# 二次多项式拟合 (y = a*x^2 + b*x + c)
def quadratic_func(x, a, b, c):
return a * x**2 + b * x + c
# 三次多项式拟合 (y = a*x^3 + b*x^2 + c*x + d)
def cubic_func(x, a, b, c, d):
return a * x**3 + b * x**2 + c * x + d
# 使用curve_fit进行拟合并得到系数
popt_quadratic, _ = curve_fit(quadratic_func, x_data, y_data)
popt_cubic, _ = curve_fit(cubic_func, x_data, y_data)
# 计算拟合曲线
quadratic_line = quadratic_func(np.linspace(min(x_data), max(x_data), 100), *popt_quadratic)
cubic_line = cubic_func(np.linspace(min(x_data), max(x_data), 100), *popt_cubic)
# 绘制原始数据和拟合结果
plt.figure(figsize=(10, 6))
plt.plot(x_data, y_data, 'o', label='Data')
plt.plot(np.linspace(min(x_data), max(x_data), 100), quadratic_line, label='Quadratic fit', color='red')
plt.plot(np.linspace(min(x_data), max(x_data), 100), cubic_line, label='Cubic fit', color='blue')
plt.legend()
plt.xlabel('x')
plt.ylabel('y')
plt.title('Polynomial Fitting for Data Points')
plt.show()
阅读全文