python多元非线性最小二乘拟合代码
时间: 2024-01-01 14:23:06 浏览: 177
zuixiaoercheng.rar_最小二乘曲线拟合
以下是一个使用Python进行多元非线性最小二乘拟合的示例代码:
```python
import numpy as np
from scipy.optimize import least_squares
# 定义目标函数
def func(x, params):
a, b, c = params
return a * x**2 + b * x + c
# 定义残差函数
def residual(params, x, y):
return func(x, params) - y
# 输入数据
x = np.array([1, 2, 3, 4, 5])
y = np.array([2.1, 3.9, 6.2, 8.8, 11.9])
# 初始化参数的初始值
params0 = np.array([1, 1, 1])
# 使用最小二乘法进行拟合
result = least_squares(residual, params0, args=(x, y))
# 输出拟合结果
print("拟合参数:", result.x)
# 绘制拟合曲线
import matplotlib.pyplot as plt
plt.scatter(x, y, label='Data')
plt.plot(x, func(x, result.x), 'r', label='Fit')
plt.legend()
plt.show()
```
该代码使用了`numpy`库进行数值计算和数组操作,使用了`scipy.optimize.least_squares`函数进行最小二乘拟合。首先,定义了目标函数`func`,该函数根据给定的参数计算拟合曲线的值。然后,定义了残差函数`residual`,该函数计算拟合曲线与实际数据之间的残差。接下来,输入了实际数据`x`和`y`,以及参数的初始值`params0`。最后,使用`least_squares`函数进行拟合,并输出拟合结果。同时,使用`matplotlib.pyplot`库绘制了拟合曲线和实际数据的散点图。
阅读全文