3.7 矩阵最小二乘广义逆

文章介绍了如何利用矩阵的最小二乘广义逆(A_l^-)来求解最小二乘问题,给出了最小二乘广义逆的定义和穆尔-彭罗斯四大条件。并通过一个简单的算法展示了如何计算最小二乘广义逆,以及在Python中实现该算法的代码示例。

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

文章目录

定义

  前面我写过矛盾方程的最小二乘解,是用正规方程来求解的。现在有一种新的算法,利用矩阵的最小二乘广义逆generalized least squares inverse来求最小二乘解,矩阵的最小二乘广义逆符号为 A l − A_l^- Al,全体最小二乘广义逆的集合记为 A { 1 , 3 } A^{\{1,3\}} A{1,3},这里的1和3是指穆尔-彭罗斯四大条件中的第一和第三条件,这四大条件是:
A G A = A G A G = G ( A G ) T = A G ( G A ) T = G A AGA=A\\ GAG=G\\ (AG)^T=AG\\ (GA)^T=GA AGA=AGAG=G(AG)T=AG(GA)T=GA
  获得了最小二乘逆之后,方程最小二乘的解就是 A l − b A_l^-\bold b Alb

算法

  计算最小二乘广义逆的方法不建议先求广义逆再求最小二乘的集合,那样计算太麻烦。其实有个最简单的算法,就是下面的公式:
A l − = ( A T A ) − A T A_l^-=(A^TA)^-A^T Al=(ATA)AT
  比如这个矩阵的一个最小二乘广义逆就是:
A = ( 1 1 2 2 2 1 3 3 3 ) A l − = ( − 0.444 0.556 0.111 0 0 0 0.556 − 0.444 0.111 ) A A l − = ( 0.667 − 0.333 0.333 − 0.333 0.667 0.333 0.333 0.333 0.667 ) A=\begin{pmatrix}1 & 1 & 2\\ 2 & 2 & 1\\ 3 & 3 & 3\\ \end{pmatrix}\\ A_l^-=\begin{pmatrix}-0.444 & 0.556 & 0.111\\ 0 & 0 & 0\\ 0.556 & -0.444 & 0.111\\ \end{pmatrix}\\ AA_l^-=\begin{pmatrix}0.667 & -0.333 & 0.333\\ -0.333 & 0.667 & 0.333\\ 0.333 & 0.333 & 0.667\\ \end{pmatrix} A= 123123213 Al= 0.44400.5560.55600.4440.11100.111 AAl= 0.6670.3330.3330.3330.6670.3330.3330.3330.667

python

  广义逆的代码确定后,最小二乘广义逆的代码就非常简单了:

    # 最小二乘广义逆
    def gls_inverse(self):
        a_t = self.transpose_matrix()
        return (a_t * self).one_inverse() * a_t
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醒过来摸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值