Mathematicaで3×3の固有値を求めたら…

このQ&Aのポイント
  • Mathematicaを使用して3×3の行列の固有値を求める方法について説明します。
  • ヘルプを使用して固有値を求めたところ、不明な値が出てきて困っています。
  • 固有値の一つがわけのわからない形で表示されています。何を間違っているのか教えてください。
回答を見る
  • ベストアンサー

Mathematicaで3×3の固有値を求めたら…

以下の行列Rの固有値を求めたい。{}は行を表わしていて、一つもの{}は1行、2個目の{}は2行目といった感じです。 R[a_, b_, c_, d_, l_, m_, n_] := {{-a - l, b, 0}, {a, -b - c - m, d}, {0, c, -d - n}} Eigenvalues[R[a, b, c, d, l, m, n]] として、固有値を求めようとしたのですが、解に「#1」とわけのわからない値が出てきました。ヘルプで調べたのですが、さっぱりです。 固有値の一つが Root[bdl+adm+dlm+ac#1+ad#1+bd#1+bl#1+…省略…&,1] となりました。 良く意味がわかりません。

  • macus
  • お礼率76% (331/433)

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

  • ベストアンサー
  • adinat
  • ベストアンサー率64% (269/414)
回答No.1

R[a_, b_, c_, d_, l_, m_, n_] := {{-a - l, b, 0}, {a, -b - c - m, d}, {0, c, -d - n}} ToRadicals[Eigenvalues[R[a, b, c, d, l, m, n]]] とすれば、意味のわかる答えが出てきますが、たぶん役には立たないでしょう。mathematicaでは3次以上の代数方程式を解かすと、最小多項式に分解し、さらに最小多項式の根にある規則で順番をつけ、その根である、というように表現します。 具体的には、Root[#^5 - 2 # + 1&,1]とは、x^5-2x+1=0の1番目の根、という意味です。#をたとえばxに置き換えればいいのです。 Root[#^5 - 2 # + 1&,1]は一意的な複素数を表しますので、このままの形で計算することができます。たとえば、 Simplify[Root[#^5 - 2 # + 1&,1]+Root[#^5 - 2 # + 1&,2]+Root[#^5 - 2 # + 1&,3]+Root[#^5 - 2 # + 1&,4]+Root[#^5 - 2 # + 1&,5]] これが0になることは解と係数の関係から明らかですよね。 Rootオブジェクトをよく知っている表示に直したければ、ToRadicals[Root[…]]を用います。そうするとべき根と四則を用いた表示が与えられます。 Rootオブジェクトで記号が使われていなければ、N[Root[…]]で近似値を計算させることもできます。質問者様が書かれているものだと、記号が多用されていますので、近似値を出すことは不可能です。

参考URL:
http://reference.wolfram.com/mathematica/ref/ToRadicals.html
macus
質問者

お礼

回答ありがとうございます。 完璧です!!! ありがとうございました。

関連するQ&A

  • 行列の証明問題 (固有値と固有ベクトルの性質)

    行列A=[a(jk)](j:行 k:列 )に関する諸命題を証明し、適当な例を用いて説明せよ。 ただし、λ(1),・・・,λ(n)はAの固有値とする。I:単位行列 (a)実固有値と複素固有値  Aが実行列のときには、その固有値は実数または共役複素数の対からなる。 (b)逆行列  逆行列A^(-1)は0がAの固有値でないとき、またそのときに限り存在する。  その固有値は1/λ(1),・・・,1/λnである。 (c)トレース  Aの対角成分の和をトレースまたは対角和という。これは固有値の和に等しい。 (d)スペクトル移動  行列A-kIは固有値λ(1)-k,・・・,λ(n)-kをもち,Aと同じ固有ベクトルをもつ。 (e)スカラー倍、ベキ  行列kAの固有値はkλ(1),・・・,kλ(n)であり、行列A^m(m=1,2・・)の固有値は  λ(1)^m,・・・,λ(n)^mである。固有関数はいずれもAの固有関数と同じである。 (f)スペクトル写像定理  ’多項式行列’  p(A)=k(m)A^m+k(m-1)A^(m-1)+・・・+k(1)A+k(0)I は固有値    p(λj)=k(m)λj^m+k(m-1)λj^(m-1)+・・・+k(1)λ(1)^(m-1)+k(0) (j=1,・・・,n) をもち、Aと同じ固有関数をもつ。 (g)ペロンの定理  正の成分l(12),l(13),l(31),l(32)をもつレスリー行列Lには1つの正の固有値が  存在することを示せ。 これらの問題(証明)が難しくて分かりません。教えて下さい、お願いします。

  • 行列の固有値と固有ベクトルの証明が分かりません

    (1)2×2行列A=(a b c d)の固有値は x^2-(a+d)x+(ad-bc)=0 の解で与えられることを証明せよ。 (2)(1)の行列Aが固有値α、β(α≠β)を持つとき α、βに対する固有ベクトルをそれぞれ2×1行列(p.q) (r.s)として 2×2行列P=(p.r.q.s) を作ると 2×2行列P-1AP=(α.0.β.0) なることを証明せよ。 という問題が分かりません。 調べてみたのですがよく分かりませんでした。 教えてください。

  • [行列]固有値分解

    A(m*n),rankA=rに対して M=A*A転置 N=A転置*A と定義するとき、M,Nの零でない固有値が一致することを示せ。 また、M,Nのそれぞれの固有ベクトルの関係について説明せよ。 という問題で、私は最初M,Nそれぞれに対してAX=ΛXの方程式を 立てて連立で解こうと思ったのですが、できませんでした。 わかる方、ぜひお願いします><;

  • 行列 固有値

    D=[0 1 0; 0 0 1; -c -b -a](;で行を区切っています。) という行列がある。 φ(z)=0を満たすzに対して3x1のxについての方程式Dx=zxを解け という問題なのですが、固有値は求まりましたが、 このxを求めようとするととても汚い答えになってしまいます。 解法をご教授ください。

  • 固有値問題で右辺の一部要素が 0 の場合を解きたい

    通常、固有値問題は、 Ax = λx という形ですが、 右辺の x の一部の要素が 0 の場合を解きたいため、質問いたしました。 【詳細】  A: n x n の実対称行列  x: n 次元の実列ベクトル  y: n 次元の実列ベクトル ただし、0 < m < n として、m 個目までの要素は x と同じだが、それ以降は 0  λ: スカラー変数 として、Aが与えられた場合、  A x = λy の条件で x, y, λ を求めたいです。 【参考】 n x n の単位行列から、m+1 行目以降を0とした行列を B とすると、元の式は、   A x = λ B x と、一般固有値問題の形になり、さらに A に逆行列 (=C) が存在すれば、   C B x = (1/λ) x として、通常の固有値問題に帰着できます。 しかし、よりエレガントな方法があればと思いまして質問いたしました。 なお、今取り組んでいる問題では、n は 3 の倍数で m = 1.5*n です。 この条件に限定していただいても構いません。 「この方面の文献が参考になる」 などのコメントでも結構ですので、 よろしくお願いたします。

  • 固有値 固有ベクトル

    固有値を求める場合の固有方程式について質問させて頂きます。 固有値と固有ベクトルの定義は、 n×n行列Aに対して、λ∈C,x∈C^nが Ax=λx |x≠0 を満たすとき、λをAの固有値、xをλに対するAの固有ベクトルという。 固有値を求める際の固有方程式ですが、 私の手元にある参考書では、 |λI-A|=0とあります。 web等で調べると|A-λI|=0という表記もありました。 Iは単位行列を表します。 |λI-A|=0と|A-λI|=0はどちらも正しいのでしょうか? また、なぜ等しくなるのか教えて頂けないでしょうか? 以上、ご回答よろしくお願い致します。

  • 2行のセルの入れ替え。

     初めまして、よろしくお願いします。  セルに A B C D E F G H I J K L 1 a b c d e f 2 g h i j k l 3 m n o p q r 4 s t u v w x 5 " ・ " ・ " ・ " 100 "  という表があります。これを A B C D E F G H I J K L 1 a b c d e f g h i j k l 2 m n o p q r s t u v w x 3 " 4 " 5 " ・ " ・ " ・ " 100 "  という風に、偶数行のデーターを奇数行の後ろにつけるようにしたいと思います。無理ならば奇数行だけのデーター、偶数行だけのデーターとなるように、何かよい方法を教えて頂きたく、よろしくお願いします。

  • 対称行列 固有値

    次の2問をお願いします。 (1)Aを2次の対称行列とする。Aの二つの固有値が一致するならばA=λIであることを示せ。 (2)Aを2次の対称行列とする。またλをAの固有値、vベクトルをλに対するAの固有ベクトルとするとき、wベクトル=R(π/2)vベクトルはAのもう一方の固有値に対する固有ベクトルであることを示せ。 A= a b vベクトル=v1 c d v2 と成分表示する。 見づらいと思いますが、よろしくお願いします。

  • 5×5行列、固有値、固有ベクトル

    5つの値を入力し、それぞれの相対比を求めて行列にして、固有値と固有ベクトルを求めたいのですが、分からないので教えて下さい。下のプログラムは固有値を求めるものです。これは過去の質問にあったプログラムを少し変えてみたのですが、値が出てこないのでどうすればうまく出てくるのか教えて下さい。それと、固有ベクトルを求めるプログラムも教えて下さい。宜しくお願いします。 #include <math.h> #include <stdlib.h> #include <stdio.h> int main(void) { int i, j, k, l; double max,theta,x,y,a[5][5],b[5]; printf("値1: "); scanf("%d",&b[0]); printf("値2: "); scanf("%d",&b[1]); printf("値3: "); scanf("%d",&b[2]); printf("値4: "); scanf("%d",&b[3]); printf("値5: "); scanf("%d",&b[4]); printf("行列\n"); for(j=0;j<5;j++){ for(k=0;k<5;k++){ a[j][k]=b[k]/b[j]; printf("%1.3f ",a[j][k]); } printf("\n"); } while(1){ max=0; for(i=0;i<5;i++){ for(j=0;j<5;j++){ if (i!=j && max<fabs(a[i][j])){ max=fabs(a[i][j]); k=i; l=j; } } } if (max<1.0e-6) break; theta=(a[k][k]!=a[l][l])? atan2(-2*a[k][l],a[k][k]-a[l][l])/2:M_PI/4; for(i=0;i<5;i++){ x=a[i][k]; y = a[i][l]; a[i][k] = cos(theta) * x - sin(theta)*y; a[i][l] = sin(theta) * x + cos(theta)*y; } for (j=0;j<5;j++){ x=a[k][j]; y=a[l][j]; a[k][j]=cos(theta)*x-sin(theta)*y; a[l][j]=sin(theta)*x+cos(theta)*y; } } printf("固有値\n"); for (i=0;i<5;i++){ printf("%1.3f\n",a[i][i]); } return 0; }

  • 行列 固有値

    D=[0 1 0; 0 0 1; -c -b -a](;で行を区切っています。) という行列がある。 φ(s)=det(sE-D)で定義され、 φ(z)=0を満たすzに対してx=[x1x2 x3]のxについての方程式Dx=zxを解け という問題なのですが、固有値は求まりましたが、 このxを求めようとすると答えが汚くなってしまいます。 どなたかご教授お願いいたします。