• 締切済み

行列の和の逆行列について

情報処理系の数学(カルマンフィルタとか)では(A+B+C)^(-1)とか(A+BCF)^(-1)のように行列の和(あるいは行列と行列の積の和)の逆行列の表式があり、公式のようなものが与えられていたりします。その中で例えば(A+B+C)^(-1)でA,B,Cとは何かと言うと行列(普通は正方行列?)なわけですが、例えば単に1つの値(スカラー)であった場合は逆数というのは自然な拡張としてあり得ると思います。1行1列の行列の対角成分だけの行列と見なすわけです。これはいいだろうと思います。問題はAなどがベクトルだったときです。これは計算できないということでいいでしょうか。ベクトルだったら1行N列の行列(N行1列でも)ということであり、逆行列が定義できないということになるでしょうか。カルマンフィルタなどではベクトルではないかと思うものが式の中に入っているのですが。Rで実験してみるとAの逆行列はsolve(A)だけで求まります。Aがスカラーだったら予想どおり逆数なります。ベクトルだったらエラーです。やはりベクトルだと当然ダメということでしょうか。

みんなの回答

  • f272
  • ベストアンサー率46% (8009/17116)
回答No.4

> それはどんなものなのでしょうか。いわば逆ベクトルというものですが、初等数学の範囲で定義されているものでしょうか。 vの随伴ベクトルuを使って,w=(u v)^(-1) uと定義する と書いた通りです。十分に初等的だよね。 正方行列であれば行列Aと行列Bが互いに逆行列の関係にあれば ABA=A,BAB=B,ABの転置行列=AB,BAの転置行列=BA ですが,上記でvとvから定義されるwの間には vwv=v,wvw=w,vwの転置行列=vw,wvの転置行列=wv と言う関係があります。

skmsk1941093
質問者

お礼

回答ありがとうございます。演算そのものは十分初等的ですが、定義にif文が着くようになったと言うのは初耳でした。if(スカラ)、if(ベクトル)、 if(マトリックス)です。初等的には、逆行列はif(マトリクス)の場合だけ定義されていた(それができないと言うことも含めて)と思っていたので。学問が進むと定義も変わるのだな思いました。逆行列という言葉の他に一般化逆行列というものもあり、発展的に別のものが定義されたのだと理解するのかなと思いますが。

  • f272
  • ベストアンサー率46% (8009/17116)
回答No.3

普通にできたけど... m <- matrix(1:4, 2, 2) solve(m) library(MASS) v <- c(1.0, 2.0, 3.0, 4.0, 5.0) ginv(v)

skmsk1941093
質問者

お礼

回答ありがとうございます。ライブラリMASSを読んで関数ginvでベクトルの逆(行列)ができたわけですね。それはどんなものなのでしょうか。いわば逆ベクトルというものですが、初等数学の範囲で定義されているものでしょうか。ベクトルどうしの積には内積・外積・テンソル積があり、マトリックスの積の結果が単位行列(これもマトリックス)になるそういうものが逆行列ということとどういう関係にあるのだろうと思うのですが。おそらく定義の問題なんだろうと思いますが。(定義なので理論を問うことはできず、そう定義した事情について因みに聞いてみるということはあろうかと思うのですが)

  • 178-tall
  • ベストアンサー率43% (762/1732)
回答No.2

 ↓ 参考 URL Matrix Inversion Identities など、ご覧ください。   

参考URL:
http://www0.cs.ucl.ac.uk/staff/g.ridgway/mil/mil.pdf
  • f272
  • ベストアンサー率46% (8009/17116)
回答No.1

行列の和とは関係ない話ですね。 例えばベクトルvがあったとき,逆行列のようなものとしてはvの随伴ベクトルuを使って,w=(u v)^(-1) uと定義するのが普通です。

skmsk1941093
質問者

お礼

回答ありがとうございます。データ解析ソフトのRですが、ベクトルVの逆数(コマンドではsolve(V))を取ろうとするとエラーとなります。スカラーだと逆数です。時系列解析の中のフィルタリングのところで出てきた問題であり、Rを利用することが前提です。Rとしてはベクトルの逆数はNGです。自分で例外処理を考えておいて、ベクトルだったらWを随伴ベクトルを使って定義すれば問題ないということにはなるかなと思います。自然な拡張として自前で定義すればいいということでしょうか。Rの標準処理には含まれないというのをどう解釈するか、なのですが。

