2016-12-10 7 views
1

私はsympyを初めて使用しています。私はsympy行列で作業しています。誰かが行列方程式から主語を作ることを知っていますか?方程式がA + 2B = Cのようなものであれば、A、B、Cは行列です。私はBとして科目を作っていきたいと思います。最終回答は のようになります。B =(C-A)/ 2。これを行うにはsympyで何かストレートな方法はありますか?Sympyの行列式の対象を作る

答えて

1

asmeurerが提供するアプローチは適用可能であるようです:How to solve matrix equation with sympy?を参照してください。

まず、A、B、Cを非可換変数と宣言して、方程式の解を求めます。次に、CとAを目的の配列として再定義し、それらの配列に式を適用します。

>>> from sympy import * 
>>> A,B,C = symbols('A B C', commutative=False) 
>>> solve(A+2*B-C,B) 
[(-A + C)/2] 
>>> A = Matrix([2,2,1,5]) 
>>> C = Matrix([1,1,1,1]) 
>>> A = A.reshape(2,2) 
>>> C = C.reshape(2,2) 
>>> (-A + C)/2 
Matrix([ 
[-1/2, -1/2], 
[ 0, -2]]) 

コメントの質問に答えるには:行列Cを式の右辺のゼロ行列と定義し、上記のように処理します。

>>> A,B,C = symbols('A B C', commutative=False) 
>>> solve(2*A+B-C,A) 
[(-B + C)/2] 
>>> B = Matrix([1,4,3,5]) 
>>> B = B.reshape(2,2) 
>>> C = Matrix([0,0,0,0]) 
>>> C = C.reshape(2,2) 
>>> (-B + C)/2 
Matrix([ 
[-1/2, -2], 
[-3/2, -5/2]]) 
+0

ご回答ありがとうございます。それは私の問題を解決しました。今私は2 * A + B = Matrix([[0,0]、[0,0])のような行列の値を混在させることができないという別の問題があります。ここではAを主語にしたいと思う。 sympyで行う方法はありますか? – Venilope

+0

Pls編集された回答を参照してください。 –

+0

ありがとうございます。私が欲しいのは大変残念ですが、sympyの入力には変数と混在した行列の値が含まれています。だから私はすべての行列を変数として最初に変更することはできません。上のbcozのように、複数の値と行列の変数があるので、各行列の値を変数に変更してsympyに送ることはできません。 sympyでこれを行う方法はありますか?そうでなければsympyのためにこれを実装する予定でした。だから、この機能がすでに存在するかどうかを調べるのを手伝ってください.i/pは、このように2 * A + Matrix [] = Matrix []でもかまいません。方法があれば教えてください。 – Venilope