2016-11-21 12 views
1

[1] C番号:Math.NETライブラリを使用して、方程式の系を解く線形方程式システムソルバー結果(Pythonの対Math.NET対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で同じ入力の結果: Pythonで

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を転置してx*A=bを解決するようにMath.NET(およびPython)の例を変更することができます。

関連する問題