Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何用迭代法求Moore-Penrose广义逆_C#_Ilnumerics - Fatal编程技术网

C# 如何用迭代法求Moore-Penrose广义逆

C# 如何用迭代法求Moore-Penrose广义逆,c#,ilnumerics,C#,Ilnumerics,通过ilnumerics可以得到矩阵a的Moore-Penrose广义逆吗?那么pinv在ilnumerics中是什么意思呢?pinv表示矩阵的逆矩阵?是的,使用ILNumerics是可能的 下面是一个示例: // Matrix A ILArray<double> A = new double[,] { { 1, 2 }, { 3, 4 } }; // The Moore-Penrose pseudoinverse ILArray<double> Ainv = pinv

通过ilnumerics可以得到矩阵a的Moore-Penrose广义逆吗?那么pinv在ilnumerics中是什么意思呢?pinv表示矩阵的逆矩阵?

是的,使用ILNumerics是可能的

下面是一个示例:

// Matrix A
ILArray<double> A = new double[,] { { 1, 2 }, { 3, 4 } };

// The Moore-Penrose pseudoinverse
ILArray<double> Ainv = pinv(A);

// Check for: A * A^-1 = I
ILArray<double> AtimesAinv = multiply(A, Ainv);

// difference of I = eye(2,2) - the inverse
ILArray<double> diff = eye(2, 2) - AtimesAinv;

// max norm of the difference
double normalized = (double)norm(diff)[0];

// Arbitrary epsilon to make the comparison
double epsilon = 1e-10;
Assert.AreEqual(true, normalized <= epsilon);
//矩阵A
ILArray A=新的双[,]{{1,2},{3,4};
//摩尔-彭罗斯伪逆
ILArray Ainv=pinv(A);
//检查:A*A^-1=I
ILArray ATIMESAV=乘法(A,Ainv);
//I的差=眼睛(2,2)-相反
ILArray diff=眼睛(2,2)-AtimesAinv;
//差分的最大范数
双重标准化=(双重)范数(差异)[0];
//任意ε进行比较
双ε=1e-10;
Assert.AreEqual(true,规范化