![]() |
|
|
![]()
|
|
| StranikS |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.2.2006 Репутация: нет Всего: 2 |
Я реализовал обращение матрицы методом Жордана-Гаусса. И сейчас я его использую для получения обратных матриц. Но я не всегда использую всю обращенную матрицу - очень часто мне нужно получить значение только одного элемента обр. матрицы, лежащего на главной диагонали.
Можно ли модифицировать алгоритм, тем самым сократив лишние расчеты! |
|||
|
||||
| zogman2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 18.1.2006 Репутация: нет Всего: нет |
Насколько я понимаю, можно попробывать так:
пусть этот элемент он последний по формуле Крамера тебе надо считать минор/определ - если у тебя уже есть метод Гаусса - значит ты можешь считать опредлитель - когда ты привел матрицу к верхне-диаг виду - то определетель это просто произв диаг элементов ну типа все - когда привел к верхне диаг виду - то последний элемент - он=1/(то что тебе нужно) то есть реально сократили только обратный ход в Гауссе - что конечно не супер много наверно не ясно? (может еще и не верно если что-то умное узнаешь напиши пожалуйста в форум мне тоже интересно |
|||
|
||||
| StranikS |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.2.2006 Репутация: нет Всего: 2 |
Я прекрасно понял, то что ты хотел сказать, но это неподходит, т.к:
1. Мой элемент размещен на диагонали случайно и почти не бывает последним; 2. Вся модификация в твоем примере будет сводиться к установке точки выхода из Ж-Г при расчете требуемого элемента, ведь если мой элемент является первым, то обращение будет проведено полностью, что совсем не то, что мне хотелась! Дело в том, что данную проблему я решаю применительно к расчету сопротивлений электрической схемы: диагональная матрица сопротивлений ветвей - Z; матрица содинений схемы замещения - М; матрица узловых проводимостей - Yu=M*1/Z*MT; ! матрица узловых сопротивлений - Zu=Revers(Yu);//азъ есим - обращение матрицы Но мне нужно посчитать собственное сопротивление только одного узла, т.е. Zu[x,x]. Сначала я думал, что Zu[i,i]=1/Yu[i,i], но это утверждение работало для некоторых матриц, а для некоторых нет. Из твоих слов я понял, что это справедливо только для последнего элемента в треугольной матрице, получаемой при прямом ходе в методе Гаусса. Тогда может необходимо делать какие-нибудь перестановки перед этим, что бы мой элемент оказывался в конце, например в самой матрице соединений М. А вот этого лучше не делать! Поэтому я и ищу модификацию именного самого алгоритма обращения. Это сообщение отредактировал(а) StranikS - 2.2.2006, 17:39 |
|||
|
||||
| zogman2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 18.1.2006 Репутация: нет Всего: нет |
Да точно про перестановкуу надо еще подумать...
А у тебя матрица не какого-нибудь спец вида ? |
|||
|
||||
| StranikS |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.2.2006 Репутация: нет Всего: 2 |
Матрица обычная - квадратная десингулированная (т.е. неособенная)
|
|||
|
||||
| StranikS |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 39 Регистрация: 1.2.2006 Репутация: нет Всего: 2 |
Я, тут, поэксперементировал со своим МЖГ и заметил, что окончательные значения диагональных элементов формируются только на последней итерации, а следовательно никакие модификации не позволят получить значение выбранного диагонально элемента за меньшее число итераций.
Возможно мое утверждение справедливо только для метода Жордана-Гаусса, но тот вид его реализации, которым я пользуюсь наиболее быстрый. Вероятно, нужно идти по пути удаления заведомо ненужных узлов. Я прочитал в С.Бернас и З.Цек "Мат. модели элементов ЭЭС", что есть методика "исключения" ненужных узлов в матрице Yu таким образом, что при обращении можно получить Zu c необходимыми значениями, но обращаться теперь будет не вся матрица. Описание метода там не было "исключаются ненужные узлы при условии, что учтены все ветви, отходящие от таких узлов, т.е. что все ненулевые выражения строки матрицы Y находятся в левой, если считать от собственной проводимости, части строки"! Вот этого я непонимаю, ведь матрица Y - квадратная и симметричная (или зеркальная) относительно главной диагонали и следовательно если есть нулевые элементы, то они будут с обоих сторон диагонали?! |
|||
|
||||
![]()
|
| Правила форума "Алгоритмы" | |
|
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Алгоритмы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |