2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Процесс ортогонализации Грамма-Шмидта
Сообщение10.12.2015, 02:36 
Я считал в экселе, для 4 векторов. Но почему-то там получаются не ортогональные вектора, а вектора, скалярное произведение очень мало (порядка $10^{-17}$)

Здесь вычисления http://rghost.ru/6kHC77HQS

Может ли это быть из-за того, что эксель округлял?

 
 
 
 Re: Процесс ортогонализации Грамма-Щмидта
Сообщение10.12.2015, 04:53 
Естественно.

 
 
 
 Re: Процесс ортогонализации Грамма-Щмидта
Сообщение10.12.2015, 09:39 
Аватара пользователя
Это не специфический недостаток Экселя, а общее свойство реальных вычислений. Они всегда производятся с конечной точностью. $10^{-17}$ весьма похоже на погрешность представления чисел с плавающей точкой с двойной точностью (что обычная практика для вычислений, одинарная точность стандарта IEEE недостаточна, её разве что для экономии при хранении использовать, а расширенная избыточна). Такая ошибка достаточно мала, чтобы ею на практике пренебрегли (разумеется, не "на автомате", а сделав вывод о точности исходных данных в сравнении с вычислительной погрешностью). Если же вдруг окажется, что нужна более высокая точность, придётся использовать расширенную (extended, 10 байтов вместо 8 в двойной, и замедление расчётов, не на уровне процессора, а из-за обращения к памяти вне границы слов), или программно реализованную "длинную арифметику", тут замедление будет не в разы, а в десятки раз. Кроме того, для данной задачи и вообще всех, где используются лишь 4 действия арифметики, а не вычисление корня, логарифма, тригонометрии и т.п. можно использовать арифметику рациональных чисел, в которой результаты вычислений хранятся в виде дроби с отдельно хранимыми числителем и знаменателем. Это позволяет получить совершенно точный ответ, но при этом, помимо резкого замедления счёта, числитель и знаменатель очень быстро растут, превышая машинно-представимые числа (опять же - можно употребить программно реализованную "длинную арифметику" для целых чисел, ещё более замедлив). Но всё сие - очень специфические области, для практически всех реальных расчётов погрешность $10^{-17}$ вполне допустима и с нею смиряются.

 
 
 
 Re: Процесс ортогонализации Грамма-Щмидта
Сообщение10.12.2015, 17:39 
Аватара пользователя
При ортогонализации как раз корни используются очень сильно.

Так что, потребуется что-то типа представления алгебраической формулы для числа. Что, в принципе, реально, для каких-нибудь пакетов символических вычислений (Mathematica, Maple, Maxima), но медленно и не для слишком больших матриц. И потом, нужна ли такая артиллерия для данной конкретной задачи - тоже отдельный вопрос.

 
 
 
 Re: Процесс ортогонализации Грамма-Щмидта
Сообщение11.12.2015, 10:44 
Аватара пользователя
Да, действительно. Вполне можно обойтись без корней при решении СЛАУ, а для ортогонализации максимум возможного без корней - можно построить ортогональные, но не нормированные векторы. А для нормировки нужно будет уже корни вычислять.

 
 
 
 Re: Процесс ортогонализации Грамма-Шмидта
Сообщение11.12.2015, 15:41 
Аватара пользователя
А, ну в таком плане не надо CAS городить, достаточно посчитать подкоренное выражение как рациональное число... Что-то я слишком не то подумал.

 
 
 
 Re: Процесс ортогонализации Грамма-Шмидта
Сообщение11.12.2015, 15:54 
Вообще-то процедура Грама-Шмидта.

 
 
 
 Re: Процесс ортогонализации Грамма-Шмидта
Сообщение11.12.2015, 16:08 
Аватара пользователя

(Оффтоп)

Это ежели на трезвяка - то Грама. А если принять для храбрости перед научным подвигом - как раз будет Грамма. Стограмма, двухсотграмма, в зависимости от размерности матрицы...

 
 
 [ Сообщений: 8 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group