while True:

問題13

正則な 2 次正方行列の固有値,規格化された固有ベクトルを求めるプログラムを作れ

難易度 ★★★★☆

発展的な問題です。腕に自信がない人はまずこの問題は避けるべきです。分量自体は少ないですが、はじめの一歩までが少し長いです。 まずベクトルの固有値を求めるために2次方程式を解く必要があります。これはWebサイトや線形代数の教科書を参考にしてください。 その後、それぞれの固有値に対する固有ベクトルを算出します。片方のベクトルの値を1に固定すると計算しやすくなるかもしれません。
program question13
	implicit none
	real :: vector(2, 2), lamb1, lamb2, x1, x2

	print *, "input vector(2x2):"
	read *, vector

	lamb1 = (vector(1, 1) + vector(2, 2) + ((vector(1, 1) + vector(2, 2)) ** 2 &
				- 4 * (vector(1, 1) * vector(2, 2) - vector(1, 2) * vector(2, 1))) ** 0.5) / 2
	lamb2 = (vector(1, 1) + vector(2, 2) - ((vector(1, 1) + vector(2, 2)) ** 2 &
				- 4 * (vector(1, 1) * vector(2, 2) - vector(1, 2) * vector(2, 1))) ** 0.5) / 2

	print *, "lambda 1:", lamb1
	print *, "lambda 2:", lamb2

	print *, "vector 1:", 1.0, -(vector(1, 1) - lamb1) / vector(2, 1)
	print *, "vector 2:", 1.0, -(vector(1, 1) - lamb2) / vector(2, 1)

end program question13
ページのトップへ戻る