Advertisement
Guest User

Untitled

a guest
Nov 15th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.75 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using MathNet.Numerics.LinearAlgebra;
  4. using MathNet.Numerics.LinearAlgebra.Double;
  5. using System.Globalization;
  6.  
  7. namespace InverseMatrix
  8. {
  9. class Program
  10. {
  11.  
  12. static string FindInverse(string[] args)
  13. {
  14. var matStr = Console.ReadLine();
  15.  
  16. var splMat = matStr.Split(" \\\\ ");
  17. var dim = splMat.Length;
  18. var mat = new double[dim, dim];
  19.  
  20. for (var row = 0; row < dim; row++)
  21. {
  22. var rowContents = splMat[row].Split(" & ").Select(x => double.Parse(x)).ToArray();
  23. for (var col = 0; col < dim; col++)
  24. mat[row, col] = rowContents[col];
  25. }
  26. Matrix<double> A = DenseMatrix.OfArray(mat);
  27. var B = A.Inverse();
  28. var answer = "";
  29. var invMat = B.ToRowArrays();
  30. for (var i = 0; i < invMat.GetLength(0); i++)
  31. {
  32. for (var k = 0; k < invMat[i].Length; k++)
  33. {
  34. if (double.IsNaN(invMat[i][k]) || double.IsInfinity(invMat[i][k]))
  35. {
  36. return "unsolvable";
  37. }
  38. }
  39. }
  40. for (var i = 0; i < invMat.GetLength(0); i++)
  41. {
  42. var row = new string[invMat[i].Length];
  43. for (var k = 0; k < invMat[i].Length; k++)
  44. {
  45. row[k] = invMat[i][k].ToString(CultureInfo.InvariantCulture);
  46. }
  47. answer += string.Join(" & ", row);
  48. if (i != invMat.GetLength(0) - 1)
  49. answer += " \\\\ ";
  50. }
  51. return answer;
  52. }
  53. }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement