2016년 2월 11일 목요일

C#에서 linear algebra 계산을 위한 무료 라이브러리

http://numerics.mathdotnet.com/

설치 방법은 간단합니다.

Visual C#을 실행시키신 후 라이브러리를 사용하려는 프로젝트에서

다음과 같이 패키지를 추가하시면 됩니다.


















패키지 관리자 콘솔에 다음과 같이 입력 후 Enter

PM> Install-Package MathNet.Numerics



아래는 콘솔을 사용한 간단한 예제 입니다.
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Text;
  4. using System.Threading.Tasks;
  5. using MathNet.Numerics.LinearAlgebra;
  6. using MathNet.Numerics.LinearAlgebra.Double;
  7.  
  8. namespace ConsoleApplication1
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14.  
  15. Matrix A = DenseMatrix.OfArray(new double[,] {
  16. {1,1,1,1},
  17. {1,2,3,4},
  18. {4,3,2,1}});
  19. Vector[] nullspace = A.Kernel();
  20. // verify: the following should be approximately (0,0,0)
  21. //(A * (2 * nullspace[0] - 3 * nullspace[1]));
  22. Console.WriteLine(A * (2 * nullspace[0] - 3 * nullspace[1]));
  23. var C = Matrix.Build.DenseOfArray(new double[,] {
  24. { 3, 2, -1 },
  25. { 2, -2, 4 },
  26. { -1, 0.5, -1 } });
  27. //Linear equation Example
  28. var b = Vector.Build.Dense(new double[] { 1, -2, 0 });
  29. var x = C.Solve(b);
  30. //Singular value decomposition
  31. var svd = C.Svd(true);
  32. Console.WriteLine(svd.U);
  33. Console.WriteLine(svd.W);
  34. Console.WriteLine(svd.VT);
  35. Console.ReadKey();
  36. }
  37. }
  38. }



실행 결과

















이제는 매트랩 없이도 편하게 행렬식을 다룰 수 있겠군요.

이거 땜에 날아간 나의 시간들 ...   ㅠ.ㅜ