実数値行列関数とは一体なに?

このQ&Aのポイント
  • 実数値行列関数について詳しく教えてください。
  • 実数値行列関数の定義域と値域がよく分かりません。どういう意味なのでしょうか?
  • 変数を使った表記で実数値行列関数を説明してください。
回答を見る
  • ベストアンサー

実数値行列関数とは一体なに?

詳しい方よろしくお願い致します。 某書籍にreal valued matrix functionについて Let f be a differentiable real valued matrix function on M_n^{s,+}. Define the gradient of the function f, with respect to a matrix A=(a_ij)∈M_n^{s,+}, as ∂f/∂A:=(∂f(A)/∂a_ij). (但し,M_n^{s,+}はn×nのpositive definite symmetric matriciesの集合) と定義されてたのですがいまいちよく分かりせん。 M_n^{s,+}の元は実行列でfはM_n^{s,+}からRへの写像なのでしょうか? それともM_n^{s,+}からM_n^{s,+}への写像なのでしょうか? 写像fの定義域と値域が何なのかはっきりしません。 どうやらAは変数の役割をしているようなので Let f be a differentiable real valued matrix function on M_n^{s,+}. Define the gradient of the function f, with respect to a matrix X=(x_ij)∈M_n^{s,+}, as ∂f/∂X:=(∂f(X)/∂x_ij). と変数らしくXとx_ijで書き改めてみました。 それでもってX∈{(x_ij)∈M_n^{s,+};x_ijは実変数}なので gradient (∂f(X)/∂x_ij)は何を意味するかというと, もし,f(X)の値域がRなら行列(∂f(X)/∂x_ij)はn×n行列で f(X)の値域がM_n^{s,+}なら,行列(∂f(X)/∂x_ij)はn^2×n^2行列になるのでしょうか?

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

  • ベストアンサー
  • alice_44
  • ベストアンサー率44% (2109/4759)
回答No.3

"real valued matrix function" と書いてあるでしょう? 素直に字句どおり受けとめれば、 real を値に持つ、matrix の関数ということです。 値域が実数、定義域は行列です。 n 次正方行列全体は、n×n 次ベクトル空間を成します。 だから、f を n×n 変数の多変数実関数と見ると、 f の gradient も n×n 次元のベクトルです。 質問の英文が言っているのは、そういう話です。

Arice123
質問者

お礼

どうも有難うございます。

その他の回答 (2)

noname#171951
noname#171951
回答No.2

detとかtrとかがfの例。 ファインマンは抽象的な概念がでてきたら 何か例を考えてイメージするようにしてたっ て言ってましたっけ。

Arice123
質問者

お礼

どうも有難うございます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

本当はほかのところも見て総合的に判断すべきなんだろうけど, 値域は実数でしょう.

Arice123
質問者

お礼

どうも有難うございます。

関連するQ&A

  • 表現行列

    Vを実数に係数を持つ2次以下の多項式全体が成すベクトル空間とする。すなわち、 V={a+bx+c*x^2|a、b、c∈R} である。tを0≦t なる定数とし、線形変換T :V→V を T(f(x))=f(1+tx)により定義する。 Vの基底1、x、x^2に関するTの表現行列を求めよ。 という問題があります。一般に、、、、 【線形写像f:R^n→R^mに対して、(m,n)型の行列Aがただひとつ定まり、 x'=f(x)=Axと表せる。(x∈R^n, x'∈R^m) この行列Aを、線形写像fの表現行列という。】 表現行列はこのように定義されていますから、この問題の場合 t^(T(1),T(x),T(x^2))= (1,0,0) (1,t,0) (1,2t,t^2) * t^(1,x,x^2) となるため、求める表現行列Aは (1,0,0) (1,t,0) (1,2t,t^2) となるかと思っていたのですが、解答には、これを転置した行列が書いてありました。 (1,1,1) (0,t,2t) (0,0,t^2) となっていました。 なぜこうなるのか理屈が分からないのですみませんが教えてください。

  • 行列の問題です。

    行列の問題です。 e[ij]をn*n行列でi行j列成分のみ1で他は0であるとする。 i≠jのとき e[ij]^a=E+ae[ij]とする。ただしE=単位行列、a∈R (1)e[ij]*e[hk]=δ[jh]e[ik]を示せ。 ※δjhはクロネッガーのデルタ。 (2)(e[ij]^a)*(e[ij]^b)=(e[ij]^x)となるxをa,bを使って書け。 (3)e[ij]^aの逆行列を求めよ。 よろしくお願いします。

  • 行列をベクトルに

    m行n列の行列Aがあったとき、それをm×n行1列の行列(ベクトル)Bに するというプログラムを作りたいです。 つまり MATRIX B; B.m=A.m*A.n; B.n=1; return B; ということだと思うのですが、なかなかうまいくいきません。 また、構造体も使いたいので、 typedef struct { int m; int n; double *mat; } MATRIX; と宣言しました。 みなさんよろしくお願いします。

  • 部分行列の抜き出し(C言語)

    部分行列の抜き出し(C言語) ある行列から、任意の部分行列を抜き出すような関数を作りたいのですが、わからないので手助けをお願いしたいです。 たとえば4行4列の行列Aがあった場合、その2行2列、2行3列、3行2列、3行3列目の 4つの(2行2列の)要素を抜き出すような関数です。 枠組みは出来ているので載せておきます。 #include <stdio.h> #include <stdlib.h> #include <math.h> typedef struct matrix{ double *data; int size[2]; }MATRIX; MATRIX create_matrix(int m,int l,int a); //行列の作成 void print_matrix(MATRIX A); //行列の表示 MATRIX submatrix(MATRIX matrix_A,int m,int n,int l,int k); //任意の部分行列の抜き出し int main(int argc,char **argv) { //構造体の初期化 MATRIX matrix_A={NULL,NULL,NULL}; MATRIX matrix_B={NULL,NULL,NULL}; MATRIX matrix_C={NULL,NULL,NULL}; int m=0; //行列の行 int l=0; //行列の列 int a=1; //要素 double det=0; //行列計算 //行列Aの作成 m=4;//行 l=4;//列 matrix_A = create_matrix( m, l, a); //関数 matrix_C = submatrix(matrix_A,2,2,3,3); //行列結果出力 printf("\n\tmatrix input"); print_matrix(matrix_A); printf("\n\tmatrix output"); print_matrix(matrix_C); //行列の開放 free(matrix_A.data); matrix_A.data=NULL; free(matrix_C.data); matrix_C.data=NULL; printf("終了!\n\n"); return 0; } MATRIX create_matrix(int m,int l,int a) { MATRIX matrix_A={NULL,NULL,NULL}; int i=0; //サイズの確保 行;size[0] 列;size[1] matrix_A.size[0]=m; matrix_A.size[1]=l; //メモリの確保 matrix_A.data=(double *)malloc(sizeof(double)*matrix_A.size[0]*matrix_A.size[1]); if(matrix_A.data == NULL){ printf("メモリ確保失敗!![matrix_A]\n"); exit(1); } //行列Aの作成 for(i=0; i<((matrix_A.size[0])*(matrix_A.size[1])) ;i++){ *(matrix_A.data+i)=a+i; } return(matrix_A); } /*行列の表示*/ void print_matrix(MATRIX matrix_A) { int i=0; int j; //行 int k; //列 printf("\n行列の表示\n"); //行列Aのプリント for(j=0;j<matrix_A.size[0];j++){ for(k=0;k<matrix_A.size[1];k++){ printf("%f\t",*(matrix_A.data+k*matrix_A.size[0]+j)); } printf("\n"); } return; } MATRIX submatrix(MATRIX matrix_A,int m,int n,int l,int k) { MATRIX matrix_C = {NULL,NULL,NULL}; int i,j; //サイズの確保 行;size[0] 列;size[1] matrix_C.size[0]=l-m+1; matrix_C.size[1]=k-n+1; //メモリの確保 matrix_C.data=(double *)malloc(sizeof(double)*matrix_C.size[0]*matrix_C.size[1]); if(matrix_C.data == NULL){ printf("メモリ確保失敗!![matrix_C]\n"); exit(1); } //任意の部分行列の抜き出し (ここがわかりません。) } よろしくお願いします。

  • ある行列A(具体的に与えられています)に対し,f(x)=Axで与えられ

    ある行列A(具体的に与えられています)に対し,f(x)=Axで与えられる実線形写像f:R^n→R^nがあったとします.このとき,Kerf∩Imfの基底はどのようにして求めればよいのでしょうか?

  • 行列の指数関数について

    行列の指数関数について 「exp(X)=E+Σ(1/n!)X^nとした時に、exp(tA)を求めよ」という問題で、(3×3)行列 (tA)^n=t^n  (2・2^n-3^n   -2^n+3^n  -2^n+3^n)  (1-3^n      3^n     -1+3^n)  (-1+2・2^n-3^n -2^n+3^n  1-2^n+3^n) となって、2^n,3^nをeにした後に上の行列に代入すると、自分で計算した値と答えの値が違くなってしまいます。(a13,a32,a33のところ) なのでeについて求めた後に、代入したときの計算教えてください。 見づらくて、すいませんm(--)m

  • 逆写像の求め方

    以下の逆写像を求めなさい。 定義域と値域はどちらも実数です。 1.f(m)=4m+6 関数の逆写像を求める場合は、n=4m+6をmについて解けば良いのでしょうか? n-6=4m, m=(n-6)/4。したがって、f^-1(m)=m/4-3/2?で宜しいでしょうか? 2.f(m)=m^3-2 上のやり方が正しければ同様にn=m^3-2, n+2=m^3。mの3乗ってこの先どうにか出来るんでしたっけ。。すみません、逆写像の質問ではなくて数学の基礎なのかも知れませんが、ご存知の方いらっしゃったら教えて下さい。 あと、逆写像は、y=xの線を隔てて対称的な線を描く、という認識は正しいでしょうか。

  • 行列式

    大学院受験生です。 線形代数の問題で行列 a(ij) = a (i=j)      1 (i≠j) の行列式の値が(a+(n-1))(a-1)^(n-1) とありますが余因子展開をしてもうまくいきません。どのようにして求めているのでしょうか?

  • 行列をベクトルに(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列の行列になっています) みなさんよろしくお願いします。

  • 表現行列の正確な意味とは?

    宜しくお願い致します。 [Q]Let T∈L(V).Write down matrix representation of [T]_β and [T]_β' given the following basis: β:v1,v2,…,vn β':v'1,v'2,…,v'n という問題なのですがこの場合の表現行列とは何を意図するのかはっきりわかりません。 『[定義] n次元F線形空間Vの基底を{v1,v2,…,vn}とし、map g:V→F^nを V∋∀Σ[i=1..n]civi→g(Σ[i=1..n]civi):=t(c1,c2,…,cn) (tは転値行列を表す) でgを与えるとgは同型写像となる。 ここで{v1,v2,…,vn}の順序を変えるとgは別物になってしまうのでこの順序を込めた 基底 {v1,v2,…vn}をβ:=[v1,v2,…,vn]と表す事にし、このgをβによって決まる同型写像 と呼ぶ事にする。 m次元F線形空間Wの基底をβ':=[w1,w2,…,wm]によって決まる同型写像をh:W→F^mと し、 線形写像f:V→Wに対し、合成写像hfg^-1:F^n→F^mは線形写像となる。 行列表現とは始集合のF線形空間Vの基底[v1,v2,…,vn]=:βと終集合のF線形空間Wの 基底[w1,w2,…,wm]=:β'とし、f∈L(V,W)において f(vj)=Σ[i=1..m]aijwi (j=1,2,…,n)で定まる行列(aij)=:Aを βからβ'へのfによる行列表現という』 だと思います。 つまり、表現行列を正確に述べるには"基底何々から基底何々への線形写像何々による表現行列" という風に3項目はっきり述べないといけないと思います。 さて、線形変換の場合, 上記の問題文で[T]_βと書いた時、これは (1)基底βからβへの線形写像Tの表現行列 (2)基底βからβ'への線形写像Tの表現行列 (3)基底β'からβへの線形写像Tの表現行列 のどれを意図しているのでしょうか?