Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.96/89: Рейтинг темы: голосов - 89, средняя оценка - 4.96
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 35

Нахождение обратной матрицы

11.06.2014, 07:20. Показов 18473. Ответов 63
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте уважаемые форумчане и программисты
у кого то имеется код для нахождения обратной матрицы в Visual Basic Applecetion, при помощь которого можно будет считать матрицы в Excel?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.06.2014, 07:20
Ответы с готовыми решениями:

Нахождение обратной матрицы.
Ребят, нет ни у кого программы для нахождения обратной матрицы? Заранее благодарен!

Вычисление определителя и нахождение обратной матрицы методом исключения
Нужна только блок-схема, а то в схемах я пень пнем. Вот код. Function input_error() As Integer ' err – идентификатор...

Умножение матрицы на матрицу, и нахождение обратной матрицы
Здравствуйте! нужно написать программу, которая могла бы производить всякие операции над матрицами (двухмерными массивами) меня...

63
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
12.06.2014, 22:14
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Artem Ivanov Посмотреть сообщение
Спасибо!разобрался!
Цитата Сообщение от Artem Ivanov Посмотреть сообщение
она будет считать 10 на 10?
- ты пример выше видел? Там матрица 10*10. Вижу, хорошо разобрался... А все почему? Эту работу нужно было начинать делать в феврале-марте, а не в июне.
1
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 35
13.06.2014, 08:50  [ТС]
а преобразования она будет делать или сразу выдаст матрицу?

Добавлено через 10 часов 24 минуты
Цитата Сообщение от Catstail Посмотреть сообщение
- ты пример выше видел? Там матрица 10*10. Вижу, хорошо разобрался... А все почему? Эту работу нужно было начинать делать в феврале-марте, а не в июне.
ага! слушай скажи пожалуйста где можно почитать подробную информацию о матрице Гильберта?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
13.06.2014, 09:26
Цитата Сообщение от Artem Ivanov Посмотреть сообщение
где можно почитать подробную информацию о матрице Гильберта?
- в Интернете...
1
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 35
13.06.2014, 09:55  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
- в Интернете...
понятно)
вот еще вопрос по крамеру, есть код правильный ли он?
Эту процедуру привязываем
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
'к нажатию кнопки "Решить"
Sub Work()
'Считываем из таблицы
'коэффициенты при переменных
Dim a(1 To 7, 1 To 7)
For i = 1 To 7
For j = 1 To 7
a(i, j) = Re(i, j)
Next j
Next i
'Считываем из таблицы
'свободные коэффициенты
Dim b(1 To 7)
For i = 1 To 7
b(i) = Re(i, 8)
Next i
Dim x(1 To 7) 'Массив переменных
'Решаем СЛАУ методом Крамера
Call Cramer(a, b, x)
'Выводим найденное решение в таблицу
For i = 1 To 7
Call Wr(i + 2, 11, x(i))
Next i
End Sub
'Процедура вывода в ячейки таблицы
Sub Wr(i, j, val)
Worksheets("Лист1").Cells(i, j).Value = val
End Sub
'Функция чтения значений ячеек таблицы
Function Re(i, j)
Re = Worksheets("Лист1").Cells(i, j).Value
End Function
'Функция нахождения детерминанта
Function det(a, r)
If r = 1 Then
d = a(1, 1)
Else
Dim a2(1 To 7, 1 To 7)
d = 0
For k = 1 To r
i2 = 0
For i = 1 To r
If i <> k Then
i2 = i2 + 1
For j = 2 To r
a2(i2, j - 1) = a(i, j)
Next j
End If
Next i
r2 = r - 1
If (k Mod 2 = 1) Then
d = d + a(k, 1) * det(a2, r2)
Else
d = d - a(k, 1) * det(a2, r2)
End If
Next k
End If
det = d
End Function
 
