メモのコツを教えてください!

mathematica4.1を使用して,行列で表した連立方程式を計算したいと思っています.例えば

A= a11 a12 a13
a21 a22 a23
a31 a32 a33
B=b11 b12 b13
b21 b22 b23
b31 b32 b33

C,Dも同様に定義して
A .x+B .y=1
C .x+D .y=0
x=x1 y=y1
x2 y2
x3 y3
のような連立方程式のx,yについて解きたいのですが,どのようにmathematicaで表現すればよいかが分かりません.
どなたか教えてください.お願いします.
当然ではありますが,A,B,C,Dはすべて既知としています.

A 回答 (5件)

Mathematicaでの回答例



(* 以下の様に定義します *)
(* 例えば、Aの(i,j)成分は、a[i,j]となります *)
A = Array[a, {3, 3}];
B = Array[b, {3, 3}];
CC = Array[c, {3, 3}];
DD = Array[d, {3, 3}];
X = Array[x, {3}];
Y = Array[y, {3}];

(* このまま、
Solve[{A.X+B.Y={1,1,1},C.X+D.Y=={0,0,0}},Join[X,Y]]
を実行したいところですが、結構時間がかかるようです。*)

(* {{A,B},{C,D}}を結合した大きな行列を作ります。*)
M = ArrayFlatten[{{A, B}, {CC, DD}}];

(* M.{x[1],x[2],x[3],y[1],y[2],y[3]}={1,1,1,0,0,0}
を解けばよいのですが、これも時間がかかります *)

(*そこで、LinearSolveを使います。これは短時間で処理が済みますが、出力
が膨大になるようです *)
(* このような計算のとき、Det[M] !=0 という前提で、計算されるので、ご注意ください *)

LinearSolve[M][{1,1,1,0,0,0}]
    • good
    • 0

Mathematica の使用経験はありませんが、たとえば、


(Linear Algebra パッケージ?) MatrixManipulation パッケージに
BlockMatrix 関数があるようです。

   

参考URL:http://mathematica.stackexchange.com/questions/7 …
    • good
    • 0
この回答へのお礼

遅くなりまして申し訳ありません.回答有り難うございます.
しかし,mathematicaの経験が浅いため,このBlockMatrix関数をどう適用すればよいのか…
勉強してみます.

お礼日時:2012/11/26 16:12

行列を並べて作った行列を「ブロック行列」とか「区分行列」とか言うが、


ブロック行列の逆行列について、↓のような資料があった。
http://ja.wikipedia.org/wiki/%E5%8C%BA%E5%88%86% …

あるいは、スカラーの 2 元 2 連立方程式と同じように、
C x + D y = 0 を y = … の形に解いて A x + B y = 1 へ代入する
などでもよいのかもしれない。
A, B, C, D の中にひとつでも正則な行列があれば、このやり方がスムースにいく。

たとえ四つとも非正則であっても、連立一次方程式の不能の場合、不定の場合を処理する
方法を知っていれば、det D = 0 の時に C x + D y = 0 を y = … と扱うことが
できると思う。解の一意性を判定して不定解を正しく扱う部分を、プログラムで自動的に
やらせるには、ゴタゴタした場合分けをコーディングしなければならないだろうけど。

# やっぱり、6 連立方程式に展開してしまったほうが
# 楽なように見えるなあ。
    • good
    • 0
この回答へのお礼

ありがとうございました.この方法で考えてみます.
ただ,今回は6連立でしたが,今後はNxNの場合に拡張したかったので
展開する手法は取りたくなかったのです.

お礼日時:2012/11/20 14:37

訂正: 単位行列の訳ないか。


右辺もベクトルでなきゃね。
=0 は零ベクトルと読めるとして、
=1 は意味不明。
ここを適切なベクトルで書いた問題は、
やはり、x1,x2,x3,y1,y2,y3 についての
6 元 6 連立一次方程式だから、
普通に解けばよいのだけれど。

この回答への補足

すみません,質問の説明が足りませんでした.
"=1"の部分は
=1
1
1
です.
ただ,mathematica上で式を一文ずつ並べて連立するのではなく,行列の形の状態で
xやyを求める方法が知りたかったのです.

補足日時:2012/11/20 12:47
    • good
    • 0

=1 は、単位行列の意味でいいのかな?


6 元 6 連立の一次方程式だから、
普通に解けばいいんじゃないの?
A,B,C,D とかに拘ることない。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報