На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! правила раздела Алгоритмы
1. Помните, что название темы должно хоть как-то отражать ее содержимое (не создавайте темы с заголовком ПОМОГИТЕ, HELP и т.д.). Злоупотребление заглавными буквами в заголовках тем ЗАПРЕЩЕНО.
2. При создании темы постарайтесь, как можно более точно описать проблему, а не ограничиваться общими понятиями и определениями.
3. Приводимые фрагменты исходного кода старайтесь выделять тегами code.../code
4. Помните, чем подробнее Вы опишете свою проблему, тем быстрее получите вразумительный совет
5. Запрещено поднимать неактуальные темы (ПРИМЕР: запрещено отвечать на вопрос из серии "срочно надо", заданный в 2003 году)
6. И не забывайте о кнопочках TRANSLIT и РУССКАЯ КЛАВИАТУРА, если не можете писать в русской раскладке :)
Модераторы: Akina, shadeofgray
  
> Ортогональная матрица
    Народ, подскажите, как определить, является ли квадратная матрица ортогональной? Насколько я знаю, признак ортогональной матрицы: A*Aт=E, где Ат - транспонированная матрица, Е - единичная матрица. Заранее благодарен!
    Сообщение отредактировано: MARcoDEN -
      Тупо умножить ИМХО проще всего.
      Ещё можно получить гауссом обратную к А матрицу - должна получиться она же, если получилась - значит ортогональная.

      Чего-то я притормаживаю сейчас, так что сильно не бейте если обманул :)
        Цитата HOMO PROGRAMMATIS, 21.04.03, 15:52:30
        Ещё можно получить гауссом обратную к А матрицу - должна получиться она же, если получилась - значит ортогональная.
        Нда с этим ты что-то переврал. :)

        А вот насчет умножить и проверить нормальный вариант. Я ведь так понял, что Aт, он имел в виду транспонированную. Ессно, что зачение единичной, если получится, будет приближенным. Так что проверять нужно насколько отличаются результирующая матрица а не на равенство.

        P.S. Переношу тему в алгоритмы, т.к. к спп она отношения не имеет.
        Сообщение отредактировано: Leprecon -
          Цитата MARcoDEN, 21.04.03, 15:21:11
          Насколько я знаю, признак ортогональной матрицы: A*Aт=E, где Ат - транспонированная матрица, Е - единичная матрица. Заранее благодарен!

          Верно, но не совсем.

          Одно дело ортогональная матрица - из ортогональной системы столбцов. И немного другое дело ортонормированная матрица - ортогональная матрица, в которой норма каждого столбца равна единице.

          Так вот, указанный признак верен, но - это признак ортонормированной матрицы.
          Если надо проверить ортогональность, без требования нормированности столцов, то произведение должно быть всего лишь диагональной матрицей, а не единичной.
            Нет, фишка в том, что нужно проверить ортогональность, используя только исходную матрицу, т.е. А.
            Сообщение отредактировано: MARcoDEN -
              Цитата MARcoDEN, 22.04.03, 19:56:41
              Нет, фишка в том, что нужно проверить ортогональность, используя только исходную матрицу, т.е. А.

              ну так и надо:
              перемножить А на АT и проверить результат на диагональность.
                Цитата shadeofgray, 22.04.03, 21:29:19

                ну так и надо:
                перемножить А на АT и проверить результат на диагональность.

                А примерчик можно?  ::)
                  ExpandedWrap disabled
                    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;
                  Сообщение отредактировано: Math -
                    Огромное спасибо!  :D
                      Привет! Возник вопрос: есть два вектора a, b, равные по норме (все происходит в n-мерном комплексном пространстве), тогда существует ортогональная матрица U, такая, что верно a = Ub. Как это доказать? Считаем, что в данном простанстве ортогональная матрица U - это матрица, для которой UU* = единичная матрица, где * - эрмитово сопряжение (транспонирование и комплексное сопряжение).
                        Подсказка: подумай - что за преобразование пространства определяет умножение на эту матрицу?
                        ;)

                        Только какое это имеет отношение к алгоритмам? :angry:
                          Здравствуйте! Ортогональная матрица определяет поворот, только мне это не помогло.. А задачка решилась вот так: системы {a} и {b} дополняем до ортонормированных базисов, составляем матрицы A и B из базисных вектор-столбцов, тогда искомая матрица U равна AB*. Прошу прощения за то, что поместила сообщение в "Алгоритмы", не нашла, где бы его поместить более подходящим образом, видимо, плохо искала.
                            Так конструктивнее, но через поворот было бы короче и элегантнее.
                            8-)
                              Всем привет) у мну тож задачка на ортонормированную матрицу, нужно просто проверить является ли она таковой или нет, насколько я понял нужно построить транспортировануую к ней матрицу, и если при умножение получиться единичная, то тада она таковой является, я правельно понял?
                                Нет. 8-)
                                Нужно писать "правИльно", "транспоНированНую", "получится" (без мягкого знака). Жаргонизмы я пропускаю.
                                Кроме того, неправильно употребляется местоимение в последнем предложении: "она таковой и является" по тексту отностится к единичной (матрице).
                                :tong: :whistle:
                                  :blink: понятно)
                                  а по теме чёнить мона растолкавать? буду очень признателен.)
                                    А по теме всё верно - насколько я помню. Это ж элементарно. Посмотри в учебнике. Это мне смотреть уже негде...
                                      Понимаешь мну один нюанс здесь смущает, умножение матрицы на транспонированную, фактически даёт туже матрицу возведённую в квадрат тока прямоугольную, ну это грубо выражаясь. Ты не мог бы привести пример ортонормированной матрицы? Плиз)
                                        atij, ортонормированная? Это ортогональная и нормированная. Можешь проверить по очереди на ортогональность (все векторы) + нормированность.
                                          Всем большое спасибо, проблема решена)
                                            Помогите рашеть, просто у меня с ней возникли проблемы(

                                            Программа. Определить, является ли заданная
                                            целая квадратная матрица 10-го порядка ортоно-
                                            рмированной, т.е. такой, в которой скалярное
                                            произведение каждой пары различных строк равно
                                            0, а скалярное произведение каждой строки на
                                            себя равно 1.

                                            Или подскажите, как в паскале написать скалярное произведение...можно в пример взять матрицу:
                                            a b c d
                                            e f g h
                                            i j k l
                                            m n o p
                                              (оглядываясь)
                                              Это раздел "Алгоритмы"? :blink:
                                                Фауст, да, Алгоритмы :( А какие альтернативы?
                                                  знаем,что скалярное произведение двух строк будет высчитываться таг: имея массив а, скалярка= a[1,1]*a[2,1]+a[2.1]*a[2,2]+...и тд)
                                                  или математически = х1*х2+у1*у2+z1*z2+...и тд)

                                                  Вопрос, каг записать в паскале нахождение скалярного для двух строг...причем нужно, чтоб проверялись все возможные пары строк....хелп
                                                    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");
                                                      AndreyK
                                                      Сори, а эт чво такое?оО
                                                        Цитата JuFsu @
                                                        AndreyK
                                                        Сори, а эт чво такое?оО

                                                        Похоже, это попытка AndreyK написать на C++ код, проверяющий матрицу на симметричность :D

                                                        Цитата Фауст @
                                                        (оглядываясь)
                                                        Это раздел "Алгоритмы"?

                                                        JuFsu, действительно, переместился бы ты в Pascal ;)
                                                          Цитата 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++)

                                                          Матрица же, квадратная! Да и как неквадратная матрица может быть симметричной?
                                                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                                          0 пользователей:


                                                          Рейтинг@Mail.ru
                                                          [ Script execution time: 0.2484 ]   [ 15 queries used ]   [ Generated: 24.10.26, 16:04 GMT ]