関連するQ&A

  • 行列の問題を教えてください。

    行列の問題で解けなくて困っています. よろしければ教えていただけないでしょうか。 行列に関係する以下の問い(1)~(4)に答えよ。 (1)2行2列の行列をAとする。さらにその固有値をλ1,λ2(λ1≠λ2)とし、それぞれに付随する固有ベクトルを(x1,y1)と(x2,y2)とする。 P≡ |x1 x2| |y1 y2| と置くと、固有値と固有ベクトルの定義から AP=P|λ1 0| |0 λ2| と書ける。ここから、 A=P|λ1 0|P^-1 | 0 λ2| および A^n=P|λ1 0|^nP^-1 |0 λ2| となることを示せ。ここでP^-1はPの逆行列、nは正の整数、A^nは行列Aのn乗を示す。 (2)固有値が1と-1である2行2列の行列Bがある。この行列のn乗B^nを求めよ。さらにその逆行列(B^n)^-1を求めよ。B^nと(B^n)^-1の両方において、nが偶数と奇数で答えが異なるので、両者を区別して答えを示せ。必要なら2つの正則な正方行列B1、B2の積の逆行列が (B1B2)^-1=B2^-1B1^-1 となることを使え。 (3)固有値が1と-1で、それぞれに付随する固有ベクトルが(2,1)と(1,1)である2行2列の行列Cを求めよ。 (4)xとyを未知数とする次の連立方程式 |3 -4|^21 |x| =|10| |2 -3| |y| |7| を解け。ここで |3 -4|^21 |2 -3| は行列 |3 -4| |2 -3| の21乗を表す。 という問題です。 計算過程、解答のほうをどうかよろしくお願いいたします。

  • 逆行列の存在

    a^2+b^2+c^2+d^2<1で 行列Aは一行一列目a,一行二列目b,二行一列目c,二行二列目d のとき、E-Aは逆行列をもつことを示せ。Eは単位行列。 考えたのは (1) B(E-A)=E となるBが存在することをしめせばよいと思いましたが、   この形にできませんでした。 (2) (1-a)(1-d)-bc の値が0でないことを、a^2+b^2+c^2+d^2<1を使いしめせば   よいと思い、式変形を試みましたがうまくいきませんでした。   -1<a<1,b,c,dも同様、このことは押さえなければとは思いました よろしくおねがいします

  • 逆行列 求め方

    逆行列の求め方について。 以下の内容はすべてdet(A)≠0:逆行列が存在することを前提にします。 2行2列の場合は、添付画像のように逆行列を求めていました。 これは、通常3行3列などで逆行列を求める場合に使う A^-1=A^~/|A|を簡単にしたものだと考えておりました。 式が見づらくてすいません。A^-1:逆行列、A^~:余因子行列です。 ここで質問なのですが、 2行2列の余因子行列は添付画像にある行列になるのでしょうか? 3行3列の場合はテキストなどに記載されている方法でわかるのですが 同様の方法では2行2列の余因子行列は作れません・・・ また、余因子行列を作る際に小行列式なるものが出てきます。 この小行列式と呼ばれるものは見た目は行列なのになぜ行列式 と呼ばれるのでしょうか? URL:http://kagennotuki.sakura.ne.jp/la/node5.html 以上、ご回答よろしくお願い致します。

  • 3×3行列の逆行列

    2×2行列の逆行列はいわずと知れた、 A= (a b) (c d) に対し A^(-1)=1/(ad-bc) * (d -b) (-c a) ですよね。 でも3×3行列Xの逆行列X^(-1)の一般式って教科書に載ってないんですよね。 具体的にXが数値的に与えられてるときは基本変形を使って (X E)→…→(E X^(-1)) と逆行列を求める方法は示されてるのですが一般式となると載ってない。 これは書こうとするととんでもなく面倒な式になるからなのでしょうか? X= (x_11 x_12 x_13) (x_21 x_22 x_23) (x_31 x_32 x_33) の逆行列、表せるのであれば教えてください。

  • 逆行列の計算

    こんばんは。 逆行列の計算についてどうしてもわからない所があるので教えてください。 行列(B+C*Rt)があります。(Rtは行列Rの転置) ここで、B=[B11 0; B21 B22]{;は改行}の構造化行列で次元は,(行*列)の順番でB11がn+n,0がn*m(0は0行列),B21がm*n,B22がm*mです。 行列Cに関しては、C=[B21;0]でB21がn*m,0がm*mの0行列。 行列Rtに関しては、Rt=[0 Iq]で0がm*nの0行列、Iqがm*mの単位行列です。 この時(B+C*Rt)の逆行列がわかりません。 答えは、B~-B~*{C*(Iq+Rt*B~*C)~*Rt}*B~になると思うのですが・・・(~は逆行列です) どなたか解かる方お願いします。

  • 行列の平方和とは?

    初歩的な質問でお恥ずかしいのですが・・・。 行列Xと、負荷量ベクトルpがあります。 Xの各要素は標準化されています。 内積(p, p)、つまり、t(p)*pを、行列Xの平方和SS(X)で割ることによって寄与率を求める、 という記述に出会ったのですが、どうも腑に落ちません。 ここで、t(p)はpの転置ベクトルという意味で用いています。 t(p)*pがスカラーになるのはわかります。 しかし、SS(X)については、もしXがn行×m列の行列だった場合、 SS(X)=t(X)*Xで、n行×n列の行列になります。(よね?) スカラーを行列で割るというのがわからず、おそらく何か誤解をしているのだと思います。 それとも、行列Xの平方和SS(X)とは、t(X)*Xの主対角要素の和のことをいっているのでしょうか? もしそうだとすれば、Xは標準化されているため、tr(t(X)*X)=nとなり、 寄与率はt(p)*p/nで求められることになり、すっきりと理解できるのですが・・・。 付け焼き刃で勉強する不届きな文系人間に、どなたか説明していただけないでしょうか? お手数をおかけしますが、よろしくお願いいたします。

  • 行列をベクトルに(C言語)

    行列をベクトルに(C言語) m行n列の行列Aがあったとき、それをm×n行1列の行列(ベクトル)Bに するというプログラムを作りたいです。 これは、行列Aの1列目m行分の要素をそのまま行列Bの1行1列目に持っていき、 それを行列Aのn列の数だけ繰り返す、といった要領です(画像参照) つまり MATRIX B; B.m=A.m*A.n; B.n=1; return B; ということだと思うのですが、なかなかうまいくいきません。 また、構造体も使いたいので、 typedef struct { int m; int n; double *mat; } MATRIX; と宣言しました。 画像は説明のため、一応載せておきました。(例として4列の行列になっています) みなさんよろしくお願いします。

  • 行列の問題

     N行N列の行列A   行列Aの成分は成分を(行,列)で表すと、(1,1)=(N,N)=2、(1,2)=(1,N)=(2,1)=(N,1)=(N-1,N)=(N,N-1)-1  この行列の固有値と固有ベクトルを求めたいのですが、どうすればいいかわかりません。どなたか教えてください。

  • 逆行列の存在について

    n×n行列で各列がそれぞれ一次独立のn次ベクトルからなるものは逆行列が存在する気がするのですが、そのことの証明または反例を教えてください。なるべく行列式の計算方法を知らなくてもわかる方法で示していただけると嬉しいです。

  • 成分が行列(?)の行列式の証明について.

    成分が行列(?)の行列式の証明について. 画像添付が失敗してしまったようで再掲です.すみません. ---問題ここから--- Aがm次の正方行列,Bがm行n列の行列,Cがn次の正方行列,Oがn行m列のゼロ行列の時, |A B| |O C| = |A||C| を示せ. ---問題ここまで--- という問題です.(実際の問題文の画像を添付しました.) まさか2次正方行列の公式を使って示したことにはならないでしょうし, 左辺を1行で余因子展開して A|C|-B|O|=A|C| としてみたのですが,これでは右辺と等しいとは言えませんよね. 成分が行列の行列式ってどう計算したらよいのでしょうか,やり方がわからずハマってしまいました... どなたか解答の方針を教えて頂けませんか?