本文整理汇总了C#中Matrix.Solve方法的典型用法代码示例。如果您正苦于以下问题:C# Matrix.Solve方法的具体用法?C# Matrix.Solve怎么用?C# Matrix.Solve使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix
的用法示例。
在下文中一共展示了Matrix.Solve方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Square
public void Square()
{
// A: [2,2]((0,1),(2,0))
// > B: [2,2]((1,0),(0,-1))
// > X: [2,2]((0,-0.5),(1,0))
var matrixA = new Matrix(2, 2);
matrixA[0, 0] = 0;
matrixA[0, 1] = 1;
matrixA[1, 0] = 2;
matrixA[1, 1] = 0;
var matrixB = new Matrix(2, 2);
matrixB[0, 0] = 1;
matrixB[0, 1] = 0;
matrixB[1, 0] = 0;
matrixB[1, 1] = -1;
var solveMatrix = matrixA.Solve(matrixB);
Assert.AreEqual(solveMatrix.Rows, 2);
Assert.AreEqual(solveMatrix.Columns, 2);
Assert.AreEqual(solveMatrix[0, 0], 0);
Assert.AreEqual(solveMatrix[0, 1], -0.5);
Assert.AreEqual(solveMatrix[1, 0], 1);
Assert.AreEqual(solveMatrix[1, 1], 0);
}
示例2: Rectangular
public void Rectangular()
{
var matrixA = new Matrix(3, 2);
matrixA[0, 0] = 1;
matrixA[0, 1] = 2;
matrixA[1, 0] = 3;
matrixA[1, 1] = 4;
matrixA[2, 0] = 4;
matrixA[2, 1] = 2;
var matrixB = new Matrix(3, 2);
matrixB[0, 0] = 3;
matrixB[0, 1] = 4;
matrixB[1, 0] = 4;
matrixB[1, 1] = 2;
matrixB[2, 0] = 1;
matrixB[2, 1] = 2;
var solveMatrix = matrixA.Solve(matrixB);
Assert.AreEqual(solveMatrix.Rows, 2);
Assert.AreEqual(solveMatrix.Columns, 2);
Assert.AreEqual(solveMatrix[0, 0], -0.514285714, 0.00000001);
Assert.AreEqual(solveMatrix[0, 1], -0.057142857, 0.00000001);
Assert.AreEqual(solveMatrix[1, 0], 1.4714285714, 0.00000001);
Assert.AreEqual(solveMatrix[1, 1], 0.8857142857, 0.00000001);
}
示例3: Main
public static void Main(String[] args)
{
Matrix A = new Matrix(3, 3);
A[0,0] = 2.0; A[0,1] = 1.0; A[0,2] = 2.0;
A[1,0] = 1.0; A[1,1] = 4.0; A[1,2] = 0.0;
A[2,0] = 2.0; A[2,1] = 0.0; A[2,2] = 8.0;
Console.WriteLine("A = ");
Console.WriteLine(A.ToString());
Console.WriteLine("A.Determinant = " + A.Determinant);
Console.WriteLine("A.Trace = " + A.Trace);
Console.WriteLine("A.Norm1 = " + A.Norm1);
Console.WriteLine("A.NormInfinite = " + A.InfinityNorm);
Console.WriteLine("A.NormFrobenius = " + A.FrobeniusNorm);
SingularValueDecomposition svg = new SingularValueDecomposition(A);
Console.WriteLine("A.Norm2 = " + svg.Norm2);
Console.WriteLine("A.Condition = " + svg.Condition);
Console.WriteLine("A.Rank = " + svg.Rank);
Console.WriteLine();
Console.WriteLine("A.Transpose = ");
Console.WriteLine(A.Transpose().ToString());
Console.WriteLine("A.Inverse = ");
Console.WriteLine(A.Inverse.ToString());
Matrix I = A * A.Inverse;
Console.WriteLine("I = A * A.Inverse = ");
Console.WriteLine(I.ToString());
Matrix B = new Matrix(3, 3);
Console.WriteLine("B = ");
B[0, 0] = 2.0; B[0, 1] = 0.0; B[0, 2] = 0.0;
B[1, 0] = 1.0; B[1, 1] = 0.0; B[1, 2] = 0.0;
B[2, 0] = 2.0; B[2, 1] = 0.0; B[2, 2] = 0.0;
Console.WriteLine(B.ToString());
Matrix X = A.Solve(B);
Console.WriteLine("A.Solve(B)");
Console.WriteLine(X.ToString());
Matrix T = A * X;
Console.WriteLine("A * A.Solve(B) = B = ");
Console.WriteLine(T.ToString());
Console.WriteLine("A = V * D * V");
EigenvalueDecomposition eigen = new EigenvalueDecomposition(A);
Console.WriteLine("D = ");
Console.WriteLine(eigen.DiagonalMatrix.ToString());
Console.WriteLine("lambda = ");
foreach (double eigenvalue in eigen.RealEigenvalues)
{
Console.WriteLine(eigenvalue.ToString());
}
Console.WriteLine();
Console.WriteLine("V = ");
Console.WriteLine(eigen.EigenvectorMatrix);
Console.WriteLine("V * D * V' = ");
Console.WriteLine(eigen.EigenvectorMatrix * (eigen.DiagonalMatrix * eigen.EigenvectorMatrix.Transpose()));
Console.WriteLine("A * V = ");
Console.WriteLine(A * eigen.EigenvectorMatrix);
Console.WriteLine("V * D = ");
Console.WriteLine(eigen.EigenvectorMatrix * eigen.DiagonalMatrix);
}