写一个二次函数拟合程序 要求给出曲线上的三个点 反求解出峰值时间
时间: 2023-05-25 14:04:43 浏览: 133
Matlab三维离散点的最小二乘二次曲面拟合
这个问题需要用到最小二乘法来拟合二次函数。以下是一个简单的 Python 代码段,可以拟合二次函数并找出峰值时间。
```python
import numpy as np
# 定义二次函数
def quadratic(x, a, b, c):
return a * x ** 2 + b * x + c
# 三个点的x和y坐标
x_data = np.array([1, 3, 5])
y_data = np.array([2, 6, 4])
# 初始猜测
initial_guess = [1, 1, 1]
# 用最小二乘法拟合二次函数
from scipy.optimize import curve_fit
popt, _ = curve_fit(quadratic, x_data, y_data, p0=initial_guess)
# 打印最佳拟合参数
print('a: {:.2f}, b: {:.2f}, c: {:.2f}'.format(*popt))
# 计算峰值时间
peak_time = -popt[1] / (2 * popt[0])
print('峰值时间为:', peak_time)
```
这个代码段首先定义一个二次函数quadratic,然后使用scipy的curve_fit函数来拟合二次函数。函数的输入是三个点的x和y坐标,p0是最初猜测的a,b,c的值。
最后,我们计算峰值时间,这是二次函数的最高点。峰值时间的公式是-b /(2a)。
阅读全文