我正在尝试进行一些参数估计,并希望选择参数估计,以最小化大约 30 个变量的预测方程中的平方误差。如果方程是线性的,我只需计算 30 个偏导数,将它们全部设置为零,然后使用线性方程求解器。但不幸的是,这个方程是非线性的,它的导数也是如此。
如果方程超过一个变量,我会使用牛顿法(也称为 Newton-Raphson)。网络上有丰富的示例和代码来实现单变量函数的牛顿方法。
鉴于我有大约 30 个变量,我如何使用牛顿法对这个问题的数值解决方案进行编程?我有封闭形式的方程,可以计算一阶和二阶导数,但我不知道如何从那里开始。我在网上找到了大量的处理方法,但它们很快就进入了重矩阵符号。我在 Wikipedia 上发现了一些很有帮助的东西,但我在将其翻译成代码时遇到了麻烦。
我担心分解的地方是矩阵代数和矩阵求逆。我可以用线性方程求解器反转矩阵,但我担心得到正确的行和列,避免转置错误等等。
具体来说:
我想使用将变量映射到它们的值的表。我可以编写这样一个表的函数,它返回给定这样一个表作为参数的平方误差。我还可以创建返回关于任何给定变量的偏导数的函数。
我对表中的值有一个合理的起始估计,所以我不担心收敛。
我不确定如何编写使用估计值(每个变量的值表)、函数和偏导函数表来生成新估计值的循环。
最后一个是我想要帮助的。任何直接帮助或指向良好资源的指针都将受到热烈赞赏。
编辑:由于我有封闭形式的一阶和二阶导数,我想利用它们并避免更慢收敛的方法,如单纯形搜索。