Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2011, 13:05   #1
Vitek.i
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 28
По умолчанию обратная матрица на VBA

Всем добрый день, есть проблемка. У меня есть уже готовая квадратная матрица n-го порядка, не могу найти для неё обратную матрицу, помогите с написаним кода на VB.
Vitek.i вне форума Ответить с цитированием
Старый 19.01.2011, 13:40   #2
3BEPOBOY
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 82
По умолчанию

Дай алгоритм математический, а лучше на С или Паскале. На VB то переписать несложно. Только здесь форум VBA, языка ограниченного и заточенного под офис. Конкретный подфорум вообще про Excel. VBA и Microsoft VB разные вещи, VBA неполноценная среда разработки, на нем даже exe файла не скомпилируешь. Вобщем ты не туда написал
3BEPOBOY вне форума Ответить с цитированием
Старый 19.01.2011, 18:42   #3
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

тут и алгоритм и решение в одном стакане:
Код:
Function InvMatr(M1 As Range)
  InvMatr = WorksheetFunction.MInverse(M1)
End Function
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 21.01.2011, 19:34   #4
Vitek.i
Пользователь
 
Регистрация: 06.12.2010
Сообщений: 28
По умолчанию

Гаусса - Жордана


'единичная матрица
Dim A_edin(k + 1, k + 1) As Double 'затем она перейдёт в обратную
For i = 1 To k + 1
For j = 1 To k + 1
If i = j Then
A_edin(i, j) = 1
Else
A_edin(i, j) = 0
End If
Next j
Next i
'единичная матрица

'обратная матрица
Dim arg As Double
Dim i1 As Integer

For j = 1 To k + 1
For i = 1 To k + 1
If i = j Then GoTo 50
arg = A(i, j) / A(j, j)

For i1 = 1 To k + 1
A(i, i1) = A(i, i1) - A(j, i1) * arg
A_edin(i, i1) = A_edin(i, i1) - A_edin(j, i1) * arg
Next i1

50: Next i
Next j

For j = 1 To k + 1
For i = 1 To k + 1

Dim arg_2 As Double
If i = j Then
arg_2 = A(i, j)
For i1 = 1 To k + 1
A(i, i1) = A(i, i1) / arg_2 'стала единичной
A_edin(i, i1) = A_edin(i, i1) / arg_2 'стала обратной матрице А
Next i1
End If

Next i
Next j
'обратная матрица
Vitek.i вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обратная матрица LastBreath Помощь студентам 1 04.06.2010 20:30
Обратная матрица Шахрия Помощь студентам 1 26.10.2009 17:28
Обратная матрица Nox_uf Помощь студентам 1 23.09.2009 16:11
Обратная матрица Artemm Общие вопросы C/C++ 6 26.05.2009 17:55
обратная матрица=) PrincEssa91 Паскаль, Turbo Pascal, PascalABC.NET 0 23.05.2009 15:59