
Использование надстройки «Поиск решения»
Надстройки - это вспомогательные программы, расширяющие возможности Microsoft Office путем добавления специальных команд и новых функций.
Чтобы установить надстройку "Поиск решения", выберите команду Надстройки в меню Сервис, а затем установите флажок Поиск решения. Нажмите кнопку OK, и в Microsoft Excel будет установлена надстройка "Поиск решения". Установленную надстройку можно вызвать, выбирая команду Поиск решения в меню Сервис.
В диалоговом окне Поиск решения указывается целевая ячейка, диапазон изменяемых ячеек и, если необходимо, ограничения. В данной курсовой работе надстройка Поиск решения используется для решения задачи линейного программирования.
Поиск решений был использован в курсовом проекте для нахождения неизвестных корней СЛАУ. Он находится на листе "Решение".
Перед вызовом надстройки Поиск решения необходимо разместить в ячейках таблицы исходные данные и целевую функцию. В качестве исходных данных выступают коэффициенты Xo,Yo ,Rc,Ra,Nd,Ne и вектор свободных членов в системе уравнений составной конструкции.
Была использована следующая целевая функция:
=СУММПРОИЗВ(A4:F4;$A$12:$F$12)
Функция СУММПРОИЗВ(массив1;массив2;массив3; ...) перемножает соответствующие элементы заданных массивов и возвращает сумму произведений.
В курсовом проекте функция перемножает матрицу коэффициентов и найденное решение, и результат сравнивает с вектором свободных членов. Данное ограничение задается следующей формулой:
$G$4:$G$9=$I$4:$I$9
В результате выполнения надстройки «поиск решения» будет сформирован вектор столбец, содержащий оптимальное решение системы уравнений.
Добавление графиков
Результаты математических вычислений лучше воспринимаются человеком, если они представлены в графическом виде. Для построения графиков функций в MS Excel используется Мастер диаграмм.
В курсовом проекте Мастер диаграмм использован для добавления графиков функций во вкладке "Графика". Для выбора силы были добавлены переключатели, а также список. При выборе реакции связи в области построения графика отображается соответствующий график. Расчет дополняется условием: определить диапазон значений горизонтально направленной силы F, при которых односторонняя связь в точке D не нарушается, т.е. давление удовлетворяет условию ND>0. Изменение графика при изменении переключатель, либо при нажатии на элемент в списке реализовано при помощи VBA.
Также график импортируется на вкладку "Графика" рабочей формы, при нажатии кнопки "Построить график". Перед построением средствами VBA на листе "Графика" изменяются исходные данные F и расчётные данные Nd.
Изображения рабочего листа "Графика", а также вкладки "Графика" находятся в приложении 3, текст программы в приложении 2.
При создании пользовательской формы были добавлены следующие объекты:
Таблица 3.1 - Использованные объекты
Объект |
Свойство |
Описание |
1 |
2 |
3 |
OptinButton1 |
Caption - F |
Служит для выбора силы при построении графика. |
OptinButton2 |
Caption - G1 |
Служит для выбора силы при построении графика. |
OptinButton3 |
Caption - G2 |
Служит для выбора силы при построении графика. |
ListBox1 |
ListFillRange - A4:A9 |
Служит для выбора силы при построении графика. |
Image4 |
Picture - изображение, загружаемое программно |
Служит для отображения графика |
TextBox1 |
Text - значение силы F |
Содержит значение силы F |
TextBox2 |
Text - значение силы Nd |
Содержит значение силы Nd |
TextBox3 |
Text - значение силы F |
Содержит значение силы F |
TextBox4 |
Text - значение силы Nd |
Содержит значение силы Nd |
tpogrexcel |
Text - значение погрешности |
Содержит значение погрешности значений вычисленных с помощью Excel |
tpogrvba |
Text - значение погрешности |
Содержит значение погрешности значений вычисленных с помощью VBA |
При написании программы на VBA были использованы следующие переменные:
Таблица 3.2 - Использованные переменные
Переменная |
Тип |
Описание |
G1, G2, F, Nd, Ne, Rc, Ra, sina1, sina2, sina3, sina4, b, a |
Single |
Исходные данные |
MATRICA(7, 7) |
Double |
Матрица коэффициентов |
free_chleny (7) |
Double |
Вектора свободных членов в виде одномерного массива |
resh(7) |
Double |
Одномерный массив, содержащий решение СЛАУ |
Mat() |
Double |
Искомая матрица |
B() |
Double |
Матрица свободных членов |
X() |
Double |
Элементы массива |
N |
Integer |
Размерность матрицы |
delta |
Double |
Относительная невязка |
4.Описание используемых операторов
Инструкция или оператор - наименьшая автономная часть языка программирования; команда. Программа обычно представляет собой последовательность инструкций.
Многие языки различают инструкцию и определение. Различие в том, что инструкция исполняет код, а определение создаёт идентификатор (то есть можно рассматривать определение как инструкцию присваивания).
Условный оператор IF
Различают однострочные и многострочные условные операторы.
Форматы однострочного оператора IF:
а) простой однострочный оператор
IF <условие> THEN <операторы>
При выполнении оператора IF проверяется условие и, если оно истинно, то выполняется действие, указанное после оператора THEN. Если выражение ложно, то управление передается на оператор, следующий за оператором IF.
б) простой расширенный оператор IF
IF <условие> THEN <операторы1> ELSE <операторы2>
При выполнении оператора IF, если условие истинно, то выполняются операторы, указанные после оператора THEN, в ином случае выполняются операторы, следующие за оператором ELSE. После выполнения соответствующей группы операторов управление передается на оператор, следующий за оператором IF.
Форматы многострочного оператора IF:
а) простой IF <условие> THEN <первая группа операторов> ELSE <вторая группа операторов> END IF |
б) расширенный IF <условие> THEN <первая группа операторов> ELSEIF <условие> THEN <вторая группа операторов> ELSE <третья группа операторов> END IF |
Достоинство многострочного IF состоит в том, что число операторов не ограничено.
Операторы цикла
Циклом называется процедура, в которой вычислительные операции выполняются многократно заданное число раз или до достижения некоторой переменной, вычисляемой в теле цикла, определенного, наперед заданного значения. Циклы первого типа называются циклами типа "ДО", а циклы второго типа - циклами типа "ПОКА".
Циклы бывают двух типов: циклами с предусловием и циклами с постусловием. В циклах с предусловием вначале проверяется условие окончания цикла и, если условие окончания цикла не выполняется, то выполняется тело цикла. В таких циклах значение переменной, проверяемой в теле цикла, должно быть вычислено заранее или ей должно быть присвоено некоторое значение, заведомо большее условия окончания цикла, до входа в цикл. В циклах с постусловием условие окончания цикла проверяется в конце цикла.
Циклы могут быть организованы с использованием оператора IF или с использованием специальных операторов: FOR/NEXT, WHILE/WEND, DO/LOOP.
For Счетчик = Начальное значение To Конечное значение [Step Шаг]
Инструкции…
(Exit For) может тут быть
Next Счетчик.
Когда нам требуется повторить некоторую инструкцию можно использовать следующие инструкции.
Do…Loop
Do While…Loop
Do Until…Loop
Do…Loop While
Безусловный выход из цикла. Можно любой цикл выполнить ограниченное количество раз. Для этого используют инструкцию EXIT. Она позволяет безусловно передать управление оператору, который следует за последней командой цикла.
Также были использованы следующие операторы:
Function - Объявляет пользовательскую процедуру-функцию.
Load - Загружает форму в память, но не выводит ее на экран.
Call name, argumentlist - Вызов процедуры с названием name. (Поскольку ключевое слово Call необязательно и можно вызвать процедуру, используя только ее имя, этот оператор редко используется в программировании VBA).
Sub - Объявляет процедуру.
Set objectvar = object - Присваивает объект object объектной переменной с именем objectvar.
Unload - Удаляет форму из памяти.
Функции VBA:
При выполнении курсового проекта были использованы следующие функции:
InputBox (Prompt [, Title] [, Default] [, XPos] [, YPos] [, HelpFile, Context])
Единственным обязательным аргументом является аргумент Prompt, который может быть любым строковым выражением и содержит информацию, которая выводится в диалоговом окне. Все остальные аргументы - необязательные.
Аргумент Title - строка для заголовка диалогового окна.
Аргумент HelpFile - строковое выражение, содержащее имя справочного файла Windows (который уже должен быть создан).
Аргумент Context - численное выражение, указывающее раздел в справочном файле, относящийся к отображаемому диалоговому окну.Аргумент Default - строковое выражение, использующееся как значение по умолчанию для пользовательского ввода.
Аргументы XPos, YPos - любые численные выражения. Эти аргументы задают координаты вывода диалогового окна на экране монитора.
MsgBox (Prompt [, Buttons] [, Title] [, HelpFile, Context])
Единственным обязательным аргументом является аргумент Prompt, который может быть любым строковым выражением и содержит информацию, которая выводится в диалоговом окне. Все остальные аргументы - необязательные.
Аргумент Title - строка для заголовка диалогового окна.
Аргумент HelpFile - строковое выражение, содержащее имя справочного файла Windows (который уже должен быть создан).
Аргумент Context - численное выражение, указывающее раздел в справочном файле, относящийся к отображаемому диалоговому окну.
Аргумент Buttons - численное выражение, которое задает количество и тип кнопок в диалоговом окне. Также указывает кнопку по умолчанию и, содержит ли это диалоговое окно стандартные значки Windows для предупредительных сообщений и запросов пользователя.
Abs(N) Возвращает абсолютное значение аргумента N.
Format(E,S) Возвращает строку, содержащую значение, представленное выражением Е, в формате в соответствии с инструкциями, содержащимся в S.
Sin(N) Возвращает синус N (радиан).
Sqr(N) Возвращает корень квадратный из N. Если N является отрицательным числом - возвращается ошибка времени исполнения.
Cells(N, M) Возвращает ячейку активного листа Excek строки N, столбца M.
Также была исользована функция пользователя Gauss.
Функции Excel:
В программе были использованы следующие функции Excel:
ABS(число)
ЕСЛИ(лог_выражение;значение_если_истина;значение_если_ложь)
МАКС(число1;число2; ...)
ОКРВВЕРХ(число; точность)
СУММПРОИЗВ(массив1;массив2;массив3; ...)
Также были использованы арифметические операторы такие как оператор сложения, вычитания, умножения, деления.
ABS(число) - Возвращает модуль (абсолютную величину) числа.
Абсолютная величина числа - это число без знака.
Число — это действительное число, модуль которого требуется найти.
ЕСЛИ(лог_выражение;значение_если_истина;значение_если_ложь) - Возвращает одно значение, если заданное условие при вычислении дает значение ИСТИНА, и другое значение, если ЛОЖЬ.
Функция ЕСЛИ используется при проверке условий для значений и формул.
Лог_выражение — это любое значение или выражение, принимающее значения ИСТИНА или ЛОЖЬ.
Значение_если_истина — это значение, которое возвращается, если лог_выражение равно ИСТИНА. Если лог_выражение равно ИСТИНА, а значение_если_истина пусто, то возвращается значение 0. Значение_если_истина может быть формулой.
Значение_если_ложь — это значение, которое возвращается, если лог_выражение равно ЛОЖЬ. Если лог_выражение равно ЛОЖЬ, а значение_если_ложь опущено (то есть после значение_если_истина нет точки с запятой), то возвращается логическое значение ЛОЖЬ. Если лог_выражение равно ЛОЖЬ, а значение_если_ложь пусто (то есть после значение_если_истина стоит точка с запятой с последующей закрывающей скобкой), то возвращается значение 0. Значение_если_ложь может быть формулой.
ОКРВВЕРХ(число; точность) - Возвращает результат округления с избытком до ближайшего числа, кратного точности.
Число — это округляемое значение. Точность — это кратное, до которого требуется округлить.
В курсовом проекте функции ABS(), ЕСЛИ() и ОКРВВЕРХ() были использованы для формирования значений оси абсцисс, на основе коэффициентов k и b прямой (y=kx+b).
МАКС(число1;число2; ...) - Возвращает наибольшее значение из набора значений.
Число1, число2, ... — от 1 до 30 чисел, среди которых требуется найти наибольшее.
Данный оператор использовался для нахождения максимального из найденных значений реакций связей при вычислении «невязки».
СУММПРОИЗВ(массив1;массив2;массив3; ...) - Перемножает соответствующие элементы заданных массивов и возвращает сумму произведений.
Массив1, массив2, массив3, ... — от 2 до 30 массивов, чьи компоненты нужно перемножить, а затем сложить.
В курсовой работе данная функция используется в качестве целевой функции при использовании надстройки поиск решения. Данный оператор перемножает матрицу коэффициентов и вектор столбец неизвестных членов. Если результат совпадает с вектором столбцом свободных членов, значит подобранное решение верное.
Список литературы
Под ред. проф. В.В Евдокимова. Экономическая информатика. Учебник., Санкт-Петербург, 1997.
Новожилова И.В., Зацепин М.Ф. Типовые расчеты по теоретической механике на базе ЭВМ: Учебное пособие для втузов. – М.: Высш. Шо, 1986.
Под ред. Проф. А.Н. Морозевича. Основы экономической информатики., Минск, 1998.
Экономическая информатика и вычислительная техника: Учебник /Г.А. Титоренко, Н.Г. Черняк, Л.В. Еремин и др. Под ред. В.П.Косарева и А.Ю.Королева. Изд. 2-е, перераб. и доп. М.: Финансы и статистика, 1998.
Попов А.А. Excel: практическое руководство, ДЕСС КОМ, Москва 2000.
Николь, Р. Альбрехт. Электронные таблицы Excel 5.0. М, Эком, 1996
Персон, Excel для Windows’95 в подлиннике, BHV-С-П., 1996.
Л.В. Рудикова. Microsoft Excel для студента. СПб.: БХВ-Петербург, 2005.
А. Леоненков. Решение задач оптимизации в среде MS Excel. СПб.: БХВ-Петербург, 2005.
Додж М., Стинсон К. Эффективная работа с Microsoft Excel 2000. – СПб.: Питер.
Гарнаев А.Ю. Excel, VBA, Internet в экономике и финансах. – СПб.: БХВ-Петербург, 2005.
http://ru.wikipedia.org/wiki/Visual_Basic
http://ru.wikipedia.org/wiki/VBA
Изм.
Лист
Лист
№ докум.
Подп.
Дата