root拟合一元函数的代码
时间: 2023-12-03 09:04:21 浏览: 25
以下是使用Python实现的一元函数的root拟合代码:
```python
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import root
# 定义一元函数
def fun(x, a, b, c):
return a * x ** 2 + b * x + c
# 生成数据
xdata = np.linspace(-5, 5, 50)
ydata = fun(xdata, 1, -2, 1) + np.random.normal(size=50)
# 定义残差函数
def residual(params, x, y):
a, b, c = params
return y - fun(x, a, b, c)
# 初始值
params0 = [1, -1, 1]
# 拟合
result = root(residual, params0, args=(xdata, ydata))
# 输出拟合结果
print(result)
# 绘图
plt.plot(xdata, ydata, 'o', label='data')
plt.plot(xdata, fun(xdata, *result.x), label='fit')
plt.legend()
plt.show()
```
在代码中,首先定义了待拟合的一元函数 `fun`,然后使用 `numpy` 生成了一些随机数据。接着定义了残差函数 `residual`,它是拟合过程中用来计算残差的函数。然后定义了初始值 `params0`,用来指定拟合过程的初值。最后使用 `scipy.optimize.root` 函数进行拟合,得到拟合结果并进行输出和绘图。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)