ВУЗ:
Составители:
Рубрика:
554 Коды Maple-процедур Прил. 1
# Формирование матрицы перехода T
# от исходного (естественного) базиса
# к жорданову (или частично жорданову) базису,
# а также формирование (частичной или полной)
# жодановой нормальной формы J для матрицы А.
if exist_jbas then
# Если существует полный жорданов базис
# (во всем пространстве),
# то матрица GS является квадратной,
# содержит полный жорданов базис
# и совпадает с искомой матрицей перехода Т.
# Полная ж.н.ф. матрицы A совпадает
# с (ранее вычисленной) матрицей JS.
T:=GS;J:=JS;
# Выводим на печать матрицы J и T.
print(evaln(J)=J);
print(evaln(T)=T);
print(str);print(str);
# Организуем "избыточную" проверку
# (логически она является излишней,
# но при отладке программы
# или при ручной работе – полезна).
# Вычисляем и выдаем на печать
# определитель det(T);
# он должен быть ненулевым.
# Если это не так, то
# выдается сообщение об ошибке.
dt:=Determinant(T);
print(evaln(det('T'))=dt);
if dt=0 then
ERROR(`Матрица T необратима!`);
fi;
# Еще одна избыточная проверка:
# контролируем выполнение равенства
# T.J=A.T
# и генерируем сообщение об ошибке,
# если оно нарушается.
if not Equal(T.J,A.T) then
ERROR(`Равенство T*J=A*T не выполняется!`);
fi;
print(str);print(str);
554 Коды Maple-процедур Прил. 1
# Формирование матрицы перехода T
# от исходного (естественного) базиса
# к жорданову (или частично жорданову) базису,
# а также формирование (частичной или полной)
# жодановой нормальной формы J для матрицы А.
if exist_jbas then
# Если существует полный жорданов базис
# (во всем пространстве),
# то матрица GS является квадратной,
# содержит полный жорданов базис
# и совпадает с искомой матрицей перехода Т.
# Полная ж.н.ф. матрицы A совпадает
# с (ранее вычисленной) матрицей JS.
T:=GS;J:=JS;
# Выводим на печать матрицы J и T.
print(evaln(J)=J);
print(evaln(T)=T);
print(str);print(str);
# Организуем "избыточную" проверку
# (логически она является излишней,
# но при отладке программы
# или при ручной работе – полезна).
# Вычисляем и выдаем на печать
# определитель det(T);
# он должен быть ненулевым.
# Если это не так, то
# выдается сообщение об ошибке.
dt:=Determinant(T);
print(evaln(det('T'))=dt);
if dt=0 then
ERROR(`Матрица T необратима!`);
fi;
# Еще одна избыточная проверка:
# контролируем выполнение равенства
# T.J=A.T
# и генерируем сообщение об ошибке,
# если оно нарушается.
if not Equal(T.J,A.T) then
ERROR(`Равенство T*J=A*T не выполняется!`);
fi;
print(str);print(str);
Страницы
- « первая
- ‹ предыдущая
- …
- 552
- 553
- 554
- 555
- 556
- …
- следующая ›
- последняя »
