А ещё можете проверить, насколько я адекватно решил следующую похожую задачу, но уже не для ортонормированного базиса:
Подпространство

задано в базисе

с матрицей Грама

системой линейных уравнений

. Найти базис в ортогональном дополнении

.
Решение: пусть есть некоторый вектор

с координатным столбцом

, и вектор

со столбцом

. Для таких векторов скалярное произведение

. Приравняем

, откуда

"сократим" на координатный столбец

(вот здесь меня смущает то, что после сокращения приравнивается прямоугольная матрица к вектор-строке) и получаем

, столбцы этой матрицы есть базис в

, с ответами это сходится, но получено как-то искусственно...