Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Матрицы в VBA Добавлено: 12.04.10 19:00  

Автор вопроса:  Игорь
Помогите пожалуйста с такой задачкой:
Для матрицы n-ого порядка (порядок от 2 до 5) найти определитель и обратную матрицу.(методом Гаусса)
Матрица задаётся произвольными положительными числами.
(Хотябы как привести матрицу n-ого порядка к треугольному виду.)

Ответить

  Ответы Всего ответов: 8  

Номер ответа: 1
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #1 Добавлено: 13.04.10 13:06
Имеется ввиду квадратная матрица? Ну определитель - просто. Типа цыкл с количеством выполнений n-1. В принципе можно не только до 5-ти и не только положительные числа. А что такое обратная матрица не помню уже. И как они приводятся к треуг. виду.

Ответить

Номер ответа: 2
Автор ответа:
 Игорь



Вопросов: 1
Ответов: 3
 Профиль | | #2 Добавлено: 13.04.10 18:46
Да квадратная матрица.
Треугольный вид это типо:
1 2 3 4
0 5 6 7
0 0 8 9
0 0 0 1
Когда ниже или выше главной диогональ нули.
А определьтель тогда равен произведению чисел главной диогонали
Так вот только как составить цикл для приведения матрицы к треугольному виду

Ответить

Номер ответа: 3
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #3 Добавлено: 14.04.10 12:39
для приведения матрицы к треугольному виду не знаю как.
Если цель посчитать определитель, то можно по другому это сделать.

Ответить

Номер ответа: 4
Автор ответа:
 Игорь



Вопросов: 1
Ответов: 3
 Профиль | | #4 Добавлено: 14.04.10 23:40
Да вроде как для матриц большого порядка только так можно.
А как по другому?

Ответить

Номер ответа: 5
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #5 Добавлено: 15.04.10 17:07
Можно например разложить определитель по элементам к-нибудь ряда. Есть и другие способы.
Если надо как можно проще, то можно из макроса создать невидимый экземпляр экселя, создать в нём новую книгу, внести в неё ваши числа(пофиг какие). Потом в екселе есть специальная функция. Она требует ввести диапазон,а возвращает определитель. Макрос вносит её в любую ячейку, скармливает ей диапазон, в котором ваши числа, считывает результат и выводит значение определителя в удобном виде.

Ответить

Номер ответа: 6
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #6 Добавлено: 15.04.10 17:19
Для треугольной матрицы
http://webmath.ru/web/prog20_primer1.html
Там внятный пример. Единственно что - там не просто вычитание, а вычитание строки, умноженной на некоторое число, такое чтобы получался ноль в последующих строках. Ну, короче если правила математики почитать, то понятно что и как. В принципе программно это проще чем руками на листочке. Только результат может быть не точный, т.к. может понадобиться считать дроби напр. 1/3 и округлять. Но для VBA это не очень простая задача.

Ответить

Номер ответа: 7
Автор ответа:
 Игорь



Вопросов: 1
Ответов: 3
 Профиль | | #7 Добавлено: 16.04.10 16:42
Ну вот так оно и надо, но как записать цикл который домножает и вычитает эти строки в VBA

Ответить

Номер ответа: 8
Автор ответа:
 GDK



Вопросов: 13
Ответов: 348
 Профиль | | #8 Добавлено: 19.04.10 09:39
Для начала надо проверить какого порядка матрица. Чтобы это сделать надо знать как будут вводиться данные. Затем данные удобно запихать в двумерный массив. Дальше организуется цыкл с кол-вом итераций i - на 1 меньше порядка матрицы.
Внутри него организуется вспомогательный цыкл j, который начинается c i; там вычисляется число, на которое умножается строка. И внутри него делается ещё один цыкл, в котором происходит умножение и сложение каждого элемента строки в модификация значений в массиве. После выполнения всего этого будет массив - треугольная матрица.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам