行列の計算についての質問

このQ&Aのポイント
  • 行列の計算について質問です。行列AとBをn×n行列とし、行列A×Bのi,j成分を求めたいです。
  • 行列Aのi,j成分と行列Bのi,j成分の定義を示しました。
  • 求める行列A×Bのi,j成分の計算プロセスが分からず困っています。分かりやすい解答をお願いします。
回答を見る
  • ベストアンサー

行列の計算

お恥ずかしいながら、行列の計算でてこずっております。 以下の問題です。 行列A、Bをn×n行列とする。 また行列Aのi,j成分をa(i,j)とし、行列Bのi,j成分をb(i,j)とする。 ここで a(i,j) = {n-i+1 (1≦j≦i), n-j+1(i+1≦j≦n)} b(i,j) = {1(i=j=1), 0(i≠j-1, j, j+1), -1(i=j-1, j+1), 2(j=k)} である。 このとき、行列A×Bのi,j成分を求めよ。 という問題です。 答えはi=jのとき1,i≠jのとき0 (つまり、A×B=I(n×nの単位行列)) なのですが、そこまでの計算のプロセスが分かりません。 分かり易いご解答をお待ちしております。

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

  • ベストアンサー
回答No.2

 (A×B)(i,j) =Σ[k=1~n]A(i,k)B(k,j) =Σ[k=1~i]A(i,k)B(k,j)+Σ[k=i+1~n]A(i,k)B(k,j) =Σ[k=1~i](n-i+1)B(k,j)+Σ[k=i+1~n](n-k+1)B(k,j) (1)(i,j)=(1,1)のとき  (A×B)(1,1) =Σ[k=1~1](n-1+1)B(k,1)+Σ[k=1+1~n](n-k+1)B(k,1) =n*B(1,1)+Σ[k=2~n](n-k+1)B(k,1) =n+(n-2+1)B(2,1) =n+(n-2+1)*(-1) =1 他の計算もこのような感じで進めたらよいと思います.

jun-nosuke
質問者

お礼

お礼が遅くなり、申し訳ありませんでした。 お陰様で解決いたしました。 ご解答、有難うございました。

その他の回答 (1)

回答No.1

行列の積の定義は理解されているのでしょうか?

jun-nosuke
質問者

補足

はい。行列は既習項目です。 問題については、答えが単位行列になることは 直感的にはわかるのですが 「答案用紙に書く」 という場合、どのように書いたらよいのかがわかりません。 教授に聞いても、「分かるやつに聞け!」 といわれてしまい、教えてくれません。 よろしくお願いします。

関連するQ&A

  • 行列式の計算なのですが(大学レベル?)・・・

    ある行列の(i,j)成分が、a_[i,j]=|i-j|であるn次正方行列Aについて Aの行列式を求める問題です。 もちろん行列Aがどんなものかは分かりますが、どうやればいいのでしょうか、さっぱり分かりません。まだ高3ですが、ある程度余因子までは理解しています。答えは(-1)^(n-1)*(n-1)*2^(n-2)です。 循環型でもないのでどうも・・・・・・。 独学なのでなれない部分も多いですが、わかる方、大雑把でいいので解答していただけると嬉しいです。 ご教授お願い致します。

  • 行列の固有値について

    I_n:n次単位行列 J_n:全成分が1のn次正方行列 Q_n=(1/n)(I_n-(1/n)J_n)の固有値をもとめよ。 という問題なのですが、n=2,3のときでためしたところ、固有方程式がλ(λ-n)^(n-1)になりそうな感じだなということまではわかって、帰納法でk=n+1の場合を余因子展開して・・・という感じで色々考えたのですがなかなかうまく証明が出来ません。 証明(と間違っていたら答え)を教えてください。よろしくお願いいたします。

  • 行列の問題でわからないところが。

    (1)成分に実数を含む行列を以下のように定義する。 │a 1 1 1│ │1 a 1 1│ │1 1 a 1│ │1 1 1 a│ rank(a)=3となるようなaの値を求めよ。 どのように計算したら良いのかわかりません… どなたか計算例等を説明いただけないでしょうか? (2) Aはn次正則行列で、n次正方行列BはAの逆行列である。またn次正方行列CはBの第i行と第j行を交換してできる行列であるとする。 このとき、Cの逆行列の第(i,j)成分はAの成分を用いて表すことができる。 答えはaiiになるんですが過程がわかりません… もし、過程がわかる方いましたらご教授下さい。 よろしくお願いします。

  • 行列の計算

    #include<stdio.h> #define N 2 #define M 3 void hyoji(float[][M]); int main(){ int i,j,k; float a[N][M] = {{2.0,2.0,2.0},{2.0,2.0,2.0}}; float b[M][M] = {{1.0,1.0,1.0},{2.0,2.0,2.0},{1.0,1.0,1.0}}; float c[N][N]; for(i=0; i<N; i++){ for(j=0; j<M; j++){ c[i][j] = 0; for(k=0; k<M; k++){ c[i][j] += a[i][k] * b[k][j]; } } } hyoji(c); return(0); } void hyoji(float x[][M]){ int i,j; for(i=0; i<N; i++){ for(j=0; j<M; j++){ printf("%4.1f ",x[i][j]); } printf("\n"); } } 以上のプログラムで 行列aと行列bをかけ合せた行列cを求めるのですが コンパイルすると 8 8 8 8 8 1 となり、正しい結果がでません。 なにが間違っているのでしょうか?? よろしくお願いします。

  • n次正方行列の計算

    n次正方行列の計算問題です。2次や3次正方行列なら、素直に個々の成分をかけていくだけだと思うのですが、n次になると、どうやって解くのかわかりません。 すみませんが、考えかたと、どういった形で答えを書けばいいのか教えてください。 成分が0のところは消えるので、行列の成分がそのまま特定の位置に 移動することを記述すればいいのだと思うのですが・・・ 以下、問題↓ 2つのn次正方行列A、E_ijについてAE_ijおよびE_ijAを求めよ。 ただしE_ijは(i,j)成分のみが1で残りの成分はすべて0である。 (_ijはEの右下につく小さいijです。)  |a11 a12 a13 … a1n| |a21 a22 a23 … a2n| A=|a31 a32 a33 … a3n| |: : : … : | |an1 an2 an3 … ann|      (j)       ∨    |   : |    |   : | E_ij=|………:………|<(i)    |   : |    |   : |

  • 行列式の計算について

    対角成分(i,i)が、 "a(i)+b" で それ以外の成分が全て "b(≠0)" のn次正方行列の行列式が a(1)・a(2)・a(3)…a(n)・b となるらしいのですが、どうしてでしょうか。 全ての列からn列を引くと0が沢山でてきて計算できそうなのですが うまくいきません。 よろしくお願いします。

  • 行列式(n-1次)の計算について

    n-1次正方行列Aの成分が以下のようなとき 行列式の値はどうなるでしょうか。 対角成分が {1/p(i)}+{1/p(n)} (n=1,2,3,…,n-1) その他の成分がすべて 1/p(n)  ただし、p(1)+p(2)+p(3)+…p(n-1)+p(n)=1 答えは、 p(1)・p(2)・p(3)・…p(n-1)・p(n) になると解答には書いてあります。 全ての列からn-1列目を引くと、0が沢山でてきたのですが、 最後まで導けませんでした。 よろしくお願いします。

  • C言語を用いた45×45の逆行列の表示について・・・・。。

    次のプログラムを動かすと逆行列を求めることができます。 10×10の計算までは、スムーズに計算する事ができたのですが、 私が知りたい45×45の行列の計算になるとなぜかうまくいきません。 そこでみなさんにお聞きしたいのは、計算がうまくいかない理由がプログラムにあるのか、単にPCの限界なのか、それ以外なのか。みなさんからアドバイスをいただけないでしょうか? ※下のプログラム、見づらくてすいません。 #include <stdio.h> #define N 10 /* 元の数 */ #define N2 2*N /* プロトタイプ宣言 */ void Print(int k); /* 大域変数 */ double a[N][N2]= {/* 行列 Aおよび単位行列 */ { ここに45×45の正則行列&45×45の単位行列を入れます・・・。。 }; int main(void) { double d; int i,j,k; for (k=0;k<=N-1;k++) { Print(k); for(i=0;i<=N-1;i++) { if(i!=k) { d=a[i][k]/a[k][k]; for (j=k+1;j<=N2-1;j++) a[i][j]=a[i][j]-a[k][j]*d; a[i][k] = 0.0; } } d=a[k][k]; for (j=k;j<=N2-1;j++) a[k][j]=a[k][j]/d; } Print(N); } void Print(int k) { int i,j; printf("\n ステップ %d \n",k); /* 小見出し */ for(i=0;i<=N-1;i++) { /* 第i行を印刷 */ for(j=0;j<=N-1;j++) printf("%6.4f,",a[i][j]); printf(" : "); for(j=N;j<=N2-1;j++) printf("%6.4f,",a[i][j]); printf("\n"); } }

  • 行列式の計算

    n次正方行列Aの、i行j列の成分をA(i,j)とすると A(i,j)=a(j)^(i-1)  *(j)はaの添え字を表す と書けるとします。 このとき、Aの行列式|A|はどのように計算すればよいでしょうか? 各列から第1列を引くと、第1行がほとんど0になり、 各列から a(j)-a(1) が括り出せることはわかりますが、 そこから計算が進みません。 よろしくお願いします。

  • 行列の計算

    n次の正方行列があるのですがそれぞれの成分が 1/(i+j-1)と言う分数が並んだものです。 この行列の一番大きい固有値と一番小さい固有値の 比を計算したいのですがnが4くらいになると手計算の 限界なので何か良い方法はないでしょうか? 手計算ではなく何か別の手段でも何でも構いません。