Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Контрольная ПСОД (вар 7).doc
Скачиваний:
62
Добавлен:
01.04.2014
Размер:
807.94 Кб
Скачать

Решение систем линейных уравнений с помощью функций Microsoft Excel

Многие прикладные задачи в технике, экономике и других областях сводятся к решению системы линейных уравнений, поэтому особенно важно уметь их решать.

Система n линейных уравнений с n неизвестными

Пусть дана линейная система я уравнений с и неизвестными, где aij, bi(i= 1,1.....n; j = 1, 2.....n) – произвольные числа, называемые, соответственно, коэффициентами при переменных и свободными членами уравнений.

Эта запись называется системой линейных уравнений в нормальной форме. Решением данной системы называется такая совокупность чисел (x1=k1, х2=k2, ..., хn=kn), при подстановке которых каждое уравнение системы обращается в верное равенство.

Система уравнений совместна, если она имеет хотя бы одно решение и несовместна, если она не имеет решений.

Если совместная система уравнений имеет единственное решение, она называется определенной; напротив, система уравнений называется неопределенной, если она имеет более одного решения.

Две системы уравнений являются равносильными или эквивалентными, если они имеют одно и то же множество решений. Система, равносильная данной может быть получена с помощью элементарных преобразований вышеупомянутой системы. Её можно также записать в виде матричного уравнения:

A×B=X

где А — матрица коэффициентов при переменных, или матрица системы:

X — матрица-столбец (вектор) неизвестных:

B – матрица-столбец (вектор) свободных членов:

В развернутом виде систему можно представить следующим образом:

Существует ряд методов решения данной системы, ориентированных на вычисления вручную: методы Крамера, Гаусса и т. д. Предполагая использование компьютера для проведения вычислений, наиболее целесообразно рассмотреть решение системы в общем виде (метод обратной матрицы). Будем считать, что квадратная матрица системы Аnn является невырожденной, то есть ее определитель │A│≠ 0. В этом случае существует обратная матрица A-1.

Умножая слева обе части матричного равенства на обратную матрицу А-1,

A-1×A×X=A-1× B, E×X=A-1×B; E×X=X

отсюда решением системы методом обратной матрицы будет матрица-столбец:

X=A-1×B

Таким образом, для решения системы (нахождения вектора X) необходимо найти обратную матрицу коэффициентов и умножить ее справа на вектор свободных членов.

Введём матрицу A и вектор b в рабочий лист MS Excel

В нашем случае матрица А находится в ячейках B1:Е4, а вектор b в диапазоне G1:G4. Для решения системы методом обратной матрицы необходимо вычислить матрицу, обратную к A. Для этого выделим ячейки для хранения обратной матрицы пусть в нашем случае это будут ячейки B6:E9. Теперь обратимся к мастеру функций, и в категории Математические выберем функцию МОБР, предназначенную для вычисления обратной матрицы, щелкнув по кнопке OK, перейдём ко второму шагу мастера функций. В диалоговом окне, появляющемся на втором шаге мастера функций, необходимо заполнить поле ввода Массив. Это поле должно содержать диапазон ячеек, в котором хранится исходная матрица - в нашем случае B1:E4. Данные в поле ввода Массив можно ввести, используя клавиатуру или выделив их на рабочем листе, удерживая левую кнопку мыши.

Если поле Массив заполнено, можно нажать кнопку OK. В первой ячейке, выделенного под обратную матрицу диапазона, появится некое число. Для того чтобы получить всю обратную матрицу, необходимо нажать клавишу F2 для перехода в режим редактирования, а затем одновременно клавиши Ctrl+Shift+Enter. Рабочая книга MS Excel примет следующий вид:

Теперь необходимо умножить полученную обратную матрицу на вектор b. Выделим ячейки для хранения результирующего вектора, например H6:H9. Обратимся к мастеру функций, и в категории Математические выберем функцию МУМНОЖ, которая предназначена для умножения матриц. Напомним, что умножение матриц происходит по правилу строка на столбец и матрицу А можно умножить на матрицу В только в том случае, если количество столбцов матрицы А равно количеству строк матрицы В. Кроме того, при умножении матриц важен порядок сомножителей, т.е. АВ≠ВА.

Перейдём ко второму шагу мастера функций. Появившееся диалоговое окно содержит два поля ввода Массив1 и Массив2. В поле Массив1 необходимо ввести диапазон ячеек, в котором содержится первая из перемножаемых матриц, в нашем случае B6:E9 (обратная матрица), а в поле Массив2 ячейки, содержащие вторую матрицу, в нашем случае G1:G4 (вектор b).

Если поля ввода заполнены, можно нажать кнопку OK. В первой ячейке выделенного диапазона появится соответствующее число результирующего вектора. Для того чтобы получить весь вектор, необходимо нажать клавишу F2, а затем одновременно клавиши Ctrl+Shift+Enter. В нашем случае результаты вычислений (вектор х), находится в ячейках H6:H9.

