需要非线性幂函数拟合的伪代码

计算科学 非线性方程 曲线拟合
2021-12-23 19:29:45

我正在努力寻找以下函数的非线性拟合的伪代码:

y=axb

R 中的 NLS 包确实表现良好,但在我的程序中不再使用外部软件。我想通过自己实施一个简短的课程来避免这种情况。也欢迎包含解决方案的文献链接。

更新:我已经用线性平方拟合实现了对数变换。这不是我正在寻找的解决方案。我需要实现 NLS 拟合。

更新 2,给出日志转换方法不足的原因:

我的原始数据:

与林业相关的异速生长功能

对数转换后的数据带有红色的线性模型线,可以看出对数转换后的残差影响很大:

及其对数转换的对应物,拟合线为红色

还是原始数据,红线是对数变换方法导出的带有参数的幂函数,蓝线是在 R 中使用包 NLS2 预测的幂函数:

红色是从对数变换方法导出的具有幂函数的原始数据,蓝色是使用 R-package NLS2 导出的更好的函数

显然,对数变换的残差影响太大,NLS 方法强制对模型的稳定部分进行预测。

1个回答

数值分析的第10章(Richard L. Burden,J. Douglas Faires)为牛顿法提供了可读性好的伪代码。起始参数取自对数转换数据的线性问题的解。(见 Christian Clason 的评论给出了一个 链接 (线性解决方案,Mathworld Wolfram))

while not reached convergence criteria
      calucate vector of residuals F(x) and Jacobian matrix J(x)
      solve J(x)y = -F(x)
      set x = x + y

这里x=a,b

F(x)是为了n指向一个有长度的向量n

ith元素是axib+yi

和雅可比J(x)是一个n,2矩阵与ith排:

Ji,1=xib

Ji,2=alog(xi)xib