Ортогональная матрица
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.217.37] |
|
|
правила раздела Алгоритмы

Ортогональная матрица
|
Сообщ.
#1
,
|
|
|
|
Народ, подскажите, как определить, является ли квадратная матрица ортогональной? Насколько я знаю, признак ортогональной матрицы: A*Aт=E, где Ат - транспонированная матрица, Е - единичная матрица. Заранее благодарен!
|
|
Сообщ.
#2
,
|
|
|
|
Тупо умножить ИМХО проще всего.
Ещё можно получить гауссом обратную к А матрицу - должна получиться она же, если получилась - значит ортогональная. Чего-то я притормаживаю сейчас, так что сильно не бейте если обманул |
|
Сообщ.
#3
,
|
|
|
|
Цитата HOMO PROGRAMMATIS, 21.04.03, 15:52:30 Нда с этим ты что-то переврал. Ещё можно получить гауссом обратную к А матрицу - должна получиться она же, если получилась - значит ортогональная. А вот насчет умножить и проверить нормальный вариант. Я ведь так понял, что Aт, он имел в виду транспонированную. Ессно, что зачение единичной, если получится, будет приближенным. Так что проверять нужно насколько отличаются результирующая матрица а не на равенство. P.S. Переношу тему в алгоритмы, т.к. к спп она отношения не имеет. |
|
Сообщ.
#4
,
|
|
|
|
Цитата MARcoDEN, 21.04.03, 15:21:11 Насколько я знаю, признак ортогональной матрицы: A*Aт=E, где Ат - транспонированная матрица, Е - единичная матрица. Заранее благодарен! Верно, но не совсем. Одно дело ортогональная матрица - из ортогональной системы столбцов. И немного другое дело ортонормированная матрица - ортогональная матрица, в которой норма каждого столбца равна единице. Так вот, указанный признак верен, но - это признак ортонормированной матрицы. Если надо проверить ортогональность, без требования нормированности столцов, то произведение должно быть всего лишь диагональной матрицей, а не единичной. |
|
Сообщ.
#5
,
|
|
|
|
Нет, фишка в том, что нужно проверить ортогональность, используя только исходную матрицу, т.е. А.
|
|
Сообщ.
#6
,
|
|
|
|
Цитата MARcoDEN, 22.04.03, 19:56:41 Нет, фишка в том, что нужно проверить ортогональность, используя только исходную матрицу, т.е. А. ну так и надо: перемножить А на АT и проверить результат на диагональность. |
|
Сообщ.
#7
,
|
|
|
|
Цитата shadeofgray, 22.04.03, 21:29:19 ну так и надо: перемножить А на АT и проверить результат на диагональность. А примерчик можно? : ![]() |
|
Сообщ.
#8
,
|
|
|
|
![]() ![]() const epsilon = 1E-6;// var A : array [1..n,1..n] of Real; D : Real; I : Integer; J : Integer; K : Integer; Result := True; for I:=1 to N do for J:=1 to N do begin D := 0; for K:=1 to N do D := D + A[K,I]*A[K,J]; if (I=J) and (Abs(D)<epsilon) then Result := False; if (I<>J) and (Abs(D)>=epsilon) then Result := False; end; |
|
Сообщ.
#9
,
|
|
|
|
Огромное спасибо! :D
|
|
Сообщ.
#10
,
|
|
|
|
Привет! Возник вопрос: есть два вектора a, b, равные по норме (все происходит в n-мерном комплексном пространстве), тогда существует ортогональная матрица U, такая, что верно a = Ub. Как это доказать? Считаем, что в данном простанстве ортогональная матрица U - это матрица, для которой UU* = единичная матрица, где * - эрмитово сопряжение (транспонирование и комплексное сопряжение).
|
|
Сообщ.
#11
,
|
|
|
|
Подсказка: подумай - что за преобразование пространства определяет умножение на эту матрицу?
Только какое это имеет отношение к алгоритмам? |
|
Сообщ.
#12
,
|
|
|
|
Здравствуйте! Ортогональная матрица определяет поворот, только мне это не помогло.. А задачка решилась вот так: системы {a} и {b} дополняем до ортонормированных базисов, составляем матрицы A и B из базисных вектор-столбцов, тогда искомая матрица U равна AB*. Прошу прощения за то, что поместила сообщение в "Алгоритмы", не нашла, где бы его поместить более подходящим образом, видимо, плохо искала.
|
|
Сообщ.
#13
,
|
|
|
|
Так конструктивнее, но через поворот было бы короче и элегантнее.
|
|
Сообщ.
#14
,
|
|
|
|
Всем привет) у мну тож задачка на ортонормированную матрицу, нужно просто проверить является ли она таковой или нет, насколько я понял нужно построить транспортировануую к ней матрицу, и если при умножение получиться единичная, то тада она таковой является, я правельно понял?
|
|
Сообщ.
#15
,
|
|
|
|
Нет.
Нужно писать "правИльно", "транспоНированНую", "получится" (без мягкого знака). Жаргонизмы я пропускаю. Кроме того, неправильно употребляется местоимение в последнем предложении: "она таковой и является" по тексту отностится к единичной (матрице). |
|
Сообщ.
#16
,
|
|
|
|
понятно)а по теме чёнить мона растолкавать? буду очень признателен.) |
|
Сообщ.
#17
,
|
|
|
|
А по теме всё верно - насколько я помню. Это ж элементарно. Посмотри в учебнике. Это мне смотреть уже негде...
|
|
Сообщ.
#18
,
|
|
|
|
Понимаешь мну один нюанс здесь смущает, умножение матрицы на транспонированную, фактически даёт туже матрицу возведённую в квадрат тока прямоугольную, ну это грубо выражаясь. Ты не мог бы привести пример ортонормированной матрицы? Плиз)
|
|
Сообщ.
#19
,
|
|
|
|
atij, ортонормированная? Это ортогональная и нормированная. Можешь проверить по очереди на ортогональность (все векторы) + нормированность.
|
|
Сообщ.
#20
,
|
|
|
|
Всем большое спасибо, проблема решена)
|
|
Сообщ.
#21
,
|
|
|
|
Помогите рашеть, просто у меня с ней возникли проблемы(
Программа. Определить, является ли заданная целая квадратная матрица 10-го порядка ортоно- рмированной, т.е. такой, в которой скалярное произведение каждой пары различных строк равно 0, а скалярное произведение каждой строки на себя равно 1. Или подскажите, как в паскале написать скалярное произведение...можно в пример взять матрицу: a b c d e f g h i j k l m n o p |
|
Сообщ.
#22
,
|
|
|
|
(оглядываясь)
Это раздел "Алгоритмы"? |
|
Сообщ.
#23
,
|
|
|
|
Фауст, да, Алгоритмы
А какие альтернативы? |
|
Сообщ.
#24
,
|
|
|
|
знаем,что скалярное произведение двух строк будет высчитываться таг: имея массив а, скалярка= a[1,1]*a[2,1]+a[2.1]*a[2,2]+...и тд)
или математически = х1*х2+у1*у2+z1*z2+...и тд) Вопрос, каг записать в паскале нахождение скалярного для двух строг...причем нужно, чтоб проверялись все возможные пары строк....хелп |
|
Сообщ.
#25
,
|
|
|
|
bool ono = true;
for(int i=0;i<row;i++){ for(int j=0; j<col;j++) if(A[i][j] != At[j][i]) {ono = false;break;} if(!ono) break; } if(!ono) puts("Ne ono"); |
|
Сообщ.
#26
,
|
|
|
|
AndreyK
Сори, а эт чво такое?оО |
|
Сообщ.
#27
,
|
|
|
|
Цитата JuFsu @ AndreyK Сори, а эт чво такое?оО Похоже, это попытка AndreyK написать на C++ код, проверяющий матрицу на симметричность Цитата Фауст @ (оглядываясь) Это раздел "Алгоритмы"? JuFsu, действительно, переместился бы ты в Pascal |
|
Сообщ.
#28
,
|
|
|
|
Цитата shadeofgray @ Фауст, да, Алгоритмы А какие альтернативы?после Цитата JuFsu @ знаем,что скалярное произведение двух строк будет высчитываться таг: имея массив а, скалярка= a[1,1]*a[2,1]+a[2.1]*a[2,2]+...и тд) или математически = х1*х2+у1*у2+z1*z2+...и тд) Вопрос, каг записать в паскале нахождение скалярного для двух строг...причем нужно, чтоб проверялись все возможные пары строк....хелп понятно, что вопрос в том, как записать это в паскале. Дай-ка подумаю, какие могут быть альтернативы... Может раздел о Яве? AndreyK, ну, по крайней мере: for(int j=i+1; j<col;j++) Матрица же, квадратная! Да и как неквадратная матрица может быть симметричной? |