
- •Методы решения нелинейных уравнений
- •Сущность и методы решения обыкновенных дифференциальных уравнений
- •1. Составить и ввести программный код формирования одномерного массива целых двухзначных n чисел. Результат вывести на рабочий лист столбцом.
- •2. Решить контрольную задачу. Варианты задач представлены в табл. 6.1.
- •Алгоритм поиска максимального элемента в строке массива
ЛАБОРАТОРНАЯ РАБОТА № 1
Вычисление определённого интеграла
Цель работы: уяснить сущность метода численного решения задачи и овладеть первичными навыками составления, ввода, трансляции, отладки, исполнения и оформления программного модуля.
Время на выполнение работы - 4 часа.
Содержание работы:
-
Для заданного варианта интегрируемой функции (номер варианта соответствует порядковому номеру в списке группы) составить и ввести программный код подпрограммы-функции. Пример: Function f(ByVal x As Single) As Single f = (Заданное выражение функции) End Function
-
Объявить (описать) переменные, используемые в модуле программы. Пример: Dim a As Single
-
Составить и ввести программные коды для ввода исходных данных с клавиатуры. Пример программного кода: Do Do prom=InputBox("Введите начальную границу отрезка a=") If Not Isnumeric(prom) then MsgBox("Повторите ввод") Loop Until Isnumeric(prom) a=prom Do prom=InputBox("Введите конечную границу отрезка b=") If Not Isnumeric(prom) then MsgBox("Повторите ввод") Loop Until Isnumeric(prom) b=prom If a >= b then MsgBox("Повторите ввод") Loop until a<B< strong> Do prom=InputBox("Введите погрешность вычисления e =") If Not Isnumeric(prom) then MsgBox("Повторите ввод") Loop Until Isnumeric(prom) e=prom WorkSheets("Лист5").Activate 'Из семейства рабочих листов выбрать "Лист5" и сделать его активным. Cells.Clear 'Очистить все ячейки активного рабочего листа. ActiveSheet.ChartObjects.Delete 'С активного рабочего листа удалить все графические объекты.
-
Результат решения задачи оформить на выбранном рабочем листе рабочей книги MS Excel. Для этого в тексте программного кода предусмотреть вывод на рабочий лист следующих сообщений: Range("d1") ="Лабораторная работа № 1" Range("c2")="Вычисление определённого интеграла y = f(x)" (интегрируемая функция должна соответствовать заданию) Range("e3")="Исходные данные" Range("d4")="Нижний предел интегрирования a = "&Csng(a) Range("d5")="Верхний предел интегрирования b = "&Csng(b) Range("d6")="Погрешность вычисления e = "&Csng(e)
-
Используя алгоритм решения задачи, составить и ввести программный код вычисления определённого интеграла.
-
Вывести на рабочий лист результат вычисления: Cells(8,4).Value="Значение интеграла S = "&Csng(s) Все эти сообщения должны располагаться на рабочем листе в центре каждой строки видимой части рабочего листа.
-
С помощью макрорекодера записать макрос, в котором отформатировать результаты на рабочем листе:
-
для первой строки текста задать: шрифт Times New Roman, размер 16, полужирный;
-
для второй строки текста задать: шрифт Times New Roman, размер 14, полужирный;
-
для третьей и последующих строк задать: шрифт Times New Roman, размер 12, полужирный.
Из модуля макроса выделить блоки кода, соответствующие форматируемому тексту, скопировать и вставить в текст основного программного кода согласно их предназначению.
Проверить действия отредактированного основного программного кода и после безошибочного его выполнения удалить модуль макроса.
Запись макроса
Для записи макроса необходимо:
-
В режиме открытой рабочей книги MS Excel и активного рабочего листа книги, на котором выведены результаты вычисления интеграла, раскрыть меню Сервис и выполнить щелчок мышкой по строке Макрос.
-
В меню Макрос выполнить щелчок мышкой по строке Начать запись. После выполнения этой команды на рабочем листе появится кнопка Остановить запись, которую переместить в правый верхний угол видимой части рабочего листа. Для этого установить указатель мышки на поле кнопки и при нажатой левой клавише мышки переместить её в нужное место.
-
Начать форматирование текста. После окончания форматирования выполнить щелчок мышкой по кнопке Остановить запись.
Вывод программного кода макроса в окно редактора Visual Basic
Для вывода программного кода макроса в окно редактора Visual Basic необходимо:
-
В режиме открытой рабочей книги MS Excel и активного рабочего листа книги, на котором выведены результаты вычисления интеграла, раскрыть меню Сервис и выполнить щелчок мышкой по строке Макрос.
-
В меню Макрос выполнить щелчок мышкой по строке Редактор Visual Basic.
-
В окне Project - VBAProject выполнить щелчок мышкой по крестику слева от папки Modules, а затем выполнить двойной щелчок мышкой по ярлыку Module1. Если создано несколько макросов, то выбирается нужный номер макроса.
Методы вычисления определённого интеграла
Численное решение рассматриваемой задачи в режиме программирования может быть выполнено рядом методов. Среди них можно отметить следующие методы: метод прямоугольников, метод трапеций и метод Симпсона (метод парабол). Эти методы с точки зрения программной реализации отличаются только методом вычисления площади фигуры, ограниченной отрезками функции в точках нижнего и верхнего пределов интегрирования [a, b], линией графика функции и отрезком оси X в границах [a, b]. Методы могут отличаться точностью результатов вычислений, если задачу решать без достижения требуемой точности, а также скоростью решения. Однако, если задачу решать, добиваясь требуемой точности результата, то указанные различия могут быть только в скорости решения. Различия в скорости решения можно определить по величине числа N, которое зависит от количества повторений (итераций) внешнего цикла в алгоритме задачи. Поэтому остановимся только на методе прямоугольников как наиболее простом.
Алгоритм вычисления определённого интеграла методом прямоугольников
Варианты задания к лабораторной работе № 1
№ п/п |
Функция f(x) |
a |
b |
№ п/п |
Функция f(x) |
a |
b |
1 |
|
0 |
2 |
15 |
|
0,5 |
2 |
2 |
|
0 |
2 |
16 |
|
-1 |
1 |
3 |
|
0 |
2 |
17 |
|
0 |
2 |
4 |
|
0,5 |
1,5 |
18 |
|
-1 |
1 |
5 |
|
0 |
3 |
19 |
|
0 |
2 |
6 |
|
0 |
2 |
20 |
|
0,5 |
1,5 |
7 |
|
0 |
1 |
21 |
|
0,5 |
1,5 |
8 |
|
1 |
2 |
22 |
|
0 |
2 |
9 |
|
0,5 |
2 |
23 |
|
1 |
3 |
10 |
|
0 |
1,5 |
24 |
|
0 |
1 |
11 |
|
0 |
1 |
25 |
|
0 |
1 |
12 |
|
0 |
2 |
26 |
|
0 |
2 |
13 |
|
0 |
2 |
27 |
|
1 |
2 |
14 |
|
1 |
2 |
28 |
|
0 |
1 |
ЛАБОРАТОРНАЯ РАБОТА № 2
Поиск экстремумов функции одной переменной
Цель работы: уяснить сущность метода решения задачи, совершенствовать навыки составления, ввода, отладки, исполнения и оформления программного модуля.
Время на выполнение работы - 4 часа.
Содержание работы:
-
Для заданного варианта функции составить и ввести программный код подпрограммы-функции.
-
Объявить (описать) переменные, используемые в модуле программы.
-
Составить и ввести программные коды для ввода исходных данных с клавиатуры.
-
Используя алгоритм решения задачи, составить и ввести программный код поиска экстремумов функции одной переменной.
-
Результат решения задачи оформить на выбранном рабочем листе рабочей книги MS Excel. Для этого в тексте программного кода предусмотреть вывод на рабочий лист следующих сообщений:
-
"Лабораторная работа № 2";
-
"Поиск экстремумов функции y = Cos(x) - Cos(3x)";
-
(функция должна соответствовать заданию);
-
"Исходные данные";
-
"Начальная граница функции a = " + значение;
-
"Конечная граница функции b = " + значение;
-
"Погрешность вычисления e = " +значение;
-
"Максимум (минимум) функции f(x) = " + значение; "при значении x = " + значение.
Все эти сообщения должны располагаться на рабочем листе в центре каждой строки видимой части рабочего листа.
-
С помощью макрорекодера записать макрос, в котором отформатировать результаты на рабочем листе аналогично лабораторной работе № 1.
-
Из модуля макроса выделить блоки кода, соответствующие форматируемому тексту, скопировать и вставить в текст основного программного кода согласно их предназначению.
-
Проверить действия отредактированного основного программного кода и после безошибочного его выполнения удалить модуль макроса.
Методы поиска экстремумов функции одной переменной
Поиск экстремумов (наибольшего и наименьшего значений) унимодальной (обладающей единственным максимумом или минимумом) функции f(x) в некотором интервале её области определения можно осуществить достаточно эффективными методами: табулирование до точки перевала, золотое сечение и другие. Однако по ряду преимуществ с точки зрения программной реализации предпочтительным является метод золотого сечения.
Алгоритм поиска экстремумов методом золотого сечения
Представленный алгоритм обеспечивает поиск максимального значения функции. Для поиска минимального значения необходимо логическое выражение f(x1) < f(x2) заменить выражением f(x1) > f(x2).
Для любознательных и увлечённых рекомендуется составить программный модуль, в котором обеспечивался бы поиск максимального и минимального значений функции. Здесь можно рекомендовать применение подпрограммы-процедуры и оператора Select Case. В этом случае процедур должно быть две: одна для поиска максимума, другая для поиска минимума. Такую задачу можно выполнить и другим способом.
Варианты заданий к лабораторной работе № 2
№ п/п |
Функция f(x) |
a |
b |
№ п/п |
Функция f(x) |
a |
b |
1 |
|
6 |
8 |
18 |
|
1 |
3 |
2 |
|
7 |
9 |
19 |
|
3 |
5 |
3 |
|
9 |
11 |
20 |
|
1 |
3 |
4 |
|
7 |
9 |
21 |
|
1 |
3 |
5 |
|
2 |
3 |
22 |
|
0 |
1 |
6 |
|
0 |
2 |
23 |
|
7 |
9 |
7 |
|
4 |
6 |
24 |
|
0 |
2 |
8 |
|
2 |
3 |
25 |
|
1 |
2 |
9 |
|
7 |
9 |
26 |
|
1 |
3 |
10 |
|
2 |
4 |
27 |
|
2 |
3 |
11 |
|
4 |
5 |
28 |
|
2 |
4 |
12 |
|
0 |
2 |
29 |
|
1 |
2 |
13 |
|
1 |
3 |
30 |
|
5 |
7 |
14 |
|
1 |
3 |
31 |
|
0 |
2 |
15 |
|
5 |
6 |
32 |
|
1 |
2 |
16 |
|
0 |
2 |
33 |
|
1,5 |
2,5 |
17 |
|
0 |
1 |
34 |
|
1 |
3 |
ЛАБОРАТОРНАЯ РАБОТА № 3
Решение нелинейных уравнений
Цель работы: уяснить сущность метода решения задачи, совершенствовать навыки составления, ввода, отладки, исполнения и оформления программного модуля.
Время на выполнение работы - 4 часа.
Содержание работы:
-
Заданный вариант уравнения привести к нормальному виду (перенести все составляющие в левую часть и приравнять нулю, максимально упростить выражение левой части уравнения, если это возможно, и в последующем использовать это выражение в качестве функции).
-
Для полученного выражения функции составить и ввести программный код подпрограммы-функции.
-
Объявить (описать) переменные, используемые в модуле программы.
-
Составить и ввести программные коды для ввода исходных данных с клавиатуры.
-
Используя алгоритм решения задачи, составить и ввести программный код поиска корня уравнения.
-
Результат решения задачи оформить на выбранном рабочем листе рабочей книги MS Excel. Для этого в тексте программного кода предусмотреть вывод на рабочий лист следующих сообщений:
-
"Лабораторная работа № 3";
-
"Решение нелинейного уравнения Ln(x) = 1/x" (уравнение должно соответствовать заданию);
-
(функция должна соответствовать заданию);
-
"Исходные данные";
-
"Начальная граница функции a = " + значение;
-
"Конечная граница функции b = " + значение;
-
"Погрешность вычисления e = " +значение;
-
"Корень уравнения x = " + значение;
-
"Значениe функции f(x) = " + значение.
Все эти сообщения должны располагаться на рабочем листе в центре каждой строки видимой части рабочего листа.
-
С помощью макрорекодера записать макрос, в котором отформатировать результаты на рабочем листе аналогично лабораторной работе № 1.
-
Из модуля макроса выделить блоки кода, соответствующие форматируемому тексту, скопировать и вставить в текст основного программного кода согласно их предназначению.
-
Проверить действия отредактированного основного программного кода и после безошибочного его выполнения удалить модуль макроса.
Методы решения нелинейных уравнений
Аналитический способ решения в основном доступен и применим для решения линейных, квадратных, простейших тригонометрических и логарифмических уравнений. Однако вещественное решение многих алгебраических или трансцендентных уравнений аналитическим способом оказывается сложным или даже невозможным. Решение таких уравнений возможно численными методами с применением ЭВМ. Таких методов существует множество. Например, к ним относятся методы: хорд, касательных (Ньютона), простой итерации, дихотомии (деления отрезка пополам), Рыбакова и другие. Простейшим из этих методов является метод дихотомии (половинного деления). Несмотря на исключительную простоту, этот метод в случае, когда в заданном интервале отрезка функции есть корень (точка пересечения графика функции с осью абсцисс), работает весьма эффективно. Поэтому предпочтение отдадим этому методу.
Алгоритм решения нелинейного уравнения методом дихотомии
Варианты заданий к лабораторной работе № 3
№ п/п |
Функция f(x) |
a |
b |
№ п/п |
Функция f(x) |
a |
b |
1 |
|
1 |
2 |
17 |
|
0 |
|
2 |
|
1 |
3 |
18 |
|
0 |
2 |
3 |
|
0 |
|
19 |
|
1 |
3 |
4 |
|
|
|
20 |
|
0 |
|
5 |
|
2 |
5 |
21 |
|
0 |
|
6 |
|
0 |
|
22 |
|
7 |
9 |
7 |
|
0 |
|
23 |
|
0 |
2 |
8 |
|
4 |
6 |
24 |
|
0,1 |
2 |
9 |
|
0 |
|
25 |
|
0,1 |
1 |
10 |
|
|
|
26 |
|
0,1 |
1 |
11 |
|
0 |
1 |
27 |
|
0 |
|
12 |
|
1 |
2 |
28 |
|
0 |
|
13 |
|
1 |
2 |
39 |
|
0 |
1 |
14 |
|
1 |
2 |
30 |
|
1 |
2 |
15 |
|
0 |
1 |
31 |
|
0 |
0,5 |
16 |
|
1 |
2 |
32 |
|
1 |
3 |
ЛАБОРАТОРНАЯ РАБОТА № 4
Табулирование функции одной переменной
Цель работы:закрепление навыков анализа функции на предмет выявления возможных неопределённостей, совершенствование навыков в составлении, отладке, исполнении и оформлении программного модуля, а также закрепление навыков записи макросов с помощью макродекодера.
Время на выполнение работы - 6 часов.
Содержание работы:
-
Проанализировать заданную функцию на предмет выявления возможных неопределённостей и результаты анализа реализовать при составлении программного модуля. Алгоритм вычисления функции должен обеспечивать исключение вычисления функции в точках неопределённостей и выдавать сообщение о наличии таковых. Эту задачу можно реализовать либо в основном программном модуле, либо в подпрограмме-функции.
-
Для выражения функции составить и ввести программный код подпрограммы-функции.
-
Объявить (описать) переменные, используемые в модуле программы.
-
Составить и ввести программные коды для ввода исходных данных с клавиатуры.
-
Используя алгоритм решения задачи, составить и ввести программный код табулирования функции.
-
Результаты решения задачи оформить на выбранном рабочем листе рабочей книги MS Excel. Для этого в тексте программного кода предусмотреть вывод на рабочий лист следующих сообщений:
-
"Лабораторная работа № 4";
-
"Табулирование функции y = xLn(x) - 1" (функция должна соответствовать заданию);
-
"Исходные данные";
-
"Начальная граница функции a = " + значение;
-
"Конечная граница функции b = " + значение;
-
"Количество шагов табулирования n = " + значение;"
-
"Величина шага табулирования h = " + значение;
-
"Результаты вычислений" - заголовок таблицы;
-
"№ п/п" - имя первой колонки таблицы;
-
"x" - имя второй колонки таблицы;
-
"y" - имя третьей колонки таблицы.
Тщательно рассчитать адреса ячеек рабочего листа для всех выводимых на лист результатов.
С помощью макрорекодера записать макрос, в котором оформить рамку таблицы, отформатировать содержание таблицы и все другие результаты на рабочем листе аналогично лабораторной работе № 1, создать диаграмму-график и оформить её.
Из модуля макроса выделить блоки кода, соответствующие форматируемому тексту, скопировать и вставить в текст основного программного кода согласно их предназначению, а также блок кода, создающего диаграмму-график функции.
Проверить действия отредактированного программного кода и после безошибочного его выполнения удалить модуль макроса.
Отформатировать диаграмму-график и разместить на рабочем листе MS Excel так же, как в подобной работе предыдущего семестра.
Алгоритм табулирования функции
Представленная схема не предусматривает вывод всех указанных выше сообщений, а реализует только непосредственно алгоритм табулирования функции.
Варианты заданий к лабораторной работе № 4
№ п/п |
Функция f(x) |
№ п/п |
Функция f(x) |
1 |
|
16 |
|
2 |
|
17 |
|
3 |
|
18 |
|
4 |
|
19 |
|
5 |
|
20 |
|
6 |
|
21 |
|
7 |
|
22 |
|
8 |
|
23 |
|
9 |
|
24 |
|
10 |
|
25 |
|
11 |
|
26 |
|
12 |
|
27 |
|
13 |
|
28 |
|
14 |
|
29 |
|
15 |
|
30 |
|
Вычисление значения функции arcSin(x), отсутствующей в языке программирования VBA, можно свести к элементарным тригонометрическим преобразованиям:
Возведение в степень xy (если возникают проблемы, которые возможны при отрицательном x или при нецелочисленном y) можно свести к эквивалентному представлению для неотрицательного x:
-
при x > 0 xy =
-
при x = 0, y = 0 xy = 1;
-
при x = 0, y > 0 xy = 0;
-
если x < 0, а значение y целое и чётное, тогда xy =
;
-
если x < 0, а значение y целое и нечётное, тогда xy = -
;
Примечание: оформление результатов выполнения работы осуществить по аналогии с лабораторной работой № 3 предыдущего семестра.
ЛАБОРАТОРНАЯ РАБОТА № 5
Решение обыкновенных дифференциальных уравнений
Цель работы:уяснить сущность задачи и метода её решения, структуру и порядок выполнения подпрограммы-процедуры с параметрами, совершенствовать навыки составления, ввода, отладки, исполнения и оформления программного модуля по заданному алгоритму.
Время на выполнение работы - 6 часов.
Содержание работы:
-
1. Для заданной функции двух переменных (z = f(x,y)) составить и ввести программный код подпрограммы-функции. Примерный вариант программного кода такой функции: Function fdu(ByVal x As Single, ByVal y As Single) As Single fdu = (x + y)/x (вводить заданную функцию) End Function
-
2. Ввести программный код подпрограммы-процедуры, содержащей метод Рунге - Кутта решения обыкновенного дифференциального уравнения. Программный код подпрограммы-процедуры метода Рунге-Кутта: Sub durk(ByVal h As Single, ByVal x As Single, ByVal y As Single, ByRef y1 As Single) Dim k1 As Single Dim k2 As Single Dim k3 As Single Dim k4 As Single k1 = h*fdu(x,y) k2 = h*fdu(x + h/2, y + k1/2) k3 = h*fdu(x + h/2, y + k2/2) k4 = h*fdu(x + h, y + k3) y1 = 1/6*(k1 + 2*k2 + 2*k3 + k4) End Sub
-
Объявить (описать) переменные, используемые в модуле программы.
-
Составить и ввести программные коды для ввода исходных данных с клавиатуры.
-
Используя алгоритм решения задачи, составить и ввести программный код решения обыкновенного дифференциального уравнения.
-
Результат решения задачи оформить на выбранном рабочем листе рабочей книги MS Excel. Для этого в тексте программного кода предусмотреть вывод на рабочий лист следующих сообщений: - "Лабораторная работа № 5"; - "Решение дифференциального уравнения z = (x + y)/x" (функция должна соответствовать заданию); - "Исходные данные"; - "Начальная граница функции a = " + значение; - "Конечная граница функции b = " + значение; - "Погрешность вычисления e = " + значение; - "Результаты вычислений" - заголовок таблицы; - "№ п/п" - имя первой колонки таблицы; - "x" - имя второй колонки таблицы; - "y" - имя третьей колонки таблицы.
-
Тщательно рассчитать адреса ячеек рабочего листа для всех выводимых на лист результатов.
-
С помощью макрорекодера записать макрос, в котором оформить рамку таблицы, отформатировать содержание таблицы и все другие результаты на рабочем листе аналогично лабораторной работе № 4, создать диаграмму-график и оформить её.
-
Из модуля макроса выделить блоки кода, соответствующие форматируемому тексту, скопировать и вставить в текст основного программного кода согласно их предназначению, а также блок кода, создающего диаграмму-график функции.
-
Проверить действия отредактированного программного кода и после безошибочного его выполнения удалить модуль макроса.
-
Отформатировать диаграмму-график и разместить на рабочем листе MS Excel так же, как в подобной работе предыдущего семестра.
-
В область построения графика вывести линию тренда и её ход максимально приблизить к ходу графика, вывести уравнение и достоверность. Поместить уравнение и достоверность ниже области построения диаграммы. Правая часть уравнения и будет искомой функцией.
-
Через строку ниже таблицы ввести текст: "Выражение искомой функции имеет вид: y = (содержание полученной функции)".