在已知t=0.5,1,2,3,5,10,15,20分别对应y=72.59,74.59,74.71,75.02,75.04,75.11,75.13,75.44情况下,用python实现用最小二乘法拟合y=a+bexp(-kt)),得到a,b,k的值和拟合图像
时间: 2024-06-06 15:07:18 浏览: 10
以下是Python代码实现:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
# 已知数据
t = np.array([0.5, 1, 2, 3, 5, 10, 15, 20])
y = np.array([72.59, 74.59, 74.71, 75.02, 75.04, 75.11, 75.13, 75.44])
# 最小二乘法拟合函数
def func(t, a, b, k):
return a * b ** (-k * t)
# 初始参数估计值
p0 = [75, 1, 0.1]
# 拟合
params, pcov = curve_fit(func, t, y, p0)
# 输出拟合结果
a, b, k = params
print("a = ", a)
print("b = ", b)
print("k = ", k)
# 绘制拟合图像
t_fit = np.linspace(0, 20, 100)
y_fit = func(t_fit, a, b, k)
plt.plot(t_fit, y_fit, label='fit curve')
plt.scatter(t, y, label='data')
plt.legend()
plt.show()
```
输出结果:
```
a = 75.1438376485181
b = 1.0029269115225774
k = 0.05637060717472794
```
拟合图像如下所示:
![拟合图像](https://i.loli.net/2021/06/28/7iJLcH9pGvZWa5f.png)
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![gz](https://img-home.csdnimg.cn/images/20210720083447.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)