
- •Решение типовых задач вычислительной математики с помощью инструментальных средств vb и ms excel
- •Содержание
- •Введение
- •1. Решения задач численными методами в системе Visual Basic
- •Решение нелинейных уравнений
- •1.1.1. Теоретическая часть
- •1.1.2. Практическая часть
- •1.1.3. Варианты заданий
- •1.1.4. Контрольные вопросы
- •1.2. Вычисление определенных интегралов
- •1.2.1. Теоретическая часть
- •1.2.2. Практическая часть
- •1.2.3. Варианты заданий
- •1.2.4. Контрольные вопросы
- •1.3. Вычисление несобственных интегралов
- •1.3.1. Теоретическая часть
- •1.3.2. Практическая часть
- •1.3.3. Варианты заданий
- •1.3.4. Контрольные вопросы
- •1.4. Решение дифференциальных уравнений
- •1.4.1. Теоретическая часть
- •1.4.2. Практическая часть
- •1.4.3. Варианты заданий
- •1.4.4. Контрольные вопросы
- •1.5. Решение систем нелинейных уравнений
- •1.5.1. Теоретическая часть
- •1.5.2. Практическая часть
- •1.5.3. Варианты заданий
- •1.5.4. Контрольные вопросы
- •1.6. Создание Windows-приложений в системе Visual Basic
- •1.6.1. Теоретические основы проектирования меню
- •1.6.2. Программа-шаблон для курсовой работы
- •1.6.3. Контрольные вопросы
- •2. Примеры решения задач в табличном процессоре Excel
- •2.1. Теоретическая часть
- •2.2. Практическая часть
- •2.3. Создание меню пользователя
- •2.4. Варианты заданий
- •2.5. Контрольные вопросы
- •3. Примеры решения задач в субд Access
- •3.1. Теоретическая часть
- •3.2. Практическая часть
- •3.2.1. Создание файла базы данных и таблиц.
- •3.2.2. Поиск, замена и фильтрация данных
- •Отбор записей с помощью фильтра
- •3.2.3. Запросы
- •3.2.4. Формы
- •3.2.4.1. Создание однотабличной формы
- •3.2.4.2. Создание многотабличной формы
- •3.2.4.3. Создание кнопок управления с помощью мастера
- •3.2.4.4. Кнопочная форма
- •3.2.4.5. Запуск приложения
- •3.2.5. Макросы
- •3.2.6. Отчеты
- •3.3. Варианты заданий
- •3.4. Контрольные вопросы
- •Список литературы
- •Примеры решения некоторых задач для курсовых работ
- •Примеры решения некоторых задач для курсовых работ
1.6.3. Контрольные вопросы
Какие стили пользовательского интерфейса Windows-приложения можно создать в Visual Basic?
С помощью какого свойства осуществляется связь пункта меню и процедуры обработки события Click?
Перечислите основные возможности использования элемента Rich TextBox.
Какими методами загружается и выгружается форма, и какими методами отображается и скрывается форма?
Какие методы у системного объекта Clipboard?
2. Примеры решения задач в табличном процессоре Excel
2.1. Теоретическая часть
Табличный
процессор состоит из электронных таблиц
(ЭТ), которые часто называют листами.
Электронная таблица состоит из столбцов
и строк. Строки именуются буквами (A,B,C,
… ,T,
… AA,AB,
… ,IV),
столбцы – цифрами от 1 до 65536. Место
пересечения строки и столбца называется
ячейка. Каждая ячейка имеет свой
уникальный адрес. Адреса бывают
относительными, абсолютными и
комбинированными. Например, A28,
R75
– относительные адреса, $A$28,
$R$75
– абсолютные адреса, $A28,
R$75
– комбинированными адреса. В электронной
таблице можно работать как с отдельными
ячейками, так и с диапазоном ячеек,
например, A1:B2
– представляет диапазон ячеек A1,A2,B1,B2.
В ячейках могут размещаться текст,
число, дата, формула, функция. Формула
всегда начинается со знака равенства
и представляет собой выражение, состоящее
из адресов ячеек, функций, имен диапазонов,
объединенных знаками арифметических,
логических или условных операций,
например, =SIN(A5/H8)*12.
Обычно в ячейке виден только результат
вычисления, сама же формула отображается
в строке формул, находящейся под панелью
инструментов. Функция – это стандартная
формула, например, =СУММ(A1:A5).
Все функции объединены по группам. Так,
математическая группа содержит такие
функции как МОБР – для нахождения
обратных матриц, МУМНОЖ – для умножения
матриц, ТРАНСП – для транспонирования
матриц, SIN,
COS,
TAN
и др., логическая группа – функцию ЕСЛИ,
статистическая – функцию ЛИНЕЙН. Доступ
к функциям возможен через команду
Вставка\Функция
либо через кнопку
на панели инструментов.
Относительный адрес, указанный в формуле, при копировании формулы будет автоматически изменяться (пересчитываться) в соответствии с относительным смещением от предыдущего местоположения формулы. Абсолютный адрес, указанный в формуле, при копировании формулы не будет автоматически изменяться. При копировании формулы, содержащей комбинированный адрес, будет изменяться строка либо столбец, у которого нет знака «$». Чтобы скопировать формулу в диапазон необходимо захватить мышкой маркер заполнения, находящейся в правом нижнем углу ячейки с формулой, и протащить его до конечной ячейки.
2.2. Практическая часть
Пример 1. Построить график следующей функции при х[0,1] с шагом 0.1:
В ячейку A1 введите начальное значение x, а именно - 0.
В ячейку A2 введите формулу: =A1+0.1
Захватив, манипулятором мышь маркер заполнения ячейки A2, протащите его до ячейки A10. Тем самым, Вы скопируете формулу с относительной адресацией в диапазон ячеек.
В ячейку B1 введите формулу: =ЕСЛИ(A1<0.2;1+LN(1+A1);
ЕСЛИ(И(A1>=0.2;A1<=0.8);(1+A1^(1/2))/(1+A1);2*EXP(-2*A1))).
Тот же результат получится при вводе формулы: =ЕСЛИ(A1<0.2; 1+LN(1+A1);ЕСЛИ(A1<=0.8;(1+A1^(1/2))/(1+A1);2*EXP(-2*A1)))
Дважды щелкните левой кнопкой мыши по маркеру заполнения ячейки B1. Это приведет к заполнению диапазона введенной функции, соответствующей диапазону аргумента.
Для проверки полученных данных y создайте в Visual Basic for Application (VBA) программный код. Выполните команду Сервис\Макрос\Редактор Visual Basic. Находясь в окне редактора, выполните команду Insert\Module. В окне Projects появится модуль с именем Module1. В окне Code этого модуля введите следующую функцию, описывающую заданную функциональную зависимость:
Function gr(x)
If x < 0.2 Then
gr = 1 + Math.Log(1 + x)
ElseIf x <= 0.8 Then
gr = (1 + Math.Sqr(x)) / (1 + x)
Else
gr = 2 * Math.Exp(-2 * x)
End If
End Function
Перейдите в окно Excel и в ячейку C1 введите формулу: =gr(A1). Скопируйте формулу в диапазон значений. Данные в столбцах С и В должны совпасть.
Постройте график y=f(x) и нажмите кнопку Save.
Пример 2. Построить поверхность z=x2-y2 при x,y[-1,1] с шагом 0.2.
В диапазон ячеек B1:L1 последовательно сформируйте числа от –1 до 1 с шагом 0.2, соответствующих изменению переменной x, а в диапазон A2:A12 – ту же последовательность значений для переменной y.
В ячейку B2 введите формулу комбинированной адресации: =B$1^2-$A2^2
Используя маркер заполнения ячейки B2, заполните диапазон строк и диапазон столбцов.
Далее выделяют диапазон ячеек A1:L12 и строят поверхность.
Для проверки полученных данных создайте кнопку на Листе1 с помощью панели Элементы управления. Дважды щелкните по кнопке, при этом откроется окно программного кода с процедурой обработки события Click(). Заполните ее следующим содержанием, описывающим процесс расчета заданной поверхности:
Private Sub CommandButton1_Click()
ActiveCell.Offset(RowOffset:=-1, ColumnOffset:=0).Value = _
"Построение поверхности на языке VBA"
x = -1
For i = 1 To 11 ' Формирование элементов X=[-1...1] с шагом 0.2
ActiveCell.Offset(RowOffset:=0, ColumnOffset:=i).Value = x
x = x + 0.2
Next
' Определение адресов диапазона X
x1 = ActiveCell.Offset(RowOffset:=0, ColumnOffset:=1).Address
x2 = ActiveCell.Offset(RowOffset:=0, ColumnOffset:=11).Address
'Изменение размера диапазона Х, начертания и цвета фона
Range(x1, x2).Font.Size = 10
Range(x1, x2).Font.Bold = True
Range(x1, x2).Interior.ColorIndex = 6 ' Желтый цвет фона ячеек
y = -1
For i = 1 To 11 ' Формирование элементов Y=[-1...1] с шагом 0.2
ActiveCell.Offset(RowOffset:=i, ColumnOffset:=0).Value = y
y = y + 0.2
Next
' Определение адресов диапазона Y
y1 = ActiveCell.Offset(RowOffset:=1, ColumnOffset:=0).Address
y2 = ActiveCell.Offset(RowOffset:=11, ColumnOffset:=0).Address
'Изменение размера диапазона Y, начертания и цвета фона
Range(y1, y2).Font.Size = 10
Range(y1, y2).Font.Bold = True
Range(y1, y2).Interior.ColorIndex = 6 ' Желтый цвет фона ячеек
' Формирование и вывод элементов Z=X^2-Y^2
For i = 1 To 11
For j = 1 To 11
x = ActiveCell.Offset(RowOffset:=0, ColumnOffset:=j).Value
y = ActiveCell.Offset(RowOffset:=i, ColumnOffset:=0).Value
ActiveCell.Offset(RowOffset:=i, ColumnOffset:=j).Value = x ^ 2 - y ^ 2
Next
Next
End Sub
Метод ActiveCell определяет активную ячейку ЭТ, относительно которой будет происходить построение поверхности. Метод Offset формирует смещение по строкам и столбцам относительно активной ячейки. Свойство Value определяет значение ячейки, а свойство Address – адрес ячейки. Метод Range определяет выбор диапазона ячеек.
Вернитесь в окно Excel, выйдите из режима Конструктора, щелкните по пустой ячейке и нажмите созданную Вами кнопку. Вы увидите расчетные данные, которые должны совпадать с данными, полученными с использованием комбинированной адресации.
Пример
3. Решить
систему линейных уравнений, представленную
в матричной форме A2X=B,
где
.
Представим систем уравнений в виде X=(A2)-1B
Коэффициенты матрицы A введите в диапазон ячеек A1:B2
Коэффициенты матрицы B введите в диапазон ячеек C1:C2
Выделите мышью диапазон ячеек D1:D2 и введите следующую формулу: =МУМНОЖ(МОБР(МУМНОЖ(A1:B2;A1:B2));C1:C2)
Далее выделите в строке формул приведенную формулу и нажмите CTRL+SHIFT+ENTER. В ячейке D1 появится значение 1.12, а в ячейке D2 – значение –0.44. При этом представленная формула в строке формул будет охвачена фигурными скобками.
Для проверки полученных значений x создайте в VBA программный код. Выполните команду Сервис\Макрос\Редактор Visual Basic. Двумя щелчками мыши в окне Projects откройте окно кода модуля Module1. (Если ни одного модуля нет, то создайте его командой Insert\Module). В окне Code модуля введите следующую функцию, описывающую решение системы линейных уравнений:
Function Matrix(A As Variant, B As Variant) As Variant
Matrix = WorksheetFunction.MMult(WorksheetFunction.MInverse( _ WorksheetFunction.MMult(A, A)), B)
End Function
Класс WorksheetFunction содержит много математических функций, в том числе, и функции работы с матрицами: Mmult – осуществляет перемножение матриц, Minverse – находит обратную матрицу, Transpose – осуществляет транспонирование матриц.
Выделите диапазон ячеек E1:E2. Отыщите с помощь мастера функций вновь созданную функцию Matrix и введите диапазоны ее двух параметров A1:B2 и C1:C2. Выделите формулу в строке формул и нажмите CTRL+SHIFT+ENTER.
Результаты в ячейках C1:C2 и E1:E2 должны совпасть.
Пример 4. Найти все корни нелинейного уравнения x3 – 0.01x2 – 0.7044x +0.14=0.
Поскольку полином третьего порядка, то при его решении должно быть три корня.
Протабулируйте значение x[-1,1] с шагом 0.2, начиная с ячейки A1.
В ячейку B1 введите полином =A1^3-0.01*A1^2-0.7044*A1 +0.14
Скопируйте эту формулу в диапазон и обратите внимание на изменение знака значений полинома. Если значение полинома не меняет знак, уменьшите шаг табулирования x.
В нашем случае полином меняет знак на интервалах [-1; -0.8], [-0.2; 0.4], [0.6; 0.8]. С помощью команды Сервис\Параметры\ Вычисления установите относительную погрешность 0,000001 и количество итераций 1000.
Введите в ячейки C2:C4 средние значения корней: -0.9; 0.3; 0.7.
В ячейку D2 введите формулу: =C2^3-0.01*C1^2-0.7044*C1 +0.14
Скопируйте эту формулу в диапазон D2:D4.
Для каждой ячейки диапазона D2:D4 с помощью команды Сервис\Подбор параметров найдите три корня полинома. Например, для ячейки D2 в диалоговом окне Подбор параметров в поле Установить в ячейке введите $D$2, в поле Значение – 0, в поле Изменяя значение ячейки - $C$2 и нажмите ОК.
Постройте график полинома.
Для проверки полученных корней создайте кнопку на Листе1 с помощью панели Элементы управления. Дважды щелкните по кнопке, при этом откроется окно программного кода с процедурой обработки события Click. Заполните ее следующим содержанием, описывающим процесс получения корня методом Ньютона:
Private Sub CommandButton2_Click()
Const e = 0.00001
ActiveCell.Offset(RowOffset:=-1, ColumnOffset:=0).Value="Аргумент"
ActiveCell.Offset(RowOffset:=-1, ColumnOffset:=1).Value="Корень"
ActiveCell.Offset(RowOffset:=-1, ColumnOffset:=2).Value="Функция"
ActiveCell.Offset(RowOffset:=-1, ColumnOffset:=3).Value="Производная"
For i = 1 To 4
ActiveCell.Offset(RowOffset:=0, ColumnOffset:=i - 1).Value = "-------------"
Next
x = -1 ' Формирование элементов X=[-1...1] с шагом 0.2
For i = 1 To 11
ActiveCell.Offset(RowOffset:=i, ColumnOffset:=0).Value = x
x = x + 0.2
Next
' Определение адресов диапазона X
x1 = ActiveCell.Offset(RowOffset:=1, ColumnOffset:=0).Address
x2 = ActiveCell.Offset(RowOffset:=11, ColumnOffset:=0).Address
'Изменение размера диапазона Х, начертания и цвета фона
Range(x1, x2).Font.Size = 10
Range(x1, x2).Font.Bold = True
Range(x1, x2).Interior.ColorIndex = 4 ' Зеленый цвет фона ячеек
For i = 1 To 11
x = ActiveCell.Offset(RowOffset:=i, ColumnOffset:=0).Value
Do
x0 = x
x = x - f(x) / df(x)
Loop Until Abs(x - x0) < e
ActiveCell.Offset(RowOffset:=i, ColumnOffset:=1).Value = x
ActiveCell.Offset(RowOffset:=i, ColumnOffset:=2).Value = f(x)
ActiveCell.Offset(RowOffset:=i, ColumnOffset:=3).Value = df(x)
Next
End Sub
В окне Code объекта Лист1 запишите еще две функции:
Function f(ByVal x As Double) As Double
f = x ^ 3 - 0.01 * x ^ 2 - 0.7044 * x + 0.14
End Function
Function df(ByVal x As Double) As Double
df = 3 * x ^ 2 - 0.02 * x - 0.7044
End Function
Вернитесь в окно Excel, выйдите из режима Конструктора, щелкните по пустой ячейке правее полученных корней с использованием команды Подбор параметров и нажмите созданную Вами кнопку. Вы увидите расчетные данные и те же три корня.
Пример 5. Установить аналитическую (регрессионную) зависимость выпуска изделий по следующим статистическим данным:
Таблица 6
Месяц |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
Кол-во Изделий |
30 |
40 |
45 |
40 |
38 |
45 |
50 |
49 |
52 |
47 |
45 |
40 |
Аппроксимируем статистические данные выпуска изделий кубическим сплайном (полиномом 3-й степени): y=Ax3+Bx2+Cx+D, x- месяцы, y – количество изделий. Задача состоит в том, чтобы определить коэффициенты A,B,C,D для функциональной зависимости на основе статистических данных.
Заполните диапазон A2:A13 числами от 1 до 12, а диапазоны B2:B13 и C2:C13 формулами квадрата и куба значений диапазона A2:A13.
Заполните диапазон Е2:Е13 числами, соответствующих количеству произведенных изделий.
Выделите четыре строки для определения неизвестных коэффициентов A,B,C,D и пять строк, сформировав диапазон ячеек G2:J6, и введите в этот диапазон формулу: =ЛИНЕЙН(Е2:Е13; A2:C13;1;1), здесь Е2:Е13 – блок y, A2:C13 – блок x, первая единица определяет вычисление свободного члена зависимости (в нашем случае - D), вторая единица – статистику.
Далее выделите в строке формул приведенную формулу и нажмите CTRL+SHIFT+ENTER. В первой строке выделенного диапазона, появятся коэффициенты полинома A,B,C,D, как на рис.13.
Для проверки полученных значений, постройте график зависимости y=f(x), как показано на рис.13.
Щелкните правой клавишей мыши по графику и в появившемся контекстном меню выберите команду Добавить линию тренда.
В появившемся диалоге Линия тренда на закладке Тип выберите Полиномиальная Степень 3, а на закладке Параметры – флажки Показать уравнение на диаграмме и Поместить на диаграмму величину достоверности аппроксимации (R2).
Нажмите ОК. Результаты построения и расчета должны совпасть.
Рис.13