首页 > 编程知识 正文

python多项式拟合,nlinfit拟合多元函数实例

时间:2023-05-03 21:23:05 阅读:110040 作者:399

你的直觉是正确的。 可以用方程式的形式解决这个问题。 方程的形式是Ax=b。 在

但是,由于系统定义太多,最需要sfdts平方解,因此应该使用np.linalg.lstsq而不是{}。

不能使用polyval,因为必须分离参数的系数和幂。

这是如何构造方程求解的: a=NP.stack([x1**0,x1**1,x1**2,x1**3,x1**4,x2**0,x2**1,x2**2,x2

xx=NP.LinaLG.lstsq(a,y ) [0]

打印(fitness (xx ) ) testtheresultwithoriginalfitnessfunction

当然,可以概括学位:

^{pr2}$

对于示例数据,sfdts乘法运算的执行速度比minimize解决方案快得多(在我的笔记本电脑上为800s vs 35ms )。 但是,a可能会变得相当大,所以如果内存是个问题,minimize可能仍然是一个选择。 在

更新:

如果不了解多项式函数的内部,事情就会变得麻烦,但可以将项和系数分离。 下面介绍了如何从polyval这样的函数中构造系统矩阵a。 defconstruct_a(valfunc,degree ) :

columns1=[]

columns2=[]

forpinrange(Degree ) :

c=NP.Zeros(Degree )

c[p]=1

columns1.append(valfunc ) x1,c ) )

columns2.append(valfunc ) x2,c ) )

return NP.stack (columns1columns2).t

a=construct _ a (NP.polynomial.polynomial.poly val,5 ) ) ) ) ) ) ) ) ) ) )。) ) ) ) ) )

xx=NP.LinaLG.lstsq(a,y ) [0]

打印(fitness (xx ) ) testtheresultwithoriginalfitnessfunction

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。