matlabで


基本行列
http://ja.wikipedia.org/wiki/%E8%A1%8C%E5%88%97%E3%81%AE%E5%9F%BA%E6%9C%AC%E5%A4%89%E5%BD%A2

を簡単に作る方法を教えてください

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/10/26 21:20:02
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:jan8 No.1

回答回数456ベストアンサー獲得回数96

ポイント10pt

Elementary Matrices

Wikipediaにある通り、単位行列を生成して、

* Pi, j は、単位行列の i 行目と j 行目を取り換えた行列

* Qi, c は、単位行列の (i, i) 成分を c にした行列

* Ri, j, c は、単位行列の (i, j) 成分を c にした行列

を生成すれば良いのではないでしょうか?

単位行列の生成はご存知の通りeye(n)です。

---------------------------------------------------------------

基本行列Pの生成例と掛算結果の確認

* Pi, j は、単位行列の i 行目と j 行目を取り換えた行列

(単位行列の2行目と5行目を入れ替えて基本行列P(2,5)を作る例)

---------------------------------------------------------------

>> test = [1 2 3 4 5;2 3 4 5 6;3 4 5 6 7;4 5 6 7 8;5 6 7 8 9]

test =

1 2 3 4 5

2 3 4 5 6

3 4 5 6 7

4 5 6 7 8

5 6 7 8 9

>> p=eye(5)

p =

1 0 0 0 0

0 1 0 0 0

0 0 1 0 0

0 0 0 1 0

0 0 0 0 1

>> p([2,5],:) = p([5,2],:)

p =

1 0 0 0 0

0 0 0 0 1

0 0 1 0 0

0 0 0 1 0

0 1 0 0 0

>> test*p

ans =

1 5 3 4 2

2 6 4 5 3

3 7 5 6 4

4 8 6 7 5

5 9 7 8 6

>> p*test

ans =

1 2 3 4 5

5 6 7 8 9

3 4 5 6 7

4 5 6 7 8

2 3 4 5 6

---------------------------------------------------------------

基本行列Qの生成例と掛算結果の確認

* Qi, c は、単位行列の (i, i) 成分を c にした行列

(単位行列の2行2列目を2に変えて基本行列Q(2,2)を作る)

---------------------------------------------------------------

>> test=ones(5)

test =

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

>> q=eye(5)

q =

1 0 0 0 0

0 1 0 0 0

0 0 1 0 0

0 0 0 1 0

0 0 0 0 1

>> q(2,2)=2

q =

1 0 0 0 0

0 2 0 0 0

0 0 1 0 0

0 0 0 1 0

0 0 0 0 1

>> test*q

ans =

1 2 1 1 1

1 2 1 1 1

1 2 1 1 1

1 2 1 1 1

1 2 1 1 1

>> q*test

ans =

1 1 1 1 1

2 2 2 2 2

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

---------------------------------------------------------------

基本行列Rの生成例と掛算結果の確認

* Ri, j, c は、単位行列の (i, j) 成分を c にした行列

(単位行列の2行4列目を2に変えて基本行列R(2,4,2)を作る)

---------------------------------------------------------------

>> test=ones(5)

test =

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

>> r=eye(5)

r =

1 0 0 0 0

0 1 0 0 0

0 0 1 0 0

0 0 0 1 0

0 0 0 0 1

>> r(2,4)=2

r =

1 0 0 0 0

0 1 0 2 0

0 0 1 0 0

0 0 0 1 0

0 0 0 0 1

>> test*r

ans =

1 1 1 3 1

1 1 1 3 1

1 1 1 3 1

1 1 1 3 1

1 1 1 3 1

>> r*test

ans =

1 1 1 1 1

3 3 3 3 3

1 1 1 1 1

1 1 1 1 1

1 1 1 1 1

---------------------------------------------------------------

  • id:pomki_chi
    10年前に使ったときに
    matlabに入っている計算ソフトは
    mapleと同等だったと思います。

    こちらが参考になるとおもいます
    http://math.josai.ac.jp/~toshiko/insei/sakata/HTML/maple/index12.html
  • id:DOISHIGERU
    pomki_chi 様
    かつてmapleと同等だったとの情報ありがとうございます。
  • id:jan8
    本質問に関してDOISHIGERU様より
    別途メッセージにて40ポイント頂きました。
    ありがとうございます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません