Задача 3. Привести симметрическую матрицу А к диагональному виду ортогональным преобразованием. Указать соответствующую матрицу перехода.

> with(linalg):with(LinearAlgebra):

Warning, the previous binding of the name GramSchmidt has been removed and it now has an assigned value

Warning, the assigned name GramSchmidt now has a global binding

По условию задачи:

> A := <<-1,-sqrt(2),0>|<-sqrt(2),1,1>|<0,1,-1>>;

A := _rtable[2400124]

Ранг матрицы:

> rang('A'):=rank(A);

rang(A) := 3

Найдём собственные числа матрицы:

> 'det'('A'-lambda*E)=0;
charmat(-A,-lambda)=0;
det(charmat(-A,-lambda))=0;
'lambda'={solve(det(charmat(-A,-lambda))=0,lambda)};

det(A-lambda*E) = 0

matrix([[-lambda-1, -sqrt(2), 0], [-sqrt(2), -lambd...

-lambda^3+4*lambda-lambda^2+4 = 0

lambda = {-2, -1, 2}

Определим собственные и норамализованные вектора вектора матрицы для каждого собственного значения:

> (l,OwnMatrix):=Eigenvectors(A):

> for i to coldim(OwnMatrix) do
lambda[i]=l[i];
print(`Подставив собственное значение в матрицу, получим:`);
charmat(-A,-l[i]);
print(`Собственный и нормализованый вектор:`);
'a'[i]=convert(col(OwnMatrix,i),matrix),
'e'[i]=map(x->combine(x),convert(normalize(col(OwnMatrix,i)),matrix));od;

lambda[1] = 2

`Подставив собственное значение в матрицу, получим:...

matrix([[-3, -sqrt(2), 0], [-sqrt(2), -1, 1], [0, 1...

`Собственный и нормализованый вектор:`

a[1] = matrix([[-sqrt(2)], [3], [1]]), e[1] = matri...

lambda[2] = -2

`Подставив собственное значение в матрицу, получим:...

matrix([[1, -sqrt(2), 0], [-sqrt(2), 3, 1], [0, 1, ...

`Собственный и нормализованый вектор:`

a[2] = matrix([[sqrt(2)], [1], [-1]]), e[2] = matri...

lambda[3] = -1

`Подставив собственное значение в матрицу, получим:...

matrix([[0, -sqrt(2), 0], [-sqrt(2), 2, 1], [0, 1, ...

`Собственный и нормализованый вектор:`

a[3] = matrix([[1], [0], [sqrt(2)]]), e[3] = matrix...

Соответствующая матрица перехода:

> M:=transpose(matrix(3,3,[normalize(col(OwnMatrix,1)),
normalize(col(OwnMatrix,2)),
normalize(col(OwnMatrix,3))])):
map(x->combine(x), M);

matrix([[-1/6*sqrt(6), 1/2*sqrt(2), 1/3*sqrt(3)], [...

Диагональная матрица:

> diag(l[1],l[2],l[3]);

matrix([[2, 0, 0], [0, -2, 0], [0, 0, -1]])