2016-11-21 9 views
1

[1] C 번호 : Math.NET 라이브러리를 사용하여 방정식 시스템을 해결선형 방정식 시스템의 해석 결과 (파이썬 VS Math.NET VS MATLAB)

// test solver in Math.NET 
var A = Matrix<double>.Build.DenseOfArray(new double[,] { 
           {1, 1, 3}, 
           {2, 0, 4}, 
           {-1, 6, -1} 
          }); 
Console.WriteLine(A); 
var b = Vector<double>.Build.Dense(new double[] { 2, 19, 8 }); 
Console.WriteLine(b); 
var x = A.Solve(b);//Math.NET 

Console.WriteLine("Test Solver in Math.NET: " + x); 
>> Test Solver in Math.NET: DenseVector 3-Double 
34.5 
    5 
-12.5 

Press any key to continue . . . 

[2] MATLAB 동일한 입력에 대한 검색 결과

A = [1 1 3; 2 0 4; -1 6 -1] 
B = [2 19 8] 
x = B/A 
A = 

    1  1  3 
    2  0  4 
    -1  6 -1 


B = 

    2 19  8 


x = 

    1.0000e+00 2.0000e+00 3.0000e+00 

[3]과 동일한 입력 파이썬과 numpy.linalg의 도움 :

In[10]: 
import numpy as np 

# matrix A 
A = np.matrix ([[1, 1, 3],[2, 0, 4],[-1, 6, -1]]) 

# vector b 
b = np.array([2, 19, 8]) 
b.shape = (3,1) 
# attempt to solve Ax=b 
z = np.linalg.solve(A,b) 
z 
Out[10]: 
array([[ 34.5], 
     [ 5. ], 
     [-12.5]]) 

[4] 그 결과는 동일 할 것 C# (Math.NET) 및 Python의 경우 MATLAB의 주요 차이점은 무엇입니까?

+0

B를 바꿀 때 MATLAB에서 무엇을 얻습니까? 즉, B = [2; 19; 8]' –

+0

@ ChristophRüegg : 그렇게 할 수 없다. 행은 같은 차원이어야한다. 오류가 발생합니다. "/ 매트릭스 치수가 일치해야합니다." –

+0

아, 그렇다면'B/A'가 아니라 'B/A'가되어야합니다. –

답변

1

C# 및 Python 예제는 A*x=b 방정식을 풀고 MATLAB 예제는 x*A=b을 해결합니다.

MATLAB 예제는 B를 전치하고 / 대신 \을 사용하여 A*x=b을 해결하도록 변경할 수 있습니다.

대신 A.Transpose().Solve(b)과 같이 A를 전 환하여 Math.NET (및 Python) 예제를 x*A=b으로 해결할 수 있습니다.