Страница: 1 |
Страница: 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; там вычисляется число, на которое умножается строка. И внутри него делается ещё один цыкл, в котором происходит умножение и сложение каждого элемента строки в модификация значений в массиве. После выполнения всего этого будет массив - треугольная матрица.