python多变量非线性拟合_多自变量Python曲线拟合

本文通过实例展示了如何使用Python进行多变量非线性拟合,具体使用了`scipy.optimize.curve_fit`函数配合自定义多项式函数`polynomFit`对测量数据进行拟合。通过对不同阶数的多项式拟合,探究最佳拟合模型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

拟合未知数量的参数

在本例中,我们尝试重现一些测量数据measData。

在本例中,measData由函数measuredData(x, a=.2, b=-2, c=-.8, d=.1)生成。我练习,我们可能以某种方式测量了measData,所以我们不知道数学上是如何描述的。因此适合。

我们用多项式拟合,多项式由函数polynomFit(inp, *args)描述。由于我们要尝试不同阶的多项式,所以在输入参数的数量上要灵活是很重要的。

自变量(在您的例子中是x和y)被编码在inp的“列/第二维度”。import numpy as np

import matplotlib

import matplotlib.pyplot as plt

from scipy.optimize import curve_fit

def measuredData(inp, a=.2, b=-2, c=-.8, d=.1):

x=inp[:,0]

y=inp[:,1]

return a+b*x+c*x**2+d*x**3 +y

def polynomFit(inp, *args):

x=inp[:,0]

y=inp[:,1]

res=0

for order in range(len(args)):

print(14,order,args[order],x)

res+=args[order] * x**order

return res +y

inpData=np.linspace(0,10,20).reshape(-1,2)

inpDataStr=['({:.1f},{:.1f})'.format(a,b) for a,b in inpData]

measData=measuredData(inpData)

fig, ax = plt.subplots()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值