最小二乘法和高斯牛顿方程的Python实现
应用背景:消除误差或忽略无关细节,从干扰数据中提取信号或找出趋势,将大量数据降低到可管理的数量或用简单的近似来代替复杂函数。
这里我选用的是Python,需要用到numpy来做矩阵运算,matplotlib来绘制图像,math来引入自然底数e。
主要逻辑定义在GaussNetonMehthod中,因为需要在迭代体中计算雅可比矩阵函数和残差函数向量,所以将他们的参数作为GaussNetonMehthod的参数传入。
为了方便修改模型,我将雅可比矩阵函数和模型函数单独定义。又因为这两个函数结构简单,所以我使用lambda函数的形式,避免过多出现一句话的函数。
应用实例
根据美国1815年至1885年数据,估计人口模型中的参数A和B。如下表所示,已知年份和人口总量,及人口模型方程,求方程中的参数。
Year | Population |
---|---|
1815 | 8.3 |
1825 | 11.0 |
1835 | 14.7 |
1845 | 19.7 |
1855 | 26.7 |
1865 | 35.2 |
1875 | 44.4 |
1885 | 55.9 |
1 | import matplotlib.pyplot as plt |