Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
5.3.0 - 日本語

Change language to:
English - Français - Português

Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function

Scilab manual >> Linear Algebra > spec

spec

行列とペンシルの固有値

呼び出し手順

evals=spec(A)
[R,diagevals]=spec(A)

evals=spec(A,B)
[alpha,beta]=spec(A,B)
[alpha,beta,Z]=spec(A,B)
[alpha,beta,Q,Z]=spec(A,B)

パラメータ

A

実数または複素正方行列

B

Aと同じ次元の実数または複素正方行列

evals

実数または複素ベクトル, 固有値

diagevals

実数または(対角項に固有値を有する)複素対角行列

alpha

実数または複素ベクトル, al./be により固有値が得られます

beta

実数ベクトル, al./be により固有値が得られます

R

可逆な実数または複素正方行列, 行列右固有ベクトル.

L

可逆な実数または複素正方行列, ペンシル左固有ベクトル.

R

可逆な実数または複素正方行列, ペンシル右固有ベクトル.

説明

evals=spec(A)

ベクトルevals に固有値を返します.

[R,diagevals] =spec(A)

対角行列r evals に固有値, Rに固有ベクトルを返します.

evals=spec(A,B)

行列ペンシル A - s B のスペクトル,すなわち, 多項式行列 s B - Aの根,を返します.

[alpha,beta] = spec(A,B)

行列ペンシルA - s Bのスペクトル, すなわち,多項式行列 A - s Bの根を返します. 一般化固有値 alpha と beta は行列 A - alpha./beta B が特異行列となる値です. 固有値は al./be により指定され, beta(i) = 0の場合,i番目の固有値は無限大となります. (B = eye(A)の場合, alpha./betaspec(A)となります). 通常,beta=0や両方がゼロの場合に関して都合が良い解釈が存在するため, (alpha,beta)の組み合わせで表されます.

[alpha,beta,R] = spec(A,B)

上記に加えてペンシルの一般化右固有ベクトルとなる 行列 Rを返します.

[al,be,L,R] = spec(A,B)

上記に加えてペンシルの一般化右および左固有ベクトルである行列 L およびRを返します.

[al,be,Z] = spec(A,E)

一般化右固有ベクトルである行列 Z を返します.

[al,be,Q,Z] = spec(A,E)

一般化右および左固有ベクトルである行列 Q および Zを返します.

大きな完全 / 疎行列の場合, Arnoldi モジュールを使用することができます.

参照

行列の固有値計算は Lapack ルーチンに基づいています

  • 行列が対称でない場合, DGEEV および ZGEEV.

  • 行列が対称の場合, DSYEV および ZHEEV.

複素対象行列は複素共役の非対角項と実数の対角項を有します.

ペンシル固有値計算は Lapack ルーチン DGGEV および ZGGEVに基づいています.

実数および複素行列

例えば evals や R のような出力変数の型は入力行列 A および B の型と 同じである必要はないことに注意してください. 以下のパラグラフでは、行列 A の固有値および固有ベクトルを 計算する際の出力変数の型を解析します.

  • 実数 A 行列

    • 対称

      固有値と固有ベクトルは実数.

    • 非対称

      固有値と固有ベクトルは複素数.

  • 複素 A 行列

    • 対称

      固有値は実数だが固有ベクトルは複素数.

    • 非対称

      固有値,固有ベクトルは複素数.

// MATRIX EIGENVALUES
A=diag([1,2,3]);
X=rand(3,3);
A=inv(X)*A*X;
spec(A)

x=poly(0,'x');
pol=det(x*eye()-A)
roots(pol)

[S,X]=bdiag(A);
clean(inv(X)*A*X)

// PENCIL EIGENVALUES
A=rand(3,3);
[al,be,R] = spec(A,eye(A));
al./be
clean(inv(R)*A*R)  //displaying the eigenvalues (generic matrix)
A=A+%i*rand(A);
E=rand(A);
roots(det(A-%s*E))   //complex case
<< spantwo Linear Algebra sqroot >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Wed Jan 26 16:25:04 CET 2011