
伪逆介绍
摩尔-彭罗斯伪逆是一种矩阵,可在不存在逆矩阵的情况下作为逆矩阵的部分替代。此矩阵常被用于求解没有唯一解或有许多解的线性方程组。
对于任何矩阵 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
程序说明
- 矩阵定义:生成一个随机矩阵
A。 - 计算伪逆:使用
pinv函数计算矩阵A的伪逆。 - 验证性质:
- 检查
A * A_pinv * A是否接近A。 - 检查
A_pinv * A * A_pinv是否接近A_pinv。 - 检查
A * A_pinv是否是一个投影矩阵。
- 检查
- 输出结果:显示验证结果并检查误差。

3295

被折叠的 条评论
为什么被折叠?