'Процедура решения системы линейных
'алгебраических уравнений методом Крамера
Sub Cramer(a, b, x)
Dim a2(1 To 7, 1 To 7)
For i = 1 To 7
For j = 1 To 7
a2(i, j) = a(i, j)
Next j
Next i
delta = det(a2, 7)
If delta = 0 Then
For i = 1 To 7
x(i) = "No"
Next i
Else
For k = 1 To 7
For i = 1 To 7
For j = 1 To 7
a2(i, j) = a(i, j)
Next j
Next i
For i = 1 To 7
a2(i, k) = b(i)
Next i
deltaN = det(a2, 7)
x(k) = deltaN / delta
Next k
End If
End Sub
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
13.06.2014, 10:47
Метод Крамера я тебе высылал раньше. В этом коде (тем более без тегов) копаться не буду принципиально.
1
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 35
13.06.2014, 11:59  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Метод Крамера я тебе высылал раньше. В этом коде (тем более без тегов) копаться не буду принципиально.
когда раньше? ты мне ничего не высылал
и он же с тегами вроде как
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
13.06.2014, 12:20
Цитата Сообщение от Artem Ivanov Посмотреть сообщение
когда раньше? ты мне ничего не высылал
и он же с тегами вроде как
- мой самый первый ответ - это и есть вычисление обратной матрицы через определители. А теги появились после того, как их вставил модератор UI. И как ты умудряешься уничтожить форматирование в коде?

Добавлено через 7 минут
Решение системы уравнений методом Крамера:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
Sub Kramer(A() As Double, Y() As Double, R() As Double, flgRes As Boolean)
Dim T() As Double
    n% = UBound(Y, 1)
    D_main = Det(A)
    If Abs(D_main) <= 0.0000000001 Then
       flgRes = False
       Exit Sub
    End If
    ReDim T(1 To n%, 1 To n%) As Double
    For ii% = 1 To n%
        For i% = 1 To n%
            For j% = 1 To n%
                T(i%, j%) = A(i%, j%)
            Next j%
        Next i%
        For j% = 1 To n%
            T(j%, ii%) = Y(j%)
        Next j%
        R(ii%) = Det(T) / D_main
    Next ii%
    flgRes = True
End Sub
 
Function Det(A() As Double) As Double
     n% = UBound(A, 1)
     If n% = 1 Then
        Det = A(1, 1)
     ElseIf n% = 2 Then
        Det = A(1, 1) * A(2, 2) - A(1, 2) * A(2, 1)
     Else
        s# = 1
        For j% = 1 To n%
            Det = Det + A(1, j%) * Det(Minor(A(), 1, j%)) * s#
            s# = -s#
        Next j%
     End If
End Function
 
Function Minor(A() As Double, M As Integer, k As Integer) As Double()
Dim B() As Double
    nn% = UBound(A, 1)
    ReDim B(1 To nn% - 1, 1 To nn% - 1) As Double
    ii% = 1
    jj% = 1
    For i% = 1 To nn%
        For j% = 1 To nn%
            If i% <> M And j% <> k Then
               B(ii%, jj%) = A(i%, j%)
               jj% = jj% + 1
               If jj% > nn% - 1 Then
                  ii% = ii% + 1
                  jj% = 1
               End If
            End If
        Next j%
     Next i%
     Minor = B
End Function
 
Sub Test()
 
Dim A(1 To 4, 1 To 4) As Double
Dim Y(1 To 4)         As Double
Dim R(1 To 4)         As Double
Dim flg               As Boolean
 
    A(1, 1) = 1
    A(1, 2) = 1
    A(1, 3) = 1
    A(1, 4) = 1
    
    A(2, 1) = 2
    A(2, 2) = 1
    A(2, 3) = 2
    A(2, 4) = 1
    
    A(3, 1) = 0
    A(3, 2) = 1
    A(3, 3) = 3
    A(3, 4) = -2
    
    A(4, 1) = 7
    A(4, 2) = 1
    A(4, 3) = -1
    A(4, 4) = 5
    
    Y(1) = 0
    Y(2) = 2
    Y(3) = 4
    Y(4) = 0
 
    Kramer A, Y, R, flg
    
    If flg Then
    
       For i% = 1 To 4
           Debug.Print R(i%)
       Next i%
       
    Else
    
       Debug.Print "Ðåøåíèé íåò!"
       
    End If
    
End Sub
0
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 35
13.06.2014, 12:30  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение

Sub Kramer(A() As Double, Y() As Double, R() As Double, flgRes As Boolean)
Dim T() As Double
...
о прикольно, спасибо)
а как он работает может скинуть скрин?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
13.06.2014, 12:50
И назачем ты напихал туда звёздочек? И зачем вообще код дублировать? Я его уже выложил.

