Задача 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>>;
Ранг матрицы:
> rang('A'):=rank(A);
Найдём собственные числа матрицы:
>
'det'('A'-lambda*E)=0;
charmat(-A,-lambda)=0;
det(charmat(-A,-lambda))=0;
'lambda'={solve(det(charmat(-A,-lambda))=0,lambda)};
Определим собственные и норамализованные вектора вектора матрицы для каждого собственного значения:
> (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;
Соответствующая матрица перехода:
>
M:=transpose(matrix(3,3,[normalize(col(OwnMatrix,1)),
normalize(col(OwnMatrix,2)),
normalize(col(OwnMatrix,3))])):
map(x->combine(x), M);
Диагональная матрица:
> diag(l[1],l[2],l[3]);