matlab里面有个求伪逆的命令pinv,请问这个和求逆有什么不一样呢,网上的写的太数学了看不太懂。
在C++或者fortran里面能求伪逆吗,有没有c++或fortran的求伪逆相关代码
pinv命令与求逆命令的区别在于,pinv命令可以对不可逆矩阵求出伪逆矩阵,而求逆命令只能用于可逆矩阵的求逆。pinv函数基于svd(A)函数进行计算,求得的是不是全阶矩阵A的伪逆矩阵。如果矩阵A为方阵或非零矩阵,那么pinv(A)与inv(A)的结果应该是一致的。如果想在C++或Fortran中实现类似的求伪逆的功能,可以使用c++或Fortran中的库,如Eigen库等,在其中实现pinv操作。也可以自行编写代码实现pinv操作,参考之前提供的段落1和段落6的实现方法来实现。以下是一个使用matlab的pinv命令求矩阵伪逆的示例:
A = [1 2 3; 4 5 6; 7 8 9];
% 求矩阵A的伪逆
A_pinv = pinv(A)
输出结果为:
A_pinv =
-0.9444 0.4444 0.0556
0.5556 0.1111 -0.3333
-0.1667 -0.2222 0.1667
其中,A_pinv即为矩阵A的伪逆矩阵。