На панели инструментов создания сообщения находишь "VB" и щелкаешь по этим буквам. В поле ввода будет вставлена пара [ V B ] [/ V B]. Вот между ними и вставляй текст.
Миниатюры
Нахождение обратной матрицы  
1
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 35
14.06.2014, 09:19  [ТС]
спасибо!
где можно почитать как он находит эту обратную матрицу данным способом? а то не понял сути нахождения?
0
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 35
14.06.2014, 09:35  [ТС]
и еще ошибку в коде крамера выдает почему то
Миниатюры
Нахождение обратной матрицы  
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
14.06.2014, 09:50
Цитата Сообщение от Artem Ivanov Посмотреть сообщение
где можно почитать
- в Википедии... Странный ты человек. В Сети можно найти ответ почти на любой вопрос. Что, трудно в Гугле или Яндексе набрать "обратная матрица" или "метод Крамера"?

Добавлено через 1 минуту
Это не моя, а твоя ошибка (91 - неверное обращение к объекту). Причина - бездумное копирование кода.
1
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 35
14.06.2014, 09:50  [ТС]
да это понятно, очевидную вещь сказали, меня интересует вопрос именно тем методом каким у меня есть, в википедии только определение а меня интересует сам алгоритм
и что за ошибка с крамером?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
14.06.2014, 10:50
Цитата Сообщение от Artem Ivanov Посмотреть сообщение
и что за ошибка с крамером?
- не знаю. У меня все работает.
А про алгоритм... набери "алгоритм Крамера" там ТУЧИ ссылок с примерами.
1
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 35
14.06.2014, 19:38  [ТС]
почему бездумное? если скину проект сможете помочь с вставкой кода крамера?
обратную я вставил все четко работает!

Добавлено через 8 часов 34 минуты
или не сможешь помочь?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
14.06.2014, 20:53
Я тебе уже достаточно помог.
1
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 35
15.06.2014, 08:54  [ТС]
Цитата Сообщение от Catstail Посмотреть сообщение
Я тебе уже достаточно помог.
не спорю, за это отдельное спасибо! но у меня ошибку выдает все таки, не получается!
вроде бы разобрался,
но тут ошибку дает если в произвольном месте экрана поставить нужно угадать а у вас крамер ошибок не дает при обработке?
Примерно так в Крамера добавьте, (3 строки печати)
но мне думается эту процедуру программа обходит (отладка туда не прошла) еще раз проверю
Visual Basic
1
2
3
4
5
6
7
For j% = 1 To n%
T(j%, ii%) = Y(j%)
Next ii%
R(ii%) = Det(T) / D_main
Cells(ii * (n% + 1) + 3, j%) = T(i%, j%)
Cells(ii + 3, 12) = Det(T)
Cells(ii + 3, 12) = R(ii%)
вы проверьте у себя отладкой (точку останова (красная строка) поставьте в крамере) мне думается галочка не выходит на процедуру (хотя не факт) но крамер у вас срабатывает? через отдадку можно значения просмотреть (и cellsы вы у себя вставьте)
0
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 35
18.06.2014, 16:28  [ТС]
так вопрос в чем заключается: куда вводится правая часть в крамере?
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38223 / 21155 / 4314
Регистрация: 12.02.2012
Сообщений: 34,765
Записей в блоге: 14
18.06.2014, 20:38
Вот, смотри:
Вложения
Тип файла: zip Det_Inv.zip (15.1 Кб, 17 просмотров)
0
0 / 0 / 0
Регистрация: 11.06.2014
Сообщений: 35
18.06.2014, 21:40  [ТС]
это обратная?или что такое
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.06.2014, 21:40

Нахождение обратной матрицы
Найти A^-1 и сделать проверку

Нахождение обратной матрицы
Через определитель и матрицу алгебраических дополнений unit Unit1; interface uses Windows, Messages, SysUtils, Variants,...

Нахождение обратной матрицы
Мне очень нужен код программы обратной матрицы.

Нахождение обратной матрицы
Здравствуйте, уважаемые программисты! Прощу помощи. Для заданной матрицы A(3,3), найти обратную А в -1 степени. Буду очень...

Нахождение обратной матрицы
Здравствуйте!помогите с программой на языке си-она демонстрирует нахождение обратной матрицы.я написал 3 на 3 юно мне надо в начале проги...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru