• ベストアンサー

ある行列とその転置行列の積の逆行列は?

今エクセルで行列を使って問題を解いています。 問題は 行列X、A、Yがあり、Xは1行4列、Aは1行2列、Yは1行4列です。 X・A=Y という式があり、Aの行列は未知数a,bの要素からなっています。 X,Yはそれぞれ数値として要素が決まっています。 ここからはヒントとして表示されていました。 そこでXの逆行列を両辺の左からかけるとAは求まるはずですが、 Xは正方行列ではないので、Xの転置行列を左からかけます。 X(T)・Xは正方行列になるのでこれを行列Pとおくと Pの逆行列を求められ、右辺にP^-1をかけるとAが求まる。 というものです。 エクセルで書かれている通りにやってみて、エラーになるので調べてみると、XとXの転置行列の積の行列式は要素にかかわらず0になるようです。 実際に数値ではなく、abcdでやってみたところ0のようです。 この場合、逆行列は存在しないのではないかと思いますが、このヒントが間違っているとはあまり思えず、困っています。 補足ですが、この問題は最小二乗法をエクセルで行列を用いて行うという趣旨です。 もとのデータとして(x、y)の座標が4点与えられており、行列Xはxの要素を縦にならべたもの、Aは最小二乗法で求める一次関数式のパラメーターa,bで、YはXと同様座標のy要素です。 私の理解が間違っていて、何行何列という部分に誤りがあるなどの指摘があれば、ぜひお願いいたします。 そもそもある行列とその転置行列の積の逆行列は存在するのかどうかもお願いします。 締め切りが近く、ちょっとあせっています。 よろしくお願いします!!

質問者が選んだベストアンサー

  • ベストアンサー
  • age_momo
  • ベストアンサー率52% (327/622)
回答No.1

>行列X、A、Yがあり、Xは1行4列、Aは1行2列、Yは1行4列です。 >X・A=Y という式があり、Aの行列は未知数a,bの要素からなっています。 行列Xは2行4列ではないですか?このままでは行列計算できませんよ。 >実際に数値ではなく、abcdでやってみたところ0のようです。 当たり前です。Excelにおいて文字はデータが0です。これで計算すれば 0になるに決まっています。 2行4列の数字の行列(A1からB4)と1行4列(G1からG4)の数字があれば 例えばD1、D2を指定して以下の式を入力、Shift+Ctrl+Enterで {=MMULT(MINVERSE(MMULT(TRANSPOSE(A1:B4),A1:B4)),MMULT(TRANSPOSE(A1:B4),G1:G4))} と計算するとでます。({}はExcelの行列計算で範囲入力したときの{}です)

tktk_oct
質問者

お礼

回答ありがとうございます。 補足ですが、実際にやってみたのは手での計算です。 私の間違いはそもそも式の建て方にあったことがわかりました。 おっしゃるとおり2行4列でした。 そのようにしたらうまくいきました。 まだまだ勉強不足です。 ありがとうございました!

その他の回答 (1)

  • hugen
  • ベストアンサー率23% (56/237)
回答No.2

a+bx=y ----------- a+bx1≒y1 a+bx2≒y2 a+bx3≒y3 a+bx4≒y4 ----------- a・1+bx1≒y1 a・1+bx2≒y2 a・1+bx3≒y3 a・1+bx4y≒4 ------------------ [1 x1][a]  [y1] [1 x2][b]≒[y2] [1 x3]    [y3] [1 x4]    [y4]    X・A=Y  -------------------------------------------- [ 1 1 1 1][1 x1][a] [ 1 1 1 1][y1] [x1 x2 x3 x4][1 x2][b]=[x1 x2 x3 x4][y2]         [1 x3]          [y3]         [1 x4]          [y4]          X(T)XA=X(T)Y 

tktk_oct
質問者

お礼

回答ありがとうございました。 みなさんおっしゃるとおり、最初のXを2行4列にしていないことが間違いでした。 詳しい説明、ありがとうございました。

関連するQ&A

  • 転置の逆行列=逆行列の転置だから

    正方行列Aに対して (A^T)^(-1)=(A^(-1))^(T)   Tは転置を表します これが成り立つんだから A^(-T)と書くことってありますか?

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

    行列の問題で解けなくて困っています. よろしければ教えていただけないでしょうか。 行列に関係する以下の問い(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乗を表す。 という問題です。 計算過程、解答のほうをどうかよろしくお願いいたします。

  • 転置行列への変換が分かりません。

    転置行列への変換が分かりません。 現在、type型のrow行column列の行列(row >= 2, column >= 2, row != column)を、要素数がrow * column個ある配列arrayを用いて表現しています。更にR行C列目の要素はrow * C + R番目のarrayの要素で示しています。 そして転置行列ですが、行列type^(row * column)と行列type^(column * row)は要素数が同じなのでarrayと同じサイズの配列を用いて表現が可能ですし、ひとつずつ要素の置換を行えば新しく一時的にtype^(column * row)の行列を作って単純に代入処理をするよりもメモリに負担が掛からないはずです。 よって今は以下のアルゴリズムを考案し実装したのですが、問題が発生しました。 (以下配列i番目の要素をarray[i - 1]、行列matrixのa行b列の要素はmatrix[a - 1][b - 1]と記す。) ---- 入力 matrix in type^(row * column)とresult_matrix in type^(column * row)を示す、row * column個の要素を持つarrayが与えられる。 手順1 変数xに1を、変数yに0を代入する。一時要素領域tmp_elemにmatrix[x][y] = array[x + y * row]を代入する。 手順2 result_matrix[y][x] = array[y + x * column]とtmp_elemを交換する。 手順3 変数tにy + x * columnを代入し、xにtとrowの剰余を、yにtをrowで割った値の整数部を代入する。 手順4 xが1でかつyが0なら終了。そうでなければ手順2から再度処理を実行。 ---- 分かりやすく書くと、与えられた始点の位置にある転置前の行列としての要素を取得し、次に行列を既に転置された形のものとみなしてから、さっき取得した要素を転置後にあるべき場所へと移動させ、そこに元々あった要素に対して更に再帰的に手順を適応する感じです(実装ではループに落としていますが)。終了条件は「交換対象が始点へ戻ってきたとき」です。 しかし、次々と交換していく流れにおいて処理されない要素が出てきました。integer^(10 * 5)における以下の行列 ---- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, ---- の転置(仮) ---- 0, 10, 20, 30, 40, 1, 11, 7, 31, 41, 2, 12, 22, 32, 14, 3, 13, 23, 33, 43, 4, 21, 24, 34, 44, 5, 15, 25, 28, 45, 6, 16, 26, 36, 46, 35, 17, 27, 37, 47, 8, 18, 42, 38, 48, 9, 19, 29, 39, 49, ---- です。 ここではメインの流れmatirx[1][0] -> ... -> matrix[0][1]では走査できない要素の流れとして matrix[5][3] -> matrix[8][2] -> matrix[2][4] -> matrix[4][1] -> matrix[1][2] -> matrix[7][0] が存在しますが、検出できなかったこの流れにどの様な規則性があるのかどうかが分からないままです。 行列を転置行列に一時行列なしで変換する方法と、このアルゴリズムの不完全な部分を教えてください。 ><;

  • Uとその転置行列の積について

    行列の積について質問です。 任意のベクトルに対する回転について調べていたところ、こちらのサイトで説明されていたのですが、 →ttp://www004.upp.so-net.ne.jp/hiromu-i/tips001.html U=(ux,uy,uz)t   (tは転置行列の記号) UtはUの転置行列 の時、 UUt= | uxux, uyux, uzux | | uxuy, uyuy, uzuy | | uxuz, uyuz, uzuz | というところが理解できなくて困っています。 Uは(ux,uy,uz)t と書いてあるので、 3行1列の行列と考えて、 Utは(ux,uy,uz)tの転置だから(ux,uy,uz)となるので、 1行3列の行列と考えました。 すると、UUtはスカラーになって UUt = ux^2+uy^2+uz^2となると思うのですが、 どう理解すれば UUt= | uxux, uyux, uzux | | uxuy, uyuy, uzuy | | uxuz, uyuz, uzuz | となるのでしょうか。 どなたか教えて下さい。 宜しくお願いいたします。

  • 行列の推定について

    Y=[x y]で、Yは20行2列の行列とします。 (xとyも行列で、各々20行1列の行列です) U=[Ux UY]で、Yと同様に20行2列の行列とします。 (UxとUyも行列で、各々20行1列の行列です) 今、YとUの行列のすべての値が分かっているとします。 この時、Y=A*Uという関係を満たす行列Aはどの様にして求めたらいいでしょうか? 私は、最小二乗法を試しました。 http://www.eli.hokkai-s-u.ac.jp/~kikuchi/ma2/chap08.htmlを参考にして、 A=inv(U'*U)*U'Y としました。 invは逆行列、U'はUの転置行列を表します。 上記の最小二乗法で、Aを求めることは正解なのでしょうか? また、最小二乗法を実行すると、Aに誤差が生じますよね。 その誤差はどのようにして計算したら、よろしいのでしょうか? y=ax+bの様なものに対する誤差伝播法はわかるのですが、Y=A*Uのような行列に対する誤差伝播法はわかりません。

  • 行列の積 内積 の関係について

    行列の積 内積 の関係について 行列の積と内積は同じであると説明があったのですが、 よく分かりません・・・ 例えば、A=(3、-2,1),B=(4,6,7)のベクトルの内積は A・B=(3×4)+(-2×6)+(1×7)=7となるのですが、 行列の積は(1行3列)×(1行3列)で計算できません。 どちらかのベクトルを転置化すれば計算できるのですが・・・ 列ベクトルや行ベクトルは転置しても同じベクトルなのでOKと言う事でしょうか? 内積の演算結果はスカラー(数値)で、行列の積の演算結果は 行列と認識しているのですがこの認識は誤りでしょうか? 列ベクトルや行ベクトルの積の場合はスカラーとなるのでしょうか? A=(3、-2,1),B=(4,6,7)において、ベクトルBを転置化してtBとすれば A×tB=(7)となります。これはスカラーとなりますでしょうか? (追加質問) また、以前ノルムに関して質問させて頂きました。 ご回答頂いた内容で大凡理解できたのですが、追加で一点だけ質問させて下さい。 VのベクトルAに対して、ノルムは ||A||=√(A・A)とされますが、これを||A||=√(A^2)と表記するのはおかしいのでしょうか?

  • 転置行列の問題で。

    Aはn次正方行列。x,bはn項列ベクトルであるとしたとき、 ||Ax-b||^2=xtAtAx-2xtAtb+btb が成り立つらしいのですが、いまいちよくわかりません。 btb=b^2,が成り立つ? xtAtAx=||Ax||^2,が成り立つ? -Axb-bAx=-2xtAtbが成り立つ? 転置行列の計算の法則がよくわかりません… どなたか簡単な計算例も交えて説明いただけないでしょうか?

  • 行列の求め方

    基礎的な問題とは思うのですが、下記の行列の求め方がわかりません。 恐らく転置行列を使用して求めるとは思うのですが・・・ x=1 に対してPx=xとなり、x・y=0となる任意の3次元ベクトルyに対して 2 3 はPy=0となるような一次変換を表す3×3行列Pを求めよ。

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

    情報処理系の数学(カルマンフィルタとか)では(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がスカラーだったら予想どおり逆数なります。ベクトルだったらエラーです。やはりベクトルだと当然ダメということでしょうか。

  • クロネッカー積の固有値と逆行列について

    タイトルどおり、クロネッカー積の固有値と逆行列について教えてください。 A=N*N正方行列、B=M*M正方行列のクロネッカ積C=A*Bの固有値と逆行列について解説されているサイトや文献がありましたら教えてもらえませんか。 ちなみに線形代数は学部1年で習う程度しか知りません。またN=M=2の場合は確認したのですが、一般的なものが知りたいので、よろしくお願いいたします。 クロネッカー積の基本は http://www.aichi-gakuin.ac.jp/~chino/anova/chapter1/sec1-4-7.html に書いています。