Для того чтобы проверить, правильно ли решена система уравнений, необходимо умножить матрицу A на вектор x и получить в результате вектор b. Умножение матрицы A на вектор x осуществляется при помощи функции МУМНОЖ(В1:Е4;Н6:Н9), так как было описанной выше.

В результате проведенных вычислений рабочий лист примет вид изображенный на рисунке

Программируемые макросы: запуск редактора Visual Basic for Applications (VBA), подпрограммы и функции, формы и модули

Самый простой способ автоматизировать задачу – просто записать макрос, и VBA сделает всю работу за Вас. Тем не менее, чтобы реализовать все возможности языка VBA, придется воспользоваться некоторыми средствами программирования, т.е. придется писать собственные макросы.

Преимущества создания макросов на основе уже записанных:

1. Если при записи большого макроса с огромным количеством операций Вы сделаете ошибку, можно будет отредактировать макрос и исправить ошибку. При этом не нужно перезаписывать весь макрос с самого начала.

2. Вы будете иметь полный контроль над каждым макросом. Другими словами, Вы удостоверитесь, что ваши макросы выполняют в точности те действия, которые им положено выполнять.

3. Можно воспользоваться скрытыми возможностями языка VBA для управления программами пакета Office, которые недоступны при автоматической записи макросов. Кроме того, вручную можно написать более профессиональные и эффективные подпрограммы.

Чтобы отобразить на экран редактор Visual Basic, в любом приложении Office выберите команду Сервис=>Макрос=>Редактор Visual Basic. Редактор Visual Basic является отдельной программой, которая была разработана с единственной целью – помочь вам в создании и редактировании макросов VBA. (В профессиональных программистских кругах редактор Visual Basic называют интегрированной средой разработки).

При первом открытии редактора Вы ничего особенного не увидите. В левой части редактора содержится два окна, которые называются Project (Проект) и Properties (Свойства). В окне Project отображается содержимое текущего проекта VBA. Если говорить просто, проектом называется файл любого приложения Office и все связанные с ним элементы VBA, включая макросы и пользовательские формы.

Редактор Visual Basic можно открыть, нажав комбинацию клавиш "Alt+F11". С помощью этой комбинации клавиш также можно переключаться между редактором и приложением, из которого он был вызван.

Чтобы что-то сделать в редакторе Visual Basic, сначала, как правило, нужно открыть модуль – элемент VBA, который содержит один или несколько макросов.

Чтобы открыть модуль, выполните следующие действия:

1. В окне Project раскройте папку Modules (Модули). Для этого щелкните на знаке «плюс (+)», который расположен слева от этой папки.

2. Дважды щелкните на имени модуля, который нужно открыть.

Object list (список объектов). В этом списке, расположенном слева, отображаются названия доступных объектов для того элемента проекта, с которым Вы работаете. Модули не могут содержать объектов, поэтому этот список включает только элемент (General), т.е. «общий».

Procedure list (Список процедур). Данный список расположен справа и содержит названия тех процедур и функций, которые входят в модуль. При выборе элемента из этого списка в окне модуля редактор отобразит выбранный элемент.

Если у Вас нет созданного ранее макроса, выполните команду Insert=>Module (Вставка>Модуль). Редактор Visual Basic присвоит этому модулю стандартное имя, такое как Module1 или Module2, но его можно переименовать в любое время.

Запись макросов имеет некоторые ограничения, поскольку есть множество средств, доступ к которым нельзя получить с помощью мыши, клавиатуры или команд меню. Например, для работы с Excel VBA имеет несколько десятков информационных функций, которые возвращают данные о ячейках, рабочих листах, рабочем пространстве и о многом другом. Кроме того, VBA позволяет создавать программные структуры управления, такие как циклы, ветвления и другие. Чтобы получить доступ к этим элементам макросов, придется писать собственные подпрограммы VBA с самого начала. Это занятие на самом деле проще, чем может показаться, так как все, что нужно сделать – ввести несколько операторов в модуль.

Открыв и активизировав окно модуля, выполните следующие действия, чтобы написать командный макрос:

1. Поместите курсор в ту часть модуля, где Вы хотите начать запись макроса (Убедитесь, что курсор не находится внутри уже созданного макроса).

2. Если хотите начать макрос с некоторых заметок (программисты называют их комментариями), в которых будет описано, что делает макрос, введите символ апострофа ‘ в начале каждой строки комментария.

3. Чтобы начать макрос, введите ключевое слово Sub, после чего введите пробел и название макроса. Название может состоять только из букв, цифр и символов подчеркивания «_». Использование в имени макроса пробелов и других символов не допускается.

4. Нажмите клавишу "Enter". Редактор автоматически добавит пару скобок в конце имени макроса. Он также добавит строку с текстом End Sub, чтобы обозначить конец процедуры.

5. Между строками Sub и End Sub введите операторы VBA, которые необходимо включить в макрос.

Чтобы код было проще читать, для каждого оператора следует делать отступ. Для этого в начале строки нажмите клавишу "Tab". (Но не делайте этого для строк Sub и End Sub). Удобно, что редактор сохраняет отступы для последующих строк, поэтому вручную нужно задать отступ только для первой строки.