MATLAB实用教程系列——数值运算完全自学:摩尔-彭罗斯伪逆(pinv)

在这里插入图片描述

伪逆介绍

摩尔-彭罗斯伪逆是一种矩阵,可在不存在逆矩阵的情况下作为逆矩阵的部分替代。此矩阵常被用于求解没有唯一解或有许多解的线性方程组。

对于任何矩阵 A 来说,伪逆 B 都存在,是唯一的,并且具有与 A’ 相同的维度。如果 A 是方阵且非奇异,则 pinv(A) 只是一种成本比较高的计算 inv(A) 的方式。但是,如果 A 不是方阵,或者是方阵且奇异,则 inv(A) 不存在。在这些情况下,pinv(A) 拥有 inv(A) 的部分(但非全部)属性:
在这里插入图片描述

pinv 通过奇异值分解来形成 A 的伪逆。S 对角线上小于或等于 tol 的奇异值被视为零,而 A 的表示变成:
在这里插入图片描述

因此 A 的伪逆等于:
在这里插入图片描述

MATLAB代码验证

简单验证

pinv(ones(3,2))

在这里插入图片描述

严格验证

要验证 MATLAB 中的 pinv 函数(伪逆),首先创建一个矩阵,计算其伪逆,然后验证伪逆的性质。以下是一个示例 MATLAB 程序:

% 定义一个随机矩阵 A
A = rand(4, 3); % 4x3 矩阵

% 计算 A 的伪逆
A_pinv = pinv(A);

% 验证伪逆的性质
% 1. A * A_pinv * A = A
verify1 = A * A_pinv * A;

% 2. A_pinv * A * A_pinv = A_pinv
verify2 = A_pinv * A * A_pinv;

% 3. A * A_pinv 是投影矩阵
verify3 = A * A_pinv;

% 输出结果
disp('A * A_pinv * A:');
disp(verify1);

disp('A_pinv * A * A_pinv:');
disp(verify2);

disp('A * A_pinv:');
disp(verify3);

% 检查是否接近原矩阵(可以用 norm 计算误差)
tolerance = 1e-10;
if norm(A - verify1, 'fro') < tolerance
    disp('验证成功: A * A_pinv * A 接近 A');
else
    disp('验证失败: A * A_pinv * A 不接近 A');
end

if norm(A_pinv - verify2, 'fro') < tolerance
    disp('验证成功: A_pinv * A * A_pinv 接近 A_pinv');
else
    disp('验证失败: A_pinv * A * A_pinv 不接近 A_pinv');
end

程序说明

  1. 矩阵定义:生成一个随机矩阵 A
  2. 计算伪逆:使用 pinv 函数计算矩阵 A 的伪逆。
  3. 验证性质
    • 检查 A * A_pinv * A 是否接近 A
    • 检查 A_pinv * A * A_pinv 是否接近 A_pinv
    • 检查 A * A_pinv 是否是一个投影矩阵。
  4. 输出结果:显示验证结果并检查误差。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MATLAB卡尔曼

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

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

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

打赏作者

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

抵扣说明:

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

余额充值