![]() |
|
![]() ![]() ![]() |
|
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. |