#include <stdio.h>
#include <math.h>
#include <complex.h>
#define N 4
#define EPS 1e-8
#define MAX_ITER 100
double complex A[N][N] = {
{1.0, 2.0, 3.0, 5.0},
{3.0, -5.0, 1.0, 4.0},
{5.0, 9.0, 2.0, -6.0},
{1.0, 7.0, 4.0, 1.0}
};
/* LU分解 */
void lu_decomposition(double complex B[N][N],
double complex L[N][N],
double complex U[N][N])
{
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
L[i][j]=(i==j)?1.0+0.0*I:0.0+0.0*I;
U[i][j]=0.0+0.0*I;
}
}
for(int i=0;i<N;i++){
for(int j=i;j<N;j++){
double complex sum = 0.0 + 0.0*I;
for(int k=0;k<i;k++)
sum += L[i][k]*U[k][j];
U[i][j] = B[i][j] - sum;
}
for(int j=i+1;j<N;j++){
double complex sum = 0.0 + 0.0*I;
for(int k=0;k<i;k++)
sum += L[j][k]*U[k][i];
L[j][i] = (B[j][i]-sum)/U[i][i];
}
}
}
/* 前進代入 */
void forward_substitution(double complex L[N][N],
double complex x[N],
double complex y[N])
{
for(int i=0;i<N;i++){
double complex sum = 0.0 + 0.0*I;
for(int j=0;j<i;j++)
sum += L[i][j]*y[j];
y[i] = x[i] - sum;
}
}
/* 後退代入 */
void backward_substitution(double complex U[N][N],
double complex y[N],
double complex x[N])
{
for(int i=N-1;i>=0;i--){
double complex sum = 0.0 + 0.0*I;
for(int j=i+1;j<N;j++)
sum += U[i][j]*x[j];
x[i] = (y[i]-sum)/U[i][i];
}
}
void inverse_iteration(double complex lambda_hat)
{
double complex B[N][N];
double complex L[N][N];
double complex U[N][N];
double complex x[N] =
{
1.0+0.0*I,
1.0+0.0*I,
1.0+0.0*I,
1.0+0.0*I
};
double complex y[N];
double complex x_next[N];
for(int i=0;i<N;i++){
for(int j=0;j<N;j++){
B[i][j] = A[i][j];
if(i==j)
B[i][j] -= lambda_hat;
}
}
lu_decomposition(B,L,U);
printf("\n==================================================================\n"); printf(" 行列1 に対する逆反復法を実行中 (近似固有値 lambda_hat = %.3f %+.3fi)\n", printf("==================================================================\n");
int iter=0;
double diff;
double complex lambda = 0.0 + 0.0*I;
do{
forward_substitution(L,x,y);
backward_substitution(U,y,x_next);
/* 絶対値が最大の要素を探索 */
double max_mag = 0.0;
int idx = 0;
for(int i=0;i<N;i++){
if(cabs(x_next
[i
]) > max_mag
){ max_mag
= cabs(x_next
[i
]); idx = i;
}
}
double complex scale = x_next[idx];
for(int i=0;i<N;i++)
x_next[i] /= scale;
diff = 0.0;
for(int i=0;i<N;i++)
diff
+= cabs(x_next
[i
]-x
[i
]);
for(int i=0;i<N;i++)
x[i]=x_next[i];
lambda = lambda_hat + 1.0/scale;
// 収束状況の出力レイアウト
printf("反復 %2d: x = [(%.4f%+.4fi), (%.4f%+.4fi), (%.4f%+.4fi), (%.4f%+.4fi)], 固有値 = %.6f%+.6fi\n", iter + 1,
iter++;
}while(diff>EPS && iter<MAX_ITER);
// 最終結果出力ブロック
printf(" 収束固有ベクトル (x) = [(%.4f%+.4fi), (%.4f%+.4fi), (%.4f%+.4fi), (%.4f%+.4fi)]\n", printf("==================================================================\n");
// 固有値・固有ベクトルであることの確認(残差チェック)
printf("\n 固有対の検証チェック (A*x - lambda*x):\n"); for (int i = 0; i < N; i++) {
double complex ax_i = 0.0 + 0.0*I;
for (int j = 0; j < N; j++) {
ax_i += A[i][j] * x[j];
}
double complex lx_i = lambda * x[i];
double complex residue = ax_i - lx_i;
printf(" 第%d行: A*x = (%9.5f%+.5fi), lambda*x = (%9.5f%+.5fi), 残差絶対値 = %e\n", i + 1,
}
printf("==================================================================\n"); }
int main()
{
printf("=== 行列1: 複素シフトによる残りの固有値スペックトルの探索 ===\n");
// 近似固有値の設定(必要に応じて自由に変更可能)
inverse_iteration(-5.4 + 0.0*I);
inverse_iteration(-2.1 + 1.7*I);
inverse_iteration(-2.1 - 1.7*I);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+CiNpbmNsdWRlIDxjb21wbGV4Lmg+CiAKI2RlZmluZSBOIDQKI2RlZmluZSBFUFMgMWUtOAojZGVmaW5lIE1BWF9JVEVSIDEwMAogCmRvdWJsZSBjb21wbGV4IEFbTl1bTl0gPSB7CiAgICB7MS4wLCAyLjAsIDMuMCwgNS4wfSwKICAgIHszLjAsIC01LjAsIDEuMCwgNC4wfSwKICAgIHs1LjAsIDkuMCwgMi4wLCAtNi4wfSwKICAgIHsxLjAsIDcuMCwgNC4wLCAxLjB9Cn07CiAKLyogTFXliIbop6MgKi8Kdm9pZCBsdV9kZWNvbXBvc2l0aW9uKGRvdWJsZSBjb21wbGV4IEJbTl1bTl0sCiAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgY29tcGxleCBMW05dW05dLAogICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGNvbXBsZXggVVtOXVtOXSkKewogICAgZm9yKGludCBpPTA7aTxOO2krKyl7CiAgICAgICAgZm9yKGludCBqPTA7ajxOO2orKyl7CiAgICAgICAgICAgIExbaV1bal09KGk9PWopPzEuMCswLjAqSTowLjArMC4wKkk7CiAgICAgICAgICAgIFVbaV1bal09MC4wKzAuMCpJOwogICAgICAgIH0KICAgIH0KIAogICAgZm9yKGludCBpPTA7aTxOO2krKyl7CiAKICAgICAgICBmb3IoaW50IGo9aTtqPE47aisrKXsKICAgICAgICAgICAgZG91YmxlIGNvbXBsZXggc3VtID0gMC4wICsgMC4wKkk7CiAKICAgICAgICAgICAgZm9yKGludCBrPTA7azxpO2srKykKICAgICAgICAgICAgICAgIHN1bSArPSBMW2ldW2tdKlVba11bal07CiAKICAgICAgICAgICAgVVtpXVtqXSA9IEJbaV1bal0gLSBzdW07CiAgICAgICAgfQogCiAgICAgICAgZm9yKGludCBqPWkrMTtqPE47aisrKXsKICAgICAgICAgICAgZG91YmxlIGNvbXBsZXggc3VtID0gMC4wICsgMC4wKkk7CiAKICAgICAgICAgICAgZm9yKGludCBrPTA7azxpO2srKykKICAgICAgICAgICAgICAgIHN1bSArPSBMW2pdW2tdKlVba11baV07CiAKICAgICAgICAgICAgTFtqXVtpXSA9IChCW2pdW2ldLXN1bSkvVVtpXVtpXTsKICAgICAgICB9CiAgICB9Cn0KIAovKiDliY3pgLLku6PlhaUgKi8Kdm9pZCBmb3J3YXJkX3N1YnN0aXR1dGlvbihkb3VibGUgY29tcGxleCBMW05dW05dLAogICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBjb21wbGV4IHhbTl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGNvbXBsZXggeVtOXSkKewogICAgZm9yKGludCBpPTA7aTxOO2krKyl7CiAKICAgICAgICBkb3VibGUgY29tcGxleCBzdW0gPSAwLjAgKyAwLjAqSTsKIAogICAgICAgIGZvcihpbnQgaj0wO2o8aTtqKyspCiAgICAgICAgICAgIHN1bSArPSBMW2ldW2pdKnlbal07CiAKICAgICAgICB5W2ldID0geFtpXSAtIHN1bTsKICAgIH0KfQogCi8qIOW+jOmAgOS7o+WFpSAqLwp2b2lkIGJhY2t3YXJkX3N1YnN0aXR1dGlvbihkb3VibGUgY29tcGxleCBVW05dW05dLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgY29tcGxleCB5W05dLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgY29tcGxleCB4W05dKQp7CiAgICBmb3IoaW50IGk9Ti0xO2k+PTA7aS0tKXsKIAogICAgICAgIGRvdWJsZSBjb21wbGV4IHN1bSA9IDAuMCArIDAuMCpJOwogCiAgICAgICAgZm9yKGludCBqPWkrMTtqPE47aisrKQogICAgICAgICAgICBzdW0gKz0gVVtpXVtqXSp4W2pdOwogCiAgICAgICAgeFtpXSA9ICh5W2ldLXN1bSkvVVtpXVtpXTsKICAgIH0KfQogCnZvaWQgaW52ZXJzZV9pdGVyYXRpb24oZG91YmxlIGNvbXBsZXggbGFtYmRhX2hhdCkKewogICAgZG91YmxlIGNvbXBsZXggQltOXVtOXTsKICAgIGRvdWJsZSBjb21wbGV4IExbTl1bTl07CiAgICBkb3VibGUgY29tcGxleCBVW05dW05dOwogCiAgICBkb3VibGUgY29tcGxleCB4W05dID0KICAgIHsKICAgICAgICAxLjArMC4wKkksCiAgICAgICAgMS4wKzAuMCpJLAogICAgICAgIDEuMCswLjAqSSwKICAgICAgICAxLjArMC4wKkkKICAgIH07CiAKICAgIGRvdWJsZSBjb21wbGV4IHlbTl07CiAgICBkb3VibGUgY29tcGxleCB4X25leHRbTl07CiAKICAgIGZvcihpbnQgaT0wO2k8TjtpKyspewogICAgICAgIGZvcihpbnQgaj0wO2o8TjtqKyspewogCiAgICAgICAgICAgIEJbaV1bal0gPSBBW2ldW2pdOwogCiAgICAgICAgICAgIGlmKGk9PWopCiAgICAgICAgICAgICAgICBCW2ldW2pdIC09IGxhbWJkYV9oYXQ7CiAgICAgICAgfQogICAgfQogCiAgICBsdV9kZWNvbXBvc2l0aW9uKEIsTCxVKTsKIAogICAgcHJpbnRmKCJcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuIik7CiAgICBwcmludGYoIiDooYzliJcxIOOBq+WvvuOBmeOCi+mAhuWPjeW+qeazleOCkuWun+ihjOS4rSAo6L+R5Ly85Zu65pyJ5YCkIGxhbWJkYV9oYXQgPSAlLjNmICUrLjNmaSlcbiIsCiAgICAgICAgICAgY3JlYWwobGFtYmRhX2hhdCksIGNpbWFnKGxhbWJkYV9oYXQpKTsKICAgIHByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKIAogICAgaW50IGl0ZXI9MDsKICAgIGRvdWJsZSBkaWZmOwogICAgZG91YmxlIGNvbXBsZXggbGFtYmRhID0gMC4wICsgMC4wKkk7CiAKICAgIGRvewogCiAgICAgICAgZm9yd2FyZF9zdWJzdGl0dXRpb24oTCx4LHkpOwogICAgICAgIGJhY2t3YXJkX3N1YnN0aXR1dGlvbihVLHkseF9uZXh0KTsKIAogICAgICAgIC8qIOe1tuWvvuWApOOBjOacgOWkp+OBruimgee0oOOCkuaOoue0oiAqLwogICAgICAgIGRvdWJsZSBtYXhfbWFnID0gMC4wOwogICAgICAgIGludCBpZHggPSAwOwogCiAgICAgICAgZm9yKGludCBpPTA7aTxOO2krKyl7CiAgICAgICAgICAgIGlmKGNhYnMoeF9uZXh0W2ldKSA+IG1heF9tYWcpewogICAgICAgICAgICAgICAgbWF4X21hZyA9IGNhYnMoeF9uZXh0W2ldKTsKICAgICAgICAgICAgICAgIGlkeCA9IGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAKICAgICAgICBkb3VibGUgY29tcGxleCBzY2FsZSA9IHhfbmV4dFtpZHhdOwogCiAgICAgICAgZm9yKGludCBpPTA7aTxOO2krKykKICAgICAgICAgICAgeF9uZXh0W2ldIC89IHNjYWxlOwogCiAgICAgICAgZGlmZiA9IDAuMDsKIAogICAgICAgIGZvcihpbnQgaT0wO2k8TjtpKyspCiAgICAgICAgICAgIGRpZmYgKz0gY2Ficyh4X25leHRbaV0teFtpXSk7CiAKICAgICAgICBmb3IoaW50IGk9MDtpPE47aSsrKQogICAgICAgICAgICB4W2ldPXhfbmV4dFtpXTsKIAogICAgICAgIGxhbWJkYSA9IGxhbWJkYV9oYXQgKyAxLjAvc2NhbGU7CiAKICAgICAgICAvLyDlj47mnZ/nirbms4Hjga7lh7rlipvjg6zjgqTjgqLjgqbjg4gKICAgICAgICBwcmludGYoIuWPjeW+qSAlMmQ6IHggPSBbKCUuNGYlKy40ZmkpLCAoJS40ZiUrLjRmaSksICglLjRmJSsuNGZpKSwgKCUuNGYlKy40ZmkpXSwg5Zu65pyJ5YCkID0gJS42ZiUrLjZmaVxuIiwgCiAgICAgICAgICAgICAgIGl0ZXIgKyAxLCAKICAgICAgICAgICAgICAgY3JlYWwoeFswXSksIGNpbWFnKHhbMF0pLAogICAgICAgICAgICAgICBjcmVhbCh4WzFdKSwgY2ltYWcoeFsxXSksCiAgICAgICAgICAgICAgIGNyZWFsKHhbMl0pLCBjaW1hZyh4WzJdKSwKICAgICAgICAgICAgICAgY3JlYWwoeFszXSksIGNpbWFnKHhbM10pLAogICAgICAgICAgICAgICBjcmVhbChsYW1iZGEpLCBjaW1hZyhsYW1iZGEpKTsKIAogICAgICAgIGl0ZXIrKzsKIAogICAgfXdoaWxlKGRpZmY+RVBTICYmIGl0ZXI8TUFYX0lURVIpOwogCiAgICAvLyDmnIDntYLntZDmnpzlh7rlipvjg5bjg63jg4Pjgq8KICAgIHByaW50ZigiXG4g6KiI566X57WQ5p6cOlxuIik7CiAgICBwcmludGYoIiDlj47mnZ/lm7rmnInlgKQgKGxhbWJkYSkgICA9ICUxMC42ZiAlKy42ZmlcbiIsIGNyZWFsKGxhbWJkYSksIGNpbWFnKGxhbWJkYSkpOwogICAgcHJpbnRmKCIg5Y+O5p2f5Zu65pyJ44OZ44Kv44OI44OrICh4KSAgPSBbKCUuNGYlKy40ZmkpLCAoJS40ZiUrLjRmaSksICglLjRmJSsuNGZpKSwgKCUuNGYlKy40ZmkpXVxuIiwgCiAgICAgICAgICAgY3JlYWwoeFswXSksIGNpbWFnKHhbMF0pLAogICAgICAgICAgIGNyZWFsKHhbMV0pLCBjaW1hZyh4WzFdKSwKICAgICAgICAgICBjcmVhbCh4WzJdKSwgY2ltYWcoeFsyXSksCiAgICAgICAgICAgY3JlYWwoeFszXSksIGNpbWFnKHhbM10pKTsKICAgIHByaW50ZigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4iKTsKIAogICAgLy8g5Zu65pyJ5YCk44O75Zu65pyJ44OZ44Kv44OI44Or44Gn44GC44KL44GT44Go44Gu56K66KqN77yI5q6L5beu44OB44Kn44OD44Kv77yJCiAgICBwcmludGYoIlxuIOWbuuacieWvvuOBruaknOiovOODgeOCp+ODg+OCryAoQSp4IC0gbGFtYmRhKngpOlxuIik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IE47IGkrKykgewogICAgICAgIGRvdWJsZSBjb21wbGV4IGF4X2kgPSAwLjAgKyAwLjAqSTsKICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IE47IGorKykgewogICAgICAgICAgICBheF9pICs9IEFbaV1bal0gKiB4W2pdOwogICAgICAgIH0KICAgICAgICBkb3VibGUgY29tcGxleCBseF9pID0gbGFtYmRhICogeFtpXTsKICAgICAgICBkb3VibGUgY29tcGxleCByZXNpZHVlID0gYXhfaSAtIGx4X2k7CiAgICAgICAgcHJpbnRmKCIg56ysJWTooYw6IEEqeCA9ICglOS41ZiUrLjVmaSksIGxhbWJkYSp4ID0gKCU5LjVmJSsuNWZpKSwg5q6L5beu57W25a++5YCkID0gJWVcbiIsIAogICAgICAgICAgICAgICBpICsgMSwgCiAgICAgICAgICAgICAgIGNyZWFsKGF4X2kpLCBjaW1hZyhheF9pKSwgCiAgICAgICAgICAgICAgIGNyZWFsKGx4X2kpLCBjaW1hZyhseF9pKSwgCiAgICAgICAgICAgICAgIGNhYnMocmVzaWR1ZSkpOwogICAgfQogICAgcHJpbnRmKCI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiIpOwp9CiAKaW50IG1haW4oKQp7CiAgICBwcmludGYoIj09PSDooYzliJcxOiDopIfntKDjgrfjg5Xjg4jjgavjgojjgovmrovjgorjga7lm7rmnInlgKTjgrnjg5rjg4Pjgq/jg4jjg6vjga7mjqLntKIgPT09XG4iKTsKIAogICAgLy8g6L+R5Ly85Zu65pyJ5YCk44Gu6Kit5a6a77yI5b+F6KaB44Gr5b+c44GY44Gm6Ieq55Sx44Gr5aSJ5pu05Y+v6IO977yJCiAgICBpbnZlcnNlX2l0ZXJhdGlvbigtNS40ICsgMC4wKkkpOwogICAgaW52ZXJzZV9pdGVyYXRpb24oLTIuMSArIDEuNypJKTsKICAgIGludmVyc2VfaXRlcmF0aW9uKC0yLjEgLSAxLjcqSSk7CiAKICAgIHJldHVybiAwOwp9Cg==
=== 行列1: 複素シフトによる残りの固有値スペックトルの探索 ===
==================================================================
行列1 に対する逆反復法を実行中 (近似固有値 lambda_hat = -5.400 +0.000i)
==================================================================
反復 1: x = [(-0.3354+0.0000i), (-0.5824-0.0000i), (1.0000+0.0000i), (0.0721+0.0000i)], 固有値 = -5.350763+0.000000i
反復 2: x = [(-0.3379-0.0000i), (-0.5939-0.0000i), (1.0000-0.0000i), (0.0763-0.0000i)], 固有値 = -5.492612+0.000000i
反復 3: x = [(-0.3379+0.0000i), (-0.5937-0.0000i), (1.0000-0.0000i), (0.0761-0.0000i)], 固有値 = -5.489178+0.000000i
反復 4: x = [(-0.3379-0.0000i), (-0.5937-0.0000i), (1.0000-0.0000i), (0.0761-0.0000i)], 固有値 = -5.489255+0.000000i
反復 5: x = [(-0.3379+0.0000i), (-0.5937-0.0000i), (1.0000-0.0000i), (0.0761-0.0000i)], 固有値 = -5.489254+0.000000i
反復 6: x = [(-0.3379-0.0000i), (-0.5937-0.0000i), (1.0000-0.0000i), (0.0761-0.0000i)], 固有値 = -5.489254+0.000000i
計算結果:
収束固有値 (lambda) = -5.489254 +0.000000i
収束固有ベクトル (x) = [(-0.3379-0.0000i), (-0.5937-0.0000i), (1.0000-0.0000i), (0.0761-0.0000i)]
==================================================================
固有対の検証チェック (A*x - lambda*x):
第1行: A*x = ( 1.85508+0.00000i), lambda*x = ( 1.85508+0.00000i), 残差絶対値 = 8.030443e-11
第2行: A*x = ( 3.25883+0.00000i), lambda*x = ( 3.25883+0.00000i), 残差絶対値 = 2.493117e-12
第3行: A*x = ( -5.48925+0.00000i), lambda*x = ( -5.48925+0.00000i), 残差絶対値 = 0.000000e+00
第4行: A*x = ( -0.41759+0.00000i), lambda*x = ( -0.41759+0.00000i), 残差絶対値 = 1.728266e-10
==================================================================
==================================================================
行列1 に対する逆反復法を実行中 (近似固有値 lambda_hat = -2.100 +1.700i)
==================================================================
反復 1: x = [(-0.4181+0.0652i), (-0.3703+0.0217i), (1.0000-0.0000i), (-0.2179-0.1941i)], 固有値 = -2.115342+1.685657i
反復 2: x = [(-0.4141+0.0673i), (-0.3707+0.0224i), (1.0000+0.0000i), (-0.2172-0.1894i)], 固有値 = -2.103743+1.674409i
反復 3: x = [(-0.4141+0.0673i), (-0.3707+0.0224i), (1.0000+0.0000i), (-0.2172-0.1894i)], 固有値 = -2.103484+1.674116i
反復 4: x = [(-0.4141+0.0673i), (-0.3707+0.0224i), (1.0000+0.0000i), (-0.2172-0.1894i)], 固有値 = -2.103481+1.674115i
反復 5: x = [(-0.4141+0.0673i), (-0.3707+0.0224i), (1.0000+0.0000i), (-0.2172-0.1894i)], 固有値 = -2.103481+1.674115i
計算結果:
収束固有値 (lambda) = -2.103481 +1.674115i
収束固有ベクトル (x) = [(-0.4141+0.0673i), (-0.3707+0.0224i), (1.0000+0.0000i), (-0.2172-0.1894i)]
==================================================================
固有対の検証チェック (A*x - lambda*x):
第1行: A*x = ( 0.75849-0.83477i), lambda*x = ( 0.75849-0.83477i), 残差絶対値 = 4.659298e-12
第2行: A*x = ( 0.74222-0.66768i), lambda*x = ( 0.74222-0.66768i), 残差絶対値 = 2.149513e-11
第3行: A*x = ( -2.10348+1.67411i), lambda*x = ( -2.10348+1.67411i), 残差絶対値 = 8.005932e-16
第4行: A*x = ( 0.77391+0.03470i), lambda*x = ( 0.77391+0.03470i), 残差絶対値 = 5.726044e-11
==================================================================
==================================================================
行列1 に対する逆反復法を実行中 (近似固有値 lambda_hat = -2.100 -1.700i)
==================================================================
反復 1: x = [(-0.4181-0.0652i), (-0.3703-0.0217i), (1.0000-0.0000i), (-0.2179+0.1941i)], 固有値 = -2.115342-1.685657i
反復 2: x = [(-0.4141-0.0673i), (-0.3707-0.0224i), (1.0000-0.0000i), (-0.2172+0.1894i)], 固有値 = -2.103743-1.674409i
反復 3: x = [(-0.4141-0.0673i), (-0.3707-0.0224i), (1.0000-0.0000i), (-0.2172+0.1894i)], 固有値 = -2.103484-1.674116i
反復 4: x = [(-0.4141-0.0673i), (-0.3707-0.0224i), (1.0000-0.0000i), (-0.2172+0.1894i)], 固有値 = -2.103481-1.674115i
反復 5: x = [(-0.4141-0.0673i), (-0.3707-0.0224i), (1.0000-0.0000i), (-0.2172+0.1894i)], 固有値 = -2.103481-1.674115i
計算結果:
収束固有値 (lambda) = -2.103481 -1.674115i
収束固有ベクトル (x) = [(-0.4141-0.0673i), (-0.3707-0.0224i), (1.0000-0.0000i), (-0.2172+0.1894i)]
==================================================================
固有対の検証チェック (A*x - lambda*x):
第1行: A*x = ( 0.75849+0.83477i), lambda*x = ( 0.75849+0.83477i), 残差絶対値 = 4.659298e-12
第2行: A*x = ( 0.74222+0.66768i), lambda*x = ( 0.74222+0.66768i), 残差絶対値 = 2.149513e-11
第3行: A*x = ( -2.10348-1.67411i), lambda*x = ( -2.10348-1.67411i), 残差絶対値 = 8.005932e-16
第4行: A*x = ( 0.77391-0.03470i), lambda*x = ( 0.77391-0.03470i), 残差絶対値 = 5.726044e-11
==================================================================