Страница: 1 | 2 | 3 |
Вопрос: Обратная матрица
Добавлено: 09.10.05 07:08
Автор вопроса: CyRax | Web-сайт:
Как строится такая матрица?
Ответы
Всего ответов: 37
Номер ответа: 1
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #1
Добавлено: 09.10.05 14:34
Методом Гаусса.
Есть матрица
1 2 3
3 4 5
4 5 6
К ней пририсовывается справа единичная.
1 2 3 1 0 0
3 4 5 0 1 0
4 5 6 0 0 1
Дальше делается так: надо сделать слева единичную матрицу. Тогда справа окажется обратная.
Строки можно переставлять местами, складывать, вычитать, домножать на числа не равные нулю.
Если матрицу не получается привести к единичной (вылезает строка из нулей), значет матрица плохая и к ней нет обратной.
Номер ответа: 2
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #2
Добавлено: 09.10.05 14:40
Вот так это делается в программе.
Dim i As Long, j As Long
Dim UnMatrix() As Double, Matrix() As Double
Dim k As Long
Dim n As Long
Matrix = pMatrix
n = UBound(Matrix, 1) + 1
If UBound(Matrix, 2) + 1 <> n Then
Err.Raise 116, "MakeUnMatrix", "No inverse matrix."
End If
ReDim UnMatrix(0 To n - 1, 0 To n - 1)
For i = 0 To n - 1
UnMatrix(i, i) = 1
Next i
'Stage 1. make the low-daig elems 0
For i = 0 To n - 1
'search for non-zero line
For j = i To n - 1
If Matrix(j, i) <> 0 Then
Exit For
End If
Next j
If j = n Then
Err.Raise 116, "MakeUnMatrix", "No inverse matrix."
End If
AddRow Matrix, UnMatrix, i, j, (1 - Matrix(i, i)) / Matrix(j, i)
Matrix(i, i) = 1
'make zeros under i,i
For j = i + 1 To n - 1
AddRow Matrix, UnMatrix, j, i, -Matrix(j, i)
Matrix(j, i) = 0
Next j
Next i
'Stage 2. Make upper diag elems 0's
For j = n - 1 To 1 Step -1
For i = 0 To j - 1
AddRow Matrix, UnMatrix, i, j, -Matrix(i, j)
Matrix(i, j) = 0
Next i
Next j
pMatrix = UnMatrix
End Sub
Private Sub AddRow(ByRef Matrix1() As Double, ByRef Matrix2() As Double, ByVal IDest As Long, ByVal ISrc As Long, Multiplier As Double)
Dim i As Long
For i = 0 To UBound(Matrix1, 2)
Matrix1(IDest, i) = Matrix1(IDest, i) + Matrix1(ISrc, i) * Multiplier
Matrix2(IDest, i) = Matrix2(IDest, i) + Matrix2(ISrc, i) * Multiplier
Next i
End Sub
Примечание.
Матрица необратима, если ее детерминант равен нулю. К тому же, не являются обратимыми и неквадратные матрицы. (Хотя к неквадратной матрице может быть к примеру правая обратная (или левая, но не обе сразу). Но я не знаю, как ее получить и зачем она вообще может понадобиться.)
Номер ответа: 3
Автор ответа:
Barsik
Разработчик Offline Client
ICQ: 343368641
Вопросов: 17
Ответов: 686
Web-сайт:
Профиль | | #3
Добавлено: 09.10.05 15:00
обратную матрицу можно построить только для квадратной...
кому интересно отсканил свой накопитель и выложил в сеть(все в примерах barsik.newmail.ru/other
Номер ответа: 4
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #4
Добавлено: 09.10.05 16:58
Ги-ги, я на первом курсе уже в сеньтябьре учил как это строится, а ты ещё не знаешь...хи-хи
Номер ответа: 5
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #5
Добавлено: 09.10.05 17:00
ну ладно, кстати, я прогулял все пары. Подкиньте плиз кто-то инфу по матрицам в инете, ну там умножение и т. п. Всякие там Гауссы..надо учить....
заранее спасибо
Номер ответа: 6
Автор ответа:
ViktorZ
ICQ: 271202919
Вопросов: 56
Ответов: 837
Профиль | | #6
Добавлено: 09.10.05 17:13
Странное совпадение ребят вас что на Матрицы то потянуло и Cyraxa и DaSharmа? Мож я не в моде опять. Мож матрицы рулят)))) А так могу скинуть если кому надо нахождение обратной матрицы на си с выделением памяти ну в общем быстро. На первом тоже помню писал.
Номер ответа: 7
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 09.10.05 17:25
CyRax, DaSharm у меня у самого это сейчас в универе, я всё легко находил в инете, на Си, на басике... всё ж есть! Чё поисковиком забыли как пользоваться?
Номер ответа: 8
Автор ответа:
ISpy
Разработчик Offline Client
Вопросов: 47
Ответов: 621
Web-сайт:
Профиль | | #8
Добавлено: 09.10.05 17:33
Обратную можно найти еще вот так:
Проверяем, что определитель матрицы A не равен нулю (det!=0).
Находим матрицу А' (присоединенную к матрице А)
Тогда обратная матрица для А равна А'/det.
Номер ответа: 9
Автор ответа:
ArtBase
ICQ: 55593017
Вопросов: 23
Ответов: 76
Профиль | | #9
Добавлено: 09.10.05 21:34
Как нас учили: Вычислить определитель (чтоб был !=0), найти алгебраические дополнения всех элементов и составить из них новую матрицу, транспонировать её (т.е. махнуть местами строки с соотв. столбцами), и потом умножить транспонированную "матрёшку" на 1/det . Матрицы - самое легкое что может быть в высшей математике, но народ так и воет волком из-за них.
Номер ответа: 10
Автор ответа:
Victor
ICQ: 345743490
Вопросов: 42
Ответов: 385
Web-сайт:
Профиль | | #10
Добавлено: 09.10.05 22:04
Это самый медленный метод. Если матрица большая - тормозить будет дико. А методом гаусса все нормально.
Метод через присоединенную матрицу - лишь способ явно записать обратную матрицу. В реале же этим никогда не пользуются.
Номер ответа: 11
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #11
Добавлено: 10.10.05 06:01
Многие преподы любят терзать своих студентов вычислением матриц самыми тупыми методами Например, нас заставляли вычислять определитель матриц 5-го и 6-го порядка разложением по первой строке. Но мы быстро наловчились и стали юзать для этого КПК
Номер ответа: 12
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #12
Добавлено: 10.10.05 06:42
Нашёл кого сравнивать. Так же как ты я их "учил" ещё 8 лет назад.
Номер ответа: 13
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #13
Добавлено: 10.10.05 07:03
Victor,
Спасибо, всё считает правильно. А ты вообще сам писал этот пример?
Номер ответа: 14
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #14
Добавлено: 11.10.05 13:21
А меня эти вычисления уже, мягко говоря, задолбали... И я написал софт
для КПК... С ним удобнее получается
Номер ответа: 15
Автор ответа:
DaSharm
ICQ: 780477
Вопросов: 72
Ответов: 1297
Web-сайт:
Профиль | | #15
Добавлено: 11.10.05 17:20
2Pavel: а на чем программируешь под КПК?
2VIK: е, мне не на программирование нужно, мне вообще надо значть что такое матрицы и что с ними можно делать...Я вообще представление имею о них смутное. Программирование мне пока ненадо. Т. е. мне нужны доки по математике, какие-то простые, у меня очень низкий уровень знаний в математике...