MathCad

advertisement
СОДЕРЖАНИЕ
Введение ............................................................................................................... 2
Методические рекомендации по подготовке к лабораторным работам......... 3
Лабораторная работа № 1 Алгоритмизация и программирование
Лабораторная работа № 2 Visual Basic for Applications (VBA). Линейные
алгоритмы ......................................................................................................
Лабораторная работа № 3 Visual Basic for Applications (VBA). Условные
алгоритмы ......................................................................................................
Лабораторная работа № 4 Visual Basic for Applications (VBA). Циклические
алгоритмы. Работа с массивами...................................................................
Лабораторная работа № 5 Вычисления в Mathcad. Построение графиков
функций ..........................................................................................................
Лабораторная работа № 6 Вычисления в Mathcad. Линейная алгебра ...............
Лабораторная работа № 7 Вычисления в Mathcad. Дифференциальное и
интегральное исчисление ...............................................................................
Лабораторная работа № 8 Вычисления в Mathcad. Программирование в
Mathcad ....................................................................................................... 74
Библиографический список .................................................................................
1
ВВЕДЕНИЕ
Данный сборник предназначен для помощи в проведении лабораторных
работ по курсу «Информатика». Проведение этих работ позволит изучить
основы алгоритмизации и программирования. Это дополняет изучаемый в
теории материал.
Целью и задачей выполнения этих работ является получение навыков
составления алгоритмов решения задач и программирования с помощью
различных языков.
Сборник содержит описание самих работ, необходимый краткий
теоретический материал для их выполнения, примеры выполнения и варианты
исходных данных для лабораторных работ.
Кроме этого в практикуме есть примеры выполнения этих работ.
В конце практикума присутствует список литературы, позволяющей
самостоятельно изучить дополнительный материал по другим источникам.
После выполнения каждой работы студент должен предоставить в
письменном виде отчет о проделанной работе, в который входят исходные
данные, полученные результаты и выводы.
2
МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ПОДГОТОВКЕ К
ЛАБОРАТОРНЫМ РАБОТАМ
Каждый студент должен взять у преподавателя свои исходные данные для
выполнения работ, изучить данные методические материалы перед
выполнением работы, выполнить на ЭВМ и предоставить отчет.
В данных лабораторных работах используются ЭВМ, на которых
установлена операционная система Windows XP, офисный пакет MS Office 2007,
MathCad.
3
ЛАБОРАТОРНАЯ РАБОТА № 1
АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ
Время выполнения – 6 часов.
Цель работы
Усвоить понятия: алгоритм как фундаментальное понятие информатики,
способы описания, основные типы алгоритмов, освоить принципы решения
задач с использованием основных алгоритмических конструкций.
Задачи лабораторной работы
После выполнения работы студент должен знать и уметь:
 знать назначение алгоритма и его определение;
 знать формы представления алгоритма;
 уметь работать с основными алгоритмическими конструкциями;
 уметь представлять алгоритм в виде блок-схемы;
 уметь приводить примеры алгоритмов и применять их для построения
блок-схем;
 уметь составлять и записывать алгоритм одним из способов.
Перечень обеспечивающих средств
Для обеспечения выполнения работы необходимо иметь методические
указания по выполнению работы.
Общие теоретические сведения
Решение любой задачи на ЭВМ можно разбить на следующие этапы:
разработка алгоритма решения задачи, составление программы решения задачи
на алгоритмическом языке, ввод программы в ЭВМ, отладка программы
(исправление ошибок), выполнение программы на ПК, анализ полученных
результатов.
Первый этап решения задачи состоит в разработке алгоритма.
Алгоритм – это точная конечная система правил, определяющая
содержание и порядок действий исполнителя над некоторыми объектами
(исходными и промежуточными данными) для получения после конечного
числа шагов искомого результата.
Алгоритм может быть описан одним из трех способов:
 словесным (пример в начале раздела);
 графическим (виде специальной блок-схемы);
 с помощью специальных языков программирования.
Блок-схема – распространенный тип схем, описывающий алгоритмы или
процессы, изображая шаги в виде блоков различной формы, соединенных
между собой стрелками.
1. Линейный алгоритм – это такой алгоритм, в котором все операции
выполняются последовательно одна за другой.
4
2. Алгоритмы разветвленной структуры применяются, когда в
зависимости от некоторого условия необходимо выполнить либо одно, либо
другое действие.
3. Алгоритмы циклической структуры.
Циклом называют повторение одних и тех же действий (шагов).
Последовательность действий, которые повторяются в цикле, называют телом
цикла.
Циклические алгоритмы подразделяют на алгоритмы с предусловием,
постусловием и алгоритмы с конечным числом повторов. В алгоритмах с
предусловием сначала выполняется проверка условия окончания цикла и затем,
в зависимости от результата проверки, выполняется (или не выполняется) так
называемое тело цикла.
Задание 1. Определить площадь трапеции по введенным значениям
оснований (a и b) и высоты (h).
Запись решения задачи на алгоритмическом языке:
алг трапеция
вещ a,b,h,s
нач
ввод f,b,h
s:=((a+b)/2)*h
вывод s
кон
Запись алгоритма в виде блок-схемы (рис. 1):
Начало
Ввод a,b,h
S:=((a+b)/2)*h
Вывод S
S
Конец
Рисунок 1 – Блок-схема линейного алгоритма
Задание 2. Определить среднее арифметическое двух чисел, если a
положительное и частное (a/b) в противном случае.
5
Запись решения задачи на алгоритмическом языке:
алг числа
вещ a,b,c
нач
ввод a,b
если a>0
то
с:=(a+b)/2
иначе с:=a/b
все
вывод с
кон
Запись алгоритма в виде блок-схемы (рис. 2):
Начало
Ввод a,b
a>0
c:=a/b
c:=(a+b)/2
Вывод с
Конец
Рисунок 2 – Блок-схема алгоритма с ветвлением
Задание 3. Составить алгоритм нахождения суммы целых чисел в
диапазоне от 1 до 10.
Запись решения задачи на алгоритмическом языке:
алг сумма
вещ a,s
нач
S:=0;
A:=1;
нц
пока a<=10
S:=S+a;
A:=a+1;
кц
вывод S
кон
6
Запись алгоритма в виде блок-схемы (рис. 3):
Начало
S:=0
a:=1
нет
a<=10
да
Вывод S
S:=S+a
Конец
a:=a+1
Рисунок 3 – Циклический алгоритм с предусловием
В алгоритме с постусловием сначала выполняется тело цикла, а затем
проверяется условие окончания цикла. Решение задачи нахождения суммы
первых десяти целых чисел в данном случае будет выглядеть следующим
образом:
алг сумма
вещ a,s
нач
S:=0;
A:=1;
нц
S:=S+a;
A:=a+1;
пока a<=10
кц
вывод S
кон
7
Запись алгоритма в виде блок-схемы (рис. 4):
Начало
S:=0
a:=1
S:=S+a
a:=a+1
да
a<=10
нет
Вывод S
Конец
Рисунок 4 – Циклический алгоритм с постусловием
Варианты задания
Задание 1. Составить алгоритм решения задачи с помощью
алгоритмического языка псевдокод и с помощью блок-схем, используя
конструкцию линейного алгоритма.
1. Вычислить площадь поверхности и объем усеченного конуса по
следующим формулам
S = π (R + r) l + πR2 + πr2 ;
V = (1/3) π (R2 + r2 + Rr) h .
2. Вычислить координаты центра тяжести трех материальных точек с
массами m1, m2, m3 и координатами (x1,y1), (x2,y2), (x3,y3) по формулам:
xc = (m1x1 + m2x2 + m3x3) / (m1 + m2 + m3) ;
yc = (m1y1 + m2y2 + m3y3) / (m1 + m2 + m3) .
3. Вычислить площадь треугольника со сторонами a, b, c по формуле
Герона:
𝑆 = √𝑝 (𝑝 − 𝑎)(𝑝 − 𝑏)(𝑝 − 𝑐) ,
где p – полупериметр, вычисляемый по формуле
𝑎+𝑏+𝑐
,
2
8
4. Вычислить координаты точки, делящей отрезок а1а2 в отношении n1:n2
по формулам:
𝑥 = (𝑥1 + 𝛾𝑥2 )/(1 + 𝛾) ;
𝑦 = (𝑦1 + 𝛾𝑦2 )/(1 + 𝛾) ,
где 𝛾 = 𝑛1 /𝑛2 .
5. Вычислить медианы треугольника со сторонами a, b, c по формулам:
𝑚𝑎 = 0.5√2𝑏 2 + 2𝑐 2 − 𝑎2 ;
𝑚𝑏 = 0.5√2𝑎2 + 2𝑐 2 − 𝑏 2 ;
𝑚𝑐 = 0.5√2𝑏2 + 2𝑏 2 − 𝑐 2 ;
6. Вычислить площадь круга и длину окружности по введенному
значению радиуса.
7. Вычислить площадь S и периметр L эллипса по введенным значениям
полуосей a и b:
𝑆 ≔𝜋∙𝑎∙𝑏;
1
𝐿 = 2 ∙ 𝜋 ∙ √ (𝑎2 + 𝑏 2 .
2
8. Вычислить объем V и площадь боковой поверхности цилиндра S по
введенным значениям радиуса основания R и высоты цилиндра H.
𝑉 = 𝜋 ∙ 𝑅2 ∙ 𝐻 ;
𝑆 =2∙𝜋∙𝑅∙𝐻.
9. Вычислить объем V и площадь боковой поверхности конуса S по
введенным значениям радиуса основания r, высоты h и образующей l:
1
𝑉 = 𝜋 ∙ 𝑟2 ∙ ℎ ;
3
𝑆 =𝜋∙𝑟∙𝑙 .
10. Вычислить объем V и площадь поверхности S сферы по введенному
значению радиуса r:
4
𝑉 = ∙ 𝜋 ∙ 𝑟3 ;
3
𝑆 = 4 ∙ 𝜋 ∙ 𝑟2 .
11. Дано целое четырехзначное число. Используя операции div и mod,
найти сумму его цифр.
12. Дана сторона равностороннего треугольника. Найти площадь этого
треугольника и радиусы вписанной и описанной окружностей.
13. Даны координаты трех вершин треугольника (x1, y1), (x2, y2), (x3, y3).
Найти его периметр и площадь.
14. Дана длина окружности. Найти площадь круга, ограниченного этой
окружностью.
15. Дана площадь круга. Найти длину окружности, ограничивающей этот
круг.
9
Задание 2. Составить алгоритм решения задачи с помощью
алгоритмического языка псевдокод и с помощью блок-схем, используя
конструкцию алгоритма с ветвлением.
1. Составить программу для решения квадратного уравнения
2
ax + bx + c = 0.
2. Определить максимальное четное число из двух введенных.
3. Определить, можно ли из отрезков с длинами х, y и z построить
треугольник.
4. Ввести два числа а и b. Большее число заменить утроенным
произведением, меньшее – полусуммой.
5. Если среди трех чисел a, b, c имеется хотя бы одно четное, то найти
максимальное число, иначе – минимальное.
6. Определить, в каком квадранте находится точка с координатами x и y
и вывести номер квадранта на экран.
7. Найти квадрат наибольшего из двух чисел а и b. Вывести на экран
число 1, если наибольшим является число а, число 2 – если наибольшим числом
является b.
8. Определить, попадает ли точка с координатами x и y в круг радиусом R.
Если точка попадает в круг, вывести на экран единицу, в противном случае –
ноль.
9. Написать алгоритм решения задачи, которая решает уравнение
ax + b = 0 относительно x для любых чисел a и b, введенных с клавиатуры. Все
числа считаются действительными.
10. Написать алгоритм решения задачи, которая определяет, лежит ли
точка А(х,у) внутри некоторого кольца («внутри» понимается в строгом смысле,
т.е. случай, когда точка А лежит на границе кольца, недопустим). Центр кольца
находится в начале координат. Для кольца заданы внутренний и внешний
радиусы r1, r2. Координаты x и у вводятся с клавиатуры.
11. Даны две переменные целого типа: A и B. Если их значения не равны,
то присвоить каждой переменной произведение этих значений, а если равны, то
присвоить переменным нулевые значения.
12. Даны две переменные целого типа: A и B. Если их значения не равны,
то присвоить каждой переменной минимальное из этих значений, а если равны,
то присвоить переменным нулевые значения.
13. Даны целочисленные координаты точки на плоскости. Если точка не
лежит на координатных осях, то вывести 0. Если точка совпадает с началом
координат, то вывести 1. Если точка не совпадает с началом координат, но
лежит на оси OX или OY, то вывести соответственно 2 или 3.
14. Даны вещественные координаты точки, не лежащей на координатных
осях OX и OY. Вывести номер координатной четверти, в которой находится
данная точка.
10
15. Дано целое число, лежащее в диапазоне от –999 до 999. Вывести строку
– словесное описание данного числа вида "отрицательное двузначное число",
"нулевое число", "положительное однозначное число" и т.д.
Задание 3. Составить алгоритм решения задачи с помощью
алгоритмического языка псевдокод и с помощью блок-схем, используя
конструкцию циклического алгоритма.
1. Найти сумму чисел, кратных трем, в диапазоне от 0 до 50.
2. Найти сумму первых десяти чисел, кратных пяти.
3. Найти произведение четных чисел в диапазоне от 2 до 30.
4. Вводятся положительные числа. Прекратить ввод, когда сумма
введенных чисел превысит 100.
5. Требуется найти сумму чисел, кратных 7, в диапазоне от 0 до 100.
Вывести на экран сумму чисел и их количество.
6. Определить количество целых чисел, кратных 3 (от 3 и далее), дающих
в сумме число, превышающее 200.
7. Вводятся 10 чисел. Вывести на экран суммы положительных и
отрицательных чисел и их количество.
8. Вывести на экран значения функции у=sin(x) для 0≤x≤180 c шагом в 10.
9. Подсчитать площади десяти кругов с радиусами от 1 см с шагом 2 см и
вывести значения площадей на экран.
10. Вводятся положительные числа. Прекратить ввод чисел, когда их сумма
превысит 100. Результат вывести на экран.
11. Вводятся числа. Прекратить ввод чисел, когда сумма положительных
чисел превысит 100. Результат вывести на экран.
12. Вывести на экран значения произведений чисел a и b. Числа а
изменяются от 1 до 11 с шагом 1, b – от 1 до 3 с шагом 0,2.
13. Вывести на экран таблицу перевода километров в мили в диапазоне от
2 до 20 километров с шагом 2 км.
14. Вы положили в банк 1500 рублей. Определить, сколько денег будет на
Вашем вкладе через 1 год, если каждый месяц вклад увеличивается на 0.76 % от
суммы предыдущего месяца.
15. Решив заняться легкой атлетикой, Вы пробежали в первый день 2 км.
Сколько километров Вы пробежите за 2 недели, если каждый день Вы
увеличиваете дистанцию на 10 % от предыдущего дня?
Технология выполнения работы
В рамках выполнения работы необходимо составить алгоритм решения
задачи в виде блок-схемы и с помощью языка псевдокода.
Содержание отчета
1. Цель работы и задание.
2. Условие задачи.
3. Алгоритм, написанный с помощью псевдокода и блок- схемы.
11
Вопросы для защиты работы
1. Что такое алгоритм?
2. Свойства алгоритма.
3. Способы записи алгоритма.
4. Основные элементы блок-схемы.
5. Виды алгоритмов.
6. Отличительные особенности алгоритмов с
постусловием.
12
предусловием
и
ЛАБОРАТОРНАЯ РАБОТА № 2
VISUAL BASIC FOR APPLICATIONS (VBA).
ЛИНЕЙНЫЕ АЛГОРИТМЫ
Время выполнения – 4 часа.
Цель работы
Научиться использовать язык программирования Visual Basic for
Applications (VBA) для разработки модулей в Excel на основе линейных
алгоритмов.
Задачи лабораторной работы
После выполнения данной работы студент должен знать и уметь:
 знать все операторы, используемые в программах;
 уметь применять любые из изученных операторов для написания своих
модулей;
 уметь объяснить написанную программу.
Перечень обеспечивающих средств
Для обеспечения выполнения работы необходимо иметь компьютер со
следующим математическим обеспечением: операционная система Windows XP,
электронные таблицы Excel с приложением в виде языка Visual Basic for
Applications.
Общие теоретические сведения
VBA – это язык объектно-ориентированного программирования.
Основными парадигмами являются объект, свойство, метод, событие,
класс и семейство объектов.
Объект – это инкапсуляция данных вместе с кодом, предназначенным для
их обработки.
Семейство – объект, содержащий несколько других объектов того же
типа:
Worksheets (“Лист 1”) – рабочий лист с имени Лист1,
Worksheets (1) – первый лист рабочей книги.
Классы – это проект, на основе которого будет создан объект, т.е. класс
определяет имя объекта, его свойства и действия, над ним выполняемые. А
каждый объект, свою очередь, является экземпляром класса.
Методы – это действия, выполняемые над объектом.
Объект.метод – синтаксис метода
Пример.
Application.Quit – закрыть объект Application.
13
Worksheets (“Лист1”).Chartobjects.Delete – удалит все диаграммы с
листа “Лист1”.
Свойства – это атрибут объекта, определяющий его характеристики:
размер, цвет, положение на экране или состояние (доступность, видимость).
Для изменения характеристик меняют его свойства:
Объект.Свойство=Значение свойства
Пример.
Worksheets.Visible = False
Есть свойства, возвращающие объект:
ActiveCell возвращает активную ячейку активного листа активной рабочей
книги.
ActiveWindow – активное окно.
Свойства ActiveCell, ActiveWindow. ActiveCell и Application. ActiveWindow.
ActiveCell возвращают одну и ту же активную ячейку.
События – это действия, распознаваемые объектом.
Суть программирования на VBA и заключается в том, чтобы на событие
получить отклик.
Пример 1. Написать программу, которая вычисляет периметр треугольника.
Запись программы в виде блок-схемы (рис. 1) и визуальное представление
формы для ввода данных (рис. 2) и результата (рис. 3):
Начало
ВтораяСторона = 3,5
Ввод значения
третьей стороны
Вычисление периметра
треугольника
Вывод результата
Конец
Рисунок 1 – Блок-схема решения задачи
14
Рисунок 2 – Ввод исходных данных в процессе выполнения программы
Рисунок 3 – Вывод результата в процессе выполнения программы
Программный код
Option Explicit
Sub ПериметрТреугольника()
Dim ВтораяСторона, ТретьяСторона, Периметр As Single
ВтораяСторона = 3.5
ТретьяСторона
=
InputBox("Введите
значение
третьей
треугольника", "Третья сторона")
Периметр = Cells(1, 4) + ВтораяСторона + ТретьяСторона
MsgBox "Периметр треугольника = " & Периметр
End Sub
стороны
Пример 2. Вычислите значение квадратного корня из суммы трех
переменных.
Запись программы в виде блок-схемы (рис. 4) и визуальное представление
формы для ввода данных (рис. 5) и результата (рис. 6):
15
Начало
Ввод значений
трех переменных
Вычисление суммы трех переменных
и взятие квадратного корня
Вывод
результат
а
Конец
Рисунок 4 – Блок-схема решения задачи
а)
б)
в)
Рисунок 5 – Ввод исходных данных в процессе выполнения программы
16
Рисунок 6 – Вывод результата в процессе выполнения программы
Программный код
Option Explicit
Sub КореньКвадратныйИзСуммыТрехПеременных()
Dim ПерваяПеременная, ВтораяПеременная, ТретьяПеременная, Сумма As
Single
Dim Корень As Double
ПерваяПеременная = InputBox("Введите значение первой переменной",
"Первая Переменная")
ВтораяПеременная = InputBox("Введите значение второй переменной",
"Вторая Переменная")
ТретьяПеременная = InputBox("Введите значение третьей переменной",
"Третья Переменная")
Сумма = ТретьяПеременная + ВтораяПеременная + ПерваяПеременная
Корень = Sqr(Сумма)
MsgBox "Корень из суммы трех переменных = " & Корень
End Sub
Пример 3. Вычислить Y, задав значения переменным:
Y
5  x 4  2  sin 2 

cos  3  3  tg

Программный код
Sub Main()
Dim x, b, a, res As Single
x = -3
b = 2
a = 0,5
res = (Sqr(5 * x ^ 4 + 2 * Sin(b) ^ 2)) / Cos(Abs(a ^ 3 - 3 *
Tan(b)))
MsgBox "res=" & CStr(res)
End Sub
Private Sub CommandButton1_Click()
Dim x, b, a, res As Single
x = Cells(3, 1)
b = Cells(3, 2)
a = Cells(3, 3)
res = (Sqr(5 * x ^ 4 + 2 * Sin(b) ^ 2)) / Cos(Abs(a ^ 3 - 3 *
Tan(b)))
Cells(5, 2) = res
End Sub
17
Визуальное представление решения задачи представлено на рис. 7.
Рисунок 7 – Визуальное представление решения задачи
Пример 4. Вычислить f, задав значения переменным:
f 
4,8x
x
3
y

3

1
3
t  
4
x
Программный код
Sub Main()
Dim x, y, t, res As Single
x = -3
y = 2
t = 0.5
res = (x / (4.8 * x ^ 3 - y) ^ 3) + 1 / 4 * (t - 3 / x)
MsgBox "res=" & CStr(res)
End Sub
Private Sub CommandButton2_Click()
Dim x, y, t, res As Single
x = Cells(3, 9)
y = Cells(3, 10)
t = Cells(3, 11)
res = (x / (4.8 * x ^ 3 - y) ^ 3) + 1 / 4 * (t - 3 / x)
Cells(5, 10) = res
End Sub
Визуальное представление решения задачи представлено на рис. 8.
Рисунок 8 – Визуальное представление решения задачи
18
Варианты заданий
Задание 1. Составить блок-схему и написать программный код согласно
условию задачи.
1. Вычислите значение квадратного корня из суммы трех переменных.
2. Вычислите значение суммы обратных величин трех переменных.
3. Найдите сумму первой и второй переменных и разность первой и
третьей переменной.
4. Найти объем цилиндра.
5. Вычислить площадь прямоугольника.
6. Вычислите значение куба, квадрата и обратной величины переменных.
7. Найдите площадь круга по формуле S = R2 .
8. Найти расстояние от точки М до начала координат.
9. Найти сторону квадрата, площадь которого равна площади
прямоугольника.
10. Найти площадь ромба.
11. Определите произведение трех переменных.
12. Найти гипотенузу треугольника.
13. Найти остаток от деления двух действительных чисел.
14. Найти сумму квадратов трех чисел.
15. Найти среднее арифметическое трех введенных чисел.
Задание 2. Вычислить для своего варианта Y, задав значения переменным:
2e x  tg 3
 3  b  cos 
1. Y 
ln x  bx 2  ctga 2
2a 3  cos 4 
2. Y 
3. Y 
3  sin 2   2 cos 2 
b  ctg 2 
a 5  cos 2   2.8
4. Y 
2  tg 2   cos 3 
5. Y 
b 5  a 2 x 2  2  tg 3 
arccos x  2  sin 
7. Y 
9. Y 
a 3  b 2  arcsin 3 
a 2  sin 4   x
2  lg x 2  ln x 4
7.5  cos   2.3
11. Y 
13. Y 
15. Y 
5 x 2  2  ln x 6  sin 
2 cos 3   1.7
  tg 3   2  x
 2  cos 4    4
6. Y 
8. Y 
sec 2   cos 2 
2e
2  ln x 4  5  tg 3
12. Y 
14. Y 
2  sin 2   ln x 2
19
 1.3ctg
b 3  7  tg   
10. Y 
3a 2  cos   tg 3 
 
5 cos   arctg 3 
e  a 2  b 2
2  cos 3   e 
ctg 2   
e x  ln x 2  3.8
ctg 3 x  cos 
Задание 3. Вычислить для своего варианта f, задав значения переменным
1
1. f 
2. f 
1
1
t3
y
1
tx
3,2 x  t 2
9x

3. f  2
x  y t
y 5
x y
y

3 x2  4  
t

x
4. f 
4,8  x 
1
  y3
2 
2
 10  t 
3
5. f  
6. f 
1
1

3
4t  x 2,4  y
7. f 
t  yx
9. f 
13. f  
15. f
1  y 2
4

x  9t 

y  15,6

y5
9t

4
8,3  x  x

  9 
y

3
4
y
9x

10. f   t    3
3
x  0,5

t4
1

11. f 
4,9  x  yt  14
 t 


 x  5
2,8 x  t 
x  t  y  3 
t

1 2
 3,8  y 
8. f  
  x
2
 2t 
x
2
3
  t  y 
2
3
2 x
29 x 2
x4

4
12. f 
3
14. f 
t
x y  x 
3
4

1 2
xy
2
8t 8,8 x  t 

18  y
x4
2
x
4  t3
Технология выполнения работы
1. Разработать алгоритм для написания программы в виде блок-схемы.
2. Написать программу.
3. Протестировать ее с разными исходными данными.
Содержание отчета
1. Цель работы, условие задачи
2. Алгоритм в виде блок-схемы.
3. Исходный текст программы.
4. Вводимые данные и результаты.
5. Фрагменты экрана с диалоговыми окнами Excel.
6. В программе значение одной из переменных должно быть записано в
ячейке электронной таблицы.
20
7. Значение другой переменной задается в программе или вводится с
помощью окна-диалога.
8. Все типы переменных и констант, которые используются в программе,
должны быть объявлены и отражать смысловое значение переменных или
констант.
9. Результат работы программы должен иметь наглядный вид.
10. Для запуска макроса создать кнопку с соответствующей надписью.
1.
2.
3.
4.
5.
6.
7.
8.
9.
Вопросы для защиты работы
Какие встроенные типы данных вы знаете?
Как описываются переменные?
Как объявляют константы?
Какие операции языка VBA вы знаете?
Какие операторы языка VBA вы знаете?
Перечислите операторы управления
Укажите операторы, используемые для ввода данных с рабочего листа.
Как заменить Arcsin в VBA?
Укажите формулу, которая заменит Arcctg в VBA.
21
ЛАБОРАТОРНАЯ РАБОТА № 3
VISUAL BASIC FOR APPLICATIONS (VBA).
УСЛОВНЫЕ АЛГОРИТМЫ
Время выполнения – 6 часов.
Цель работы
Научиться использовать язык программирования Visual Basic for
Applications (VBA) для разработки модулей в Excel на основе условных
алгоритмов.
Задачи лабораторной работы
После выполнения данной работы студент должен знать и уметь:
 знать все операторы, используемые в программах;
 уметь применять любые из изученных операторов для написания своих
модулей;
 уметь объяснить написанную программу.
Перечень обеспечивающих средств
Для обеспечения выполнения работы необходимо иметь компьютер со
следующим математическим обеспечением: операционная система Windows XP,
электронные таблицы Excel с приложением в виде языка Visual Basic for
Applications.
Общие теоретические сведения
VBA – это язык объектно-ориентированного программирования.
Основными парадигмами являются объект, свойство, метод, событие,
класс и семейство объектов.
Объект – это инкапсуляция данных вместе с кодом, предназначенным для
их обработки.
Семейство – объект, содержащий несколько других объектов того же
типа.
Классы – это проект, на основе которого будет создан объект, т.е. класс
определяет имя объекта, его свойства и действия, над ним выполняемые. А
каждый объект, свою очередь, является экземпляром класса.
Методы – это действия, выполняемые над объектом.
Свойства – это атрибут объекта, определяющий его характеристики:
размер, цвет, положение на экране или состояние (доступность, видимость).
События – это действия, распознаваемые объектом.
Пример 1.
Написать программу вычисления функции пользователя.
𝑥 + 𝑦 , если 𝑥 > 0 и 𝑦 > 1
𝑧= {
𝑥 / 𝑦 , если 𝑥 ≤ 1 и 𝑦 <> 0
22
Предусмотреть сбойную ситуацию (при y = 0) и в этом случае выдать
сообщение об ошибке.
Запись программы в виде блок-схемы (рис. 1) и визуальное представление
ввода данных и вывода результата (рис. 2):
Рисунок 1 – Блок-схема решения задачи
Программный код
Function z (x, y)
If y = 0 Then
z = "Ошибка! На ноль делить нельзя!"
ElseIf x > 0 And y > 1 Then
z = x + y
ElseIf x < = 1 And y <> 0 Then
z = x / y
End If
End Function
23
Рисунок 2 – Ввод исходных данных в процессе выполнения программы
Пример 2.
Написать программу вычисляющую значение Z
(𝑥 − 𝑦)𝑥 , если 𝑥 > 0.1 и 𝑦 > 0.1
𝑧 = { sin(𝑥) , если 𝑥 < 0.1 и 𝑦 < 0.1
𝑥 2 / 𝑦 , если 𝑥 = 0.1 и 𝑦 = 0.1
Программный код
Sub Условия()
Dim x, y, Z As Double
x = Range("A2").Value
y = Range("B2").Value
If x > 0.1 And y > 0.1 Then
Z = (x - y) ^ x
ElseIf x < 0.1 And y < 0.1 Then
Z = Sin(x)
ElseIf x = 0.1 And y = 0 Then
If y = 0 Then
MsgBox "Ошибка! Деление на ноль!"
Else: Z = (x * x) / y
End If
End If
Cells(2, 4).Value = Z
End Sub
24
Рассмотрим результат работы программы при разных значениях x и y
(рис. 3, 4, 5).
Рисунок 3 – Результат вычисления функции y= sin(x) при x<0.1 и y<0.1
Рисунок 4 – Результат вычисления функции y= (x - y)x при x>0.1 и y>0.1
Рисунок 5 – Результат вычисления функции y=x2/y при x=0.1 и y=0
Варианты заданий
Задание 1. Составить блок-схему и написать программу вычисления
функции пользователя
(𝑥 − 𝑦)2 , если 𝑥 > 0.1 и 𝑦 > 0.1
1. 𝑧 = { sin(𝑥) , если 𝑥 < 0.1 и 𝑦 < 0.1
𝑥 2 / 𝑦 , если 𝑥 = 0.1 и 𝑦 = 0.1
| − 𝑥 + 1|2 , если 𝑥 ≤ 0.3
2. 𝑦 = {sin3 (𝑥) − 𝑐𝑜𝑠 2 (𝑥 − 3), если 𝑥 ∈ [0.3 ; 0.9]
𝑥 4 / 2𝑒 𝑥 , если 𝑥 ≥ 0.9
|𝑣| − 2 , если 𝑣 ≤ 0
3. 𝑡 = {1 / sin(3𝑣), если 𝑣 ∈ [0 ; 1]
3𝑣 3 + 𝑒 2𝑣+1 , если 𝑣 ≥ 1
25
|𝑥 + 1| + 𝑒 3𝑥 , если 𝑥 ≤ −1
4. 𝑔 = {−2x / sin(𝑥 + 3), если 𝑥 ∈ [−1 ; 1]
𝑥 3 + 2|cos(3𝑥)| , если 𝑥 ≥ 1
𝑧 ∗ 𝑥 2 , если 𝑥 < 0 и 𝑧 < 0
5. 𝑦 = {√𝑧 2 + 𝑥 2 , если 𝑥 > 0 и 𝑧 > 0
100 в остальных случаях
𝑎2 + 𝑐 2 ∗ 𝑥 , если 𝑥 ≥ 0 и 𝑎 ≥ 0 и 𝑐 ≥ 0
6. 𝑞 = { 𝑐 2+𝑥 2
, если 𝑥 < 0 и 𝑎 < 0 и 𝑐 < 0
𝑎
𝑧 3 , если 𝑧 ≤ 1
7. 𝑔 = { 1 / z , если 𝑧 ∈ [−1 ; 2]
√𝑧 + 1 − 𝑒 5𝑧 , если 𝑧 ≥ 2
1
|𝑎+sin(𝑎)|
, если 𝑎 < 0
8. 𝑝 = {
0 , если 𝑎 = 0
−𝑎 + √3sin(𝑎) , если 𝑎 > 0
𝑒 𝑏 + 7𝑏 3 , если 𝑏 ≤ 4
9. 𝑝 = {1.8 / sin3 (b2 ), если 4 < 𝑏 < 6
|6 − (𝑏 − 2)3 | , если 𝑏 ≥ 6
𝑧 + 4|𝑡 3 |sin(𝑡) , если 𝑡 < 0 и 𝑧 < 0
10. 𝑦 = {√𝑧 2 + 3cos(𝑡 2 ) , если 𝑡 > 0 и 𝑧 > 0
1 в остальных случаях
|−𝑥| − 3 sin(𝑥 3 ) , если 𝑥 < 1.3
11. 𝑓 = {1.3x / (sin(x + 1) + cos 2 (x)), если 𝑥 = 1.3
(𝑥 − 1.1) / 𝑒 −2𝑥+1 , если 𝑥 > 1.3
|𝑐𝑜𝑠 2 (2𝑏) − 3𝑏 3 |, если 𝑏 ≤ −2
12. 𝑠 = {8√b + 1 / sin(3 + b2 ) , если − 2 < 𝑏 < 2
(𝑏 + 2)4 + 6𝑏 , если 𝑏 ≥ 2
|𝑥 − 2| − 5𝑥 3 , если 𝑥 < 1.4
13. 𝑤 = { 1.3 sin(3x) , если 𝑥 = 1.4
𝑐𝑜𝑠 2 (𝑥) + 𝑒 −2𝑥+1 , если 𝑥 > 1.4
𝑥 + 𝑦𝑒 𝑥 , если 𝑥 < 0 и 𝑦 < 0
14. 𝑧 = {√sin(𝑥) 𝑐𝑜𝑠(𝑦), если 𝑥 ≥ 0.1 и 𝑦 ≥ 0.1
𝑦 3 − 𝑥 в остальных случаях
26
𝑧 2 + cos(2𝑧) , если 𝑧 ≤ 0.8
15. 𝑠 = {−2z|sin(z)| , если 𝑧 ∈ [0.8 ; 2]
√𝑧 + 7 / 𝑒 4−𝑧 , если 𝑧 ≥ 2
Задание 2. Составить блок-схему и функцию пользователя согласно
условию задачи.
1. Составить блок-схему и функцию пользователя для определения премии
торговому агенту от суммы совершенной им сделки. Если объем сделки до 3000
рублей, то премия 1.5 %; если объем до 10000, то – 3 %; если выше 10000, то –
5 %. Предусмотреть проверку корректности данного «объем сделки».
2. Составить блок-схему и разработать функцию пользователя для
вычисления годовой процентной ставки контракта по кредиту, взятого на
определенный срок при известных сумме долга и сумме, подлежащей возврату.
Используйте формулу:
𝑆−𝑃
𝐼=
,
𝑃𝑇
где P – сумма кредита, S – сумма, подлежащая возврату, Т – срок кредита.
Предусмотреть проверку корректности данных.
Для проверки и отладки программы используйте следующие исходные
данные: Т = 4 месяца, Р = 200 000, S = 210 000.
3. Составить блок-схему и разработать функцию пользователя для
вычисления надбавки к стипендии по результатам сессии. Размер стипендии
составляет 2 МРОТ (минимальный размер оплаты труда). Если три экзамена
сданы на "5", то надбавка составляет 50 %, если есть одна "4" (при остальных
"5"), то надбавка составит 25 %, если есть хотя бы одна "2", то стипендия не
назначается, т. е. равна "0".
4. Составить блок-схему и разработать функцию пользователя для расчета
суммы вклада с начисленным процентом в зависимости от вида вклада:
до востребования – 2 %, праздничный – 5 %, срочный – 3 %.
Для проверки и отладки программы используйте данные для всех видов
вкладов.
5. Составить блок-схему и разработать функцию пользователя для расчета
реальной доходности с учетом налога на прибыль, которая вычисляется по
формуле:
𝑖(1−𝑔)−ℎ
𝑌=
.
1+ℎ
где i – годовая процентная ставка, g - налог на прибыль, выраженный в
процентах, h - годовой темп инфляции, вычисляемый по формуле:
h=(1+h1/12)12- 1, где h1/12 – месячный темп инфляции.
Предусмотреть проверку корректности данных.
Для проверки и отладки программы используйте следующие исходные
данные: i =60 %, h1/12 =3 %, g =25 %.
6. Составить блок-схему и разработать функцию пользователя расчета
надбавки к окладу в зависимости от стажа работы сотрудников предприятия.
27
Если стаж работы меньше 5 лет, то надбавка составляет 0 %, если стаж от 5 до
10 лет, то надбавка – 5 %, если стаж больше 10 лет, то надбавка – 10 %.
7. Составить блок-схему и разработать функцию пользователя определения
комиссионных менеджеру по продажам от объема проданного товара. Если
объем продажи до 8 000 рублей, то комиссионные 6 %; если объем до 16 000
рублей, то – 8 %; если объем до 32 000 рублей, то – 10 %; если выше 32 000, то
– 12 %. Для обозначения ограничений объема продажи используйте константы.
8. Составить блок-схему и разработать функцию пользователя для расчета
премиальных, выплачиваемых рабочему, размер выплаты которых определяется
в зависимости от оклада и процента перевыполнения нормы выработки:
 Ниже 100% - премия не назначается, т. е. равна нулю,
 100%
- премия 20% от оклада,
 101-110%
- премия 30% от оклада,
 Выше 110% - премия 40% от оклада.
9. Составить блок-схему и разработать функцию пользователя,
определяющую площадь треугольника по его сторонам по следующей формуле:
𝑆 = √𝑝(𝑝 − 𝑎)(𝑝 − 𝑏)(𝑝 − 𝑐) ,
где a, b, c – стороны треугольника, р – полупериметр:
𝑎+𝑏+𝑐
𝑝=
.
2
Предусмотреть проверку корректности данных.
10. Составить блок-схему и разработать функцию пользователя
возвращающую большее из трех значений с указанием имени переменной.
11. Составить блок-схему и разработать функцию пользователя
возвращающую меньшее из трех значений с указанием имени переменной.
12. Составить блок-схему и разработать функцию пользователя,
возвращающую сумму первой и третьей по величине значений.
13. Составить блок-схему и разработать функцию пользователя,
вычисляющую стоимость потребляемой энергии компанией в зависимости от
установленной расценки и количества потребляемой энергии:
 Первые 240 кВт/час: 1,62руб. за кВт/час,
 Следующие 300 кВт/час: 2,10руб. за кВт/час,
 Свыше 540 кВт/час: 2,76руб. за кВт/час.
Для обозначения тарифов в процедуре использовать константы.
14. Составить блок-схему и разработать функцию пользователя начисления
премии сотрудникам малого предприятия в зависимости от стажа работы и
объема продажи товаров. Если стаж работы меньше 2 лет и объем продажи
больше 80 000руб., то премия составляет 1.5 %. Если стаж от 2 до 5 лет, а объем
продажи больше 100 000 руб., то премия – 5 %, если стаж больше 5 лет, а объем
продажи выше 100 000 руб., то премия – 7 %, в остальных случаях - премия –
1%.
15. Составить блок-схему и разработать функцию пользователя начисления
процента удержания у работников завода от начисленной заработной платы и
количества иждивенцев по следующему правилу:
 при количестве иждивенцев более трех – 0 %;
28




при трех иждивенцев – 5 %;
при двух иждивенцев – 10 %;
при одном иждивенце – 12 %;
если нет иждивенцев – 14 %.
Технология выполнения работы
1. Разработать алгоритм для написания программы в виде блок-схемы.
2. Написать программу.
3. Протестировать ее с разными исходными данными.
Содержание отчета
1. Цель работы, условие задачи
2. Алгоритм в виде блок-схемы.
3. Исходный текст программы.
4. Вводимые данные и результаты.
5. Фрагменты экрана с диалоговыми окнами Excel.
6. В программе предусмотреть сбойные ситуации (деление на ноль,
извлечение квадратного корня из отрицательного числа и т. д.).
7. Результат работы программы должен иметь наглядный вид.
Вопросы для защиты работы
1. Какая конструкция у оператора повтора?
2. Какие операторы разветвления Вы знаете?
3. Чем заканчивается оператор IF, если в ветке «да» несколько
операторов?
4. Как выглядит полная форма оператора IF?
5. Как выглядит оператор IF, если в ветке «нет» отсутствуют операторы?
29
ЛАБОРАТОРНАЯ РАБОТА № 4
VISUAL BASIC FOR APPLICATIONS (VBA).
ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ. РАБОТА С МАССИВАМИ
Время выполнения – 8 часов.
Цель работы
Научиться использовать язык программирования Visual Basic for
Applications (VBA) для разработки модулей в Excel на основе циклических
алгоритмов.
Задачи лабораторной работы
После выполнения данной работы студент должен знать и уметь:
 знать все операторы, используемые в программах;
 уметь применять любые из изученных операторов для написания своих
модулей;
 уметь объяснить написанную программу.
Перечень обеспечивающих средств
Для обеспечения выполнения работы необходимо иметь компьютер со
следующим математическим обеспечением: операционная система Windows XP,
электронные таблицы Excel с приложением в виде языка Visual Basic for
Applications.
Общие теоретические сведения
VBA – это язык объектно-ориентированного программирования.
Основными парадигмами являются объект, свойство, метод, событие,
класс и семейство объектов.
Объект – это инкапсуляция данных вместе с кодом, предназначенным для
их обработки.
Семейство – объект, содержащий несколько других объектов того же
типа.
Классы – это проект, на основе которого будет создан объект, т.е. класс
определяет имя объекта, его свойства и действия, над ним выполняемые. А
каждый объект, свою очередь, является экземпляром класса.
Методы – это действия, выполняемые над объектом.
Свойства – это атрибут объекта, определяющий его характеристики:
размер, цвет, положение на экране или состояние (доступность, видимость).
События – это действия, распознаваемые объектом.
Пример 1.
В массиве чисел М(10) очистить клетки с нулевыми значениями.
30
Запись программы в виде блок-схемы (рис. 1) и визуальное представление
ввода данных и вывода результата (рис. 2):
Рисунок 1 – Электронная таблица с исходными данными
Блок - схема
Программа
Sub ОбнулениеКлетокС_НулевымиЗначениями()
For i = 1 To 10
If Cells(i, 1) = 0 Then Cells(i, 1).Clear
Next i
End Sub
Рисунок 2 – Результат работы программы
31
Пример 2.
Выявить, есть ли в массиве число 10? Если есть, на каком месте оно стоит
(известно, что число может встретиться несколько раз).
Программный код
Sub
Dim
Dim
i =
k =
A =
For
Число()
A As Variant
i, k As Integer
1
0
Range("A1:A10")
i = 1 To 10
If A(i, 1) = 10 Then
MsgBox ("Номер ячейки, содержащей число 10 - " & i)
k = k + 1
End If
Next i
MsgBox ("Число 10 встретилось следующее количество раз - " & k)
End Sub
Пример 3.
ix
n
Вычислить произведение ряда:
 2i  1
i 1
Программный код
Sub Main()
Dim x, n, res As Double
x = 3
n = 4
res = 1
For i = 2 To n
res = res * (i * x / (2 * i - 1))
Next i
MsgBox "res=" & CStr(res)
End Sub
Private Sub CommandButton4_Click()
Dim x, n, res As Double
x = Cells(36, 1)
n = Cells(36, 2)
res = 1
For i = 2 To n
res = res * (i * x / (2 * i - 1))
Next i
Cells(38, 2) = res
End Sub
32
Визуальное представление ввода данных и вывода результата (рис. 3):
Рисунок 3 – Результат работы программы
Пример 4.
Найти максимальное значение из значений элементов последовательности
x1, x2, …, x20 (одномерного массива), используя оператор do while…loop
Программный код
Private Sub CommandButton5_Click()
Dim x(20) As Double
Dim res, res1 As Double
i = 1
res = 0
Do While i < 20
x(i) = Cells(44 + i, 1)
If x(i) > res Then res = x(i)
i = i + 1
Loop
Cells(47, 4) = res
End Sub
Визуальное представление ввода данных и вывода результата (рис. 4):
Рисунок 4 – Результат работы программы
33
Пример 5.
Задан двумерный массив F(4 to 85, 2 to 6). Найти сумму элементов этого
массива.
Программный код
Private Sub CommandButton1_Click()
Dim f(6) As Integer
For j = 4 To 8
res = 0
For i = 2 To 6
f(i) = Cells(j, i)
res = res + f(i)
Next i
Cells(j, 7) = res
Next j
End Sub
Пример 6.
Найти в процедуре сумму в каждом столбце.
Программный код
Sub kol(ByRef x() As Integer, ByVal
Integer)
Dim i, j, k(2) As Integer
For j = 0 To m
k(j) = 0
For i = 0 To n
k(j) = k(j) + x(i, j)
Next i
MsgBox "k(j)=" & CStr(k(j))
Next j
End Sub
Sub commandbutton1_click()
Dim i, j, n, m, x(4, 2) As Integer
Dim k(2) As Integer
n = 4
m = 2
For i = 0 To n
For j = 0 To m
x(i, j) = Cells(i + 1, j + 1)
Next j
Next i
kol x, n, m
End Sub
n
As
Integer,
ByVal
m
As
Пример 7.
В процедуре найти сумму элементов 1 и 3 строки и записать их на место
элементов 1 строки.
Программный код
Sub kol(ByRef x() As
Integer, k() As Integer)
Dim i, j As Integer
Integer,
34
ByVal
n
As
Integer,
ByVal
m
As
For j = 0 To m
x(1, j) = x(1, j) + x(3, j)
Next j
End Sub
Sub commandbutton1_click()
Dim i, j, n, m, x(4, 4) As Integer
Dim k(2) As Integer
n = 4
m = 4
For i = 0 To n
For j = 0 To m
x(i, j) = Cells(i + 1, j + 1)
Next j
Next i
kol x, n, m, k
For j = 0 To m
For i = 0 To n
Cells(i + 7, j + 1).Value = x(i, j)
Next i
Next j
End Sub
Варианты заданий
Задание 1. Разработать алгоритм решения задачи и составить программу
согласно варианта.
1. Определить порядковые номера нулей в массиве.
2. Все отрицательные элементы массива заменить нулями. Выдать
сообщение о количестве таких замен.
3. Найти порядковый номер минимального числа в массиве.
4. Найти значение и координаты первого по порядку положительного
элемента в массиве.
5. Найти количество единиц в массиве.
6. Каких чисел в массиве больше: положительных или отрицательных?
(массив может содержать нулевые значения).
7. Исходные данные: В таблице 10 строк. Первый столбец – фамилия
работника, второй – стаж работника.
8. По стажу работника определить, к какой группе он относится, если 1
группа – стаж до 3-х лет, 2 группа – до 5 лет, 3 группа – до 10 лет, 4 группа –
свыше 10 лет.
9. Найти сумму диагональных элементов блока ячеек, состоящего из 5
строк и 5 столбцов.
10. Двадцати переменным массива присвоить одно и то же значение,
равное наибольшему из них.
11. Дан массив чисел. В клетке С1 записано некоторое число. Определить
порядковый номер этого числа в массиве. Если в массиве такого числа нет,
выдать об этом сообщение.
12. Просуммировать положительные и отрицательные числа в массиве.
Записать полученные суммы в ячейки В1 и В2. (в массиве могут быть нулевые
значения).
35
13. В клетку А1 записать число, если количество положительных элементов
массива больше количества отрицательных. В противном случае записать в
клетку А1 любой текст.
14. Найти сумму положительных элементов массива, имеющих индекс 3, 5,
7 и т.д.
15. В блоке ячеек записана матрица чисел. Ячейки с отрицательными
значениями закрасить синим цветом, с положительными – красным, с нулями –
желтым.
Задание 2. По заданным значениям a, x и n найти сумму ряда.
sin( i  x)
1. 
2i  1
i 1
ix
9.  2
i 1 i
cos(i  1)
2. 
2i  1
i 1
n
n
n
n
xi

2
i 1 i
n
3.
x n 1
4. 
i 1 i  1
10.
5.
 cos(i * x)
i 1
i 1
i 1
xi
xi
11. 
i 1 i  1
n
n
n
n

12.
cos( 2i  x)
 (2i  1)  (2i  1)
i 1
( x  1) 2i 1
13. 
2i  1
i 1
n
xi
6. 
i 1 i  (i  1)
i  xi
14. 
i 1 i  1
xi
7. 
i 1 i  (i  1)
x n 1
15. 
i
i 1
n
n
n
8.

i 1
n
n
xi
i
Задание 3. Решить задачу для своего варианта на одномерный массив
двумя способами: с данными на рабочем листе и вводимыми по тексту
программы.
1. Вычислить сумму элементов, стоящих на чётных местах в
последовательности х (20), используя оператор цикла do_loop until
2. Вывести на печать номера элементов, попавших в диапазон (а, b) для
последовательности а(30), используя оператор цикла for_next.
3. Вывести на печать количество элементов массива А1, А2, … А20,
попавших в интервал [2, 5] и их сумму, используя оператор цикла do_loop while.
4. Вывести на печать номера элементов последовательности Х(20),
значения которых равны заданному числу С, используя оператор цикла for_next.
36
5. Вычислить произведение элементов, стоящих на четных местах в
последовательности Х(20), используя оператор цикла do while_loop.
6. Найти количество элементов последовательности А(20), значения
которых равны нулю, используя оператор цикла do_loop until.
7. Вывести на печать номера и значения положительных элементов
последовательности Х(20), используя оператор цикла do until_loop.
8. Вывести на печать номера с отрицательными значениями элементов для
последовательности Х(20), используя оператор цикла for_next.
9. Найти
минимальное
значение
из
значений
элементов
последовательности А1, А2,…, А20, используя оператор цикла do_ loop while.
10. Найти
минимальное
значение
из
значений
элементов
последовательности Х1, Х2, … Х20, используя оператор цикла do_loop until.
11. В последовательности Х(20) вывести на печать номера элементов,
значения которых равны t, используя оператор цикла do until_loop.
12. Найти количество отрицательных элементов в массиве С1, С2,…, С20,
используя оператор цикла do until_loop.
13. Дана последовательность Х(10). Найти сумму отрицательных элементов
и вывести на печать номера этих элементов, используя оператор цикла do_loop
while.
14. Вычислить произведение элементов, стоящих на нечетных местах в
последовательности Х(20), используя оператор цикла do while_loop.
15. Дана последовательность Х1, Х2, …, Х20. Заменить в ней
отрицательные значения элементов на их квадраты. Вывести на печать
полученную последовательность, используя оператор цикла do while_loop.
Задание 4. Решить задачу для своего варианта на двумерный массив двумя
способами: с данными на рабочем листе и вводимыми по тексту программы.
1. Задан массив А(6,5). Найти номер строки и номер столбца с
минимальным значением.
2. Задан массив А(4,5). Найти минимальное значение.
3. Задан массив х(5,5). Найти сумму отрицательных значений в каждой
строке.
4. Задан массив х(5,5). Найти сумму положительных значений в каждом
столбце.
5. Задан массив с(5,5) и число а. Найти количество элементов, равных по
значению а.
6. Задан массив с(5,5) и число а. Найти сумму элементов, равных по
значению а.
7. Задан массив х(5,5) и число а. Найти номера строк и столбцов
элементов, равных по значению а.
8. Задан массив х(5,5) и интервал (а,b). Найти номера строк и столбцов
элементов, попавших по значению в этот интервал.
9. Задан массив х(5,5) и интервал х[а,b]. Найти количество элементов,
попавших по значению в этот интервал.
37
10. Задан массив х(5,5) и интервал х[а,b]. Найти сумму элементов,
попавших по значению в этот интервал.
11. Задан массив А(6,4). Найти номер строки и номер столбца с
максимальным значением.
12. Задан массив А(4,5). Найти максимальное значение.
13. Задан массив А(6,3). Найти номер строки и номер столбца с
максимальным значением в каждом столбце.
14. Задан массив А(5,5). Найти номер строки и номер столбца с
максимальным значением в каждой строке.
15. Задан массив А(4,5). Найти максимальное значение в каждой строке.
Задание 5. Решить задачи по условию 3 и 4 задания с использованием
подпрограмм.
Технология выполнения работы
1. Разработать алгоритм для написания программы в виде блок-схемы.
2. Написать программу.
3. Протестировать ее с разными исходными данными.
1.
2.
3.
4.
5.
6.
Содержание отчета
Цель работы, условие задачи
Алгоритм в виде блок-схемы.
Исходный текст программы.
Вводимые данные и результаты.
Фрагменты экрана с диалоговыми окнами Excel.
Результат работы программы должен иметь наглядный вид.
Вопросы для защиты работы
Как описываются массивы переменных?
Сколько операций цикла DO Вы знаете?
Как выглядит оператор цикла FOR?
Указать вид оператора DO, который выполняется, пока условие дает
1.
2.
3.
4.
истину.
5. Указать вид оператора DO, который выполняется, пока условие дает
ложь.
6. Можно ли прервать выполнение оператора FOR принудительно?
38
ЛАБОРАТОРНАЯ РАБОТА № 5
ВЫЧИСЛЕНИЯ В MATHCAD. ПОСТРОЕНИЕ ГРАФИКОВ ФУНКЦИЙ
Время выполнения – 2 часа.
Цель работы
Научиться выполнять вычисления по формулам в Mathcad, научиться
строить графики функций одной переменной.
Задачи лабораторной работы
После выполнения работы студент должен знать и уметь:
 знать основные приемы работы в Mathcad;
 уметь производить вычисления с использованием математических
формул;
 уметь строить графики функций одной переменной.
Перечень обеспечивающих средств
Для обеспечения выполнения работы необходимо иметь компьютер с
операционной системой MS Windows, установленное приложение РТС Mathcad
версии 14 или выше; методические указания по выполнению работы.
Общие теоретические сведения
Программа Mathcad является математическим редактором, позволяющим
проводить разнообразные научные и инженерные расчеты.
Она имеет ту же структуру, что и большинство программ Windows. Сверху
вниз располагается заголовок окна, строка меню, панели инструментов и
рабочая область документа (рис. 1).
Рисунок 1 – Пользовательский интерфейс Mathcad 14
39
Для того чтобы выполнить простые расчеты по формуле, необходимо
проделать следующее:
1) определить место в документе, где должно появиться выражение,
щелкнув мышью в соответствующей точке документа;
2) ввести левую часть выражения;
3) ввести знак равенства < = >.
Пример:
1
sin   0.247
4
ab
1
3
 2   0.874
3
 
 7.4
Для проведения расчетов потребуется инструмент Калькулятор (рис. 2).
Рисунок 2 – Панель инструмента Калькулятор
Для отображения Калькулятора нужно нажать кнопку с изображением
калькулятора на панели Math (рис. 3).
Рисунок 3 – Панель инструментов Math
При расчетах по формулам целесообразно использовать переменные. Для
задания значений переменных используется оператор присваивания: знаки
двоеточия и равно (:=)
Пример:
a := 5.6
b := 1.8
a + b = 7.4 a – b = 3.8
a
a · b = 10.08
= 3.111
b
√a = 2.366
3
√b = 1.216
Для задания математических функций можно использовать инструмент
Калькулятор; можно непосредственно набирать названия функций, используя
40
клавиатуру, а можно воспользоваться меню insert / function и вставить
необходимую функцию.
Для построения графиков функций необходимо использовать панель Graph
(рис. 4).
Рисунок 4 – Панель инструментов Graph
Для того чтобы панель Graph открылась, необходимо щелкнуть мышкой по
иконке с изображением графика на панели Math.
Графики функций можно строить следующими двумя способами:
1. С использованием автовыбора значений интервала построения и шага.
В данном случае в качестве аргумента функции необходимо задать переменную,
которая ранее не использовалась (рис. 5).
1
0.5
sin ( r )
0
 0.5
1
 10
5
0
5
10
r
sin(x)
Рисунок 5 – Построение графика функции
2. Задать в явном виде интервал, на котором будет построен график
функции и «шаг», то есть промежуток через который будут вычисляться
значения функции.
Задаем значения аргумента r, которые меняются от -2π до 2π с шагом 0.025
r := -2·π , -2·π + 0.025 .. 2·π
41
Строим графики функций (рис. 6):
1
0.5
sin ( r )
0
 0.5
1
 10
5
0
5
10
r
sin(x)
Рисунок 6 – Построение графика функции
Замечание: часть формулы (0.025 .. 2π) необходимо набирать с
использованием инструмента Range Variable (m .. n), расположенного на панели
Мatrix (рис. 7):
Рисунок 7 – Панель инструментов Matrix
Оформление текста и комментариев в Mathcad
Текстовую область можно разместить в любом незанятом месте документа
Mathcad. Чтобы до начала ввода указать программе, что требуется создать не
формульный, а текстовый регион, достаточно, перед тем как ввести первый
символ, нажать клавишу " (двойная кавычка). В результате на месте курсора
ввода появится новый текстовый регион, который имеет характерное
выделение:
Курсор принимает при этом вид вертикальной линии красного цвета,
которая называется линией ввода текста.
42
Варианты задания
Задание 1. Вычислить значения указанных функций для заданных
значений аргумента x.
Задание 2. Построить графики функций с использованием автовыбора
интервала построения и шага.
Задание 3. Построить графики функций на заданном интервале [-10, 10] с
указанным шагом h = 0.01.
№
варианта
1
Задание 1
Задание 2
Пусть х = 3.5
ye
y4
1
x 1
1
2x
2
 1 
y  cos2 tg 3  2 
x 
2
Пусть х = 3.5
 1 

y  sin  2

x

x


1
y  x2
e 1
 1 
y  sin 2 3 cos 2 
x 
3
Пусть х = 3.1
y  cos(ln x )
4
x 1
y  ln
1
x
y  ln(cos x)
ex
y
x
y  x  e -x
x
ln x
y  3 x 2 (x  1)
y  e -x
y
y
Пусть х = 3.5
y  x 2 ln 2 x
y  x 2e  x
x2  4
y  xe 2 x
1
y  tg 2
x
y  ln sin 7 cos x
y  7 arcsin x 
2
y  x  sin  x 
3x
x 2 1
5x 2
y  5 3 ln 2 x  1
1
y  sin 3
x

2
x3
y 2
x 4
y
3
Задание 3

y  (x  6)e
1
x2
43
y  x  cos  x 

1
x
5
Пусть х = 3.5
y  5arccos

x
y  tg arccos x


y  cos x  x x
6

Пусть х = -3.5
2 x
cos2 ( tg 3 x )
1
y  1  x 3 
sin 2 x
1

y  tg 2 (ln x )  x 2 
x

x
y
7
2
Пусть х = 0.5
x  sin x  x
tg (1  x )
tg (ln x )
y
ln(sin x )
y
4
3
2x  x 2
y
arccos2 ( tgx )
8
Пусть х = 3.5
y  arccos3 x
y  sin e x
2
y  3 cos(cosx )
y  3 sin 3 x  1
10
3 cos( x 3 )
Пусть х = 3.5
1
x 2
y  cos sin 3 cos x
y  arctg

y  9 sin x 
y  x ln x
y  x ln x
y  x  ex
y  x 2  ln x 2

-sin  x 
y
3x  7
(x 2  1) 2
ln 2 x
y
x
y  (3x  5) 6
ye
y  e3x (x  3)
ye
y e
Пусть х = 0.1
y4
y  x  ex
y  x  21x
y  arccos2x 2
9
y  2x 
 4arctgx
x4
y 3
x 2
y  x(x  3)
2
1
x2
x2
y
1  x2
(x  1) 2
y
x2
x2
y
3  x2
y  ln(1  x 2 )
3x  2
y
5x 2
y  x  ln x
1
x3
44
cos x 
y  x e
-sin  x 
11
Пусть х = 3.5
y5
12
yx
cos ( x 3 x ) 2
y  ln

y3
1
 5x 4
x
x  x2 x

y
1
2 x
cos3 ( tgx )
2
y  1  x 3 
cos x 
y  e x2
x2
y
1  x2
Пусть х = 3.5
x
y  xe
1
x
1
y  (3x  5) 6
x4
y 3
x 2
y  x 2 ln 2 x
y  sin(e x )
y  3 x 2 (x  1)
y  cos(e x )
sin 2 x
1

y  tg 2 (ln x )  x 2 
x

13
Пусть х = 3.5
2 x
cos2 ( tg 2 x )
1
y  1  x 3 
sin 4 x
1

y  tg (ln 3 x )  x 2 
x

x
y
14
2
Пусть х = 3.5
y  arctg 4

1
x2
Пусть х = 0.5

y  tg cos2 x
y  ln 3
y3

y  cos 2 x 2
y  x  sin(e x )
y  tg 3 x 2
y  cos sin 5 cos2 x
1
y  7 sin 3 x  2
x
15
y  cos3 x

x x x

y  arctg 2 e x
2
y  arccos2 2x 2
y  cos3 x 7

y  sine x
y  x  cos(e x )
5
y  arccos2 x 9
1
 5x
x3
Технология выполнения работы
В данной работе необходимо вычислить значения функций по заданным
значениям аргументов, используя инструмент Калькулятор, а так же построить
графики функций одной переменной, используя панель Graph.
45
Содержание отчета
1. Задание и цель работы.
2. Выполненные расчеты по формулам.
3. Графики заданных функций.
1.
2.
3.
4.
Вопросы для защиты работы
Как построить графики нескольких функций в одном окне?
Как изменить интервал на котором построен график функции?
Как набрать текст в Mathcad?
1

Вычислите: y  tg (ln 2 x )  x 2  при х = 1.5
x

46
ЛАБОРАТОРНАЯ РАБОТА № 6
ВЫЧИСЛЕНИЯ В MATHCAD. ЛИНЕЙНАЯ АЛГЕБРА
Время выполнения – 4 часа.
Цель работы
Научиться выполнять различные операции с векторами и матрицами;
решать системы линейных алгебраических уравнений; научиться строить
таблицы значений функции одной и двух аргументов.
Задачи лабораторной работы
После выполнения работы студент должен знать и уметь:
 знать основные приемы работы с матрицами и векторами в Mathcad;
 уметь решать системы линейных алгебраических уравнений;
 уметь строить таблицы значений функции одной и двух аргументов.
Перечень обеспечивающих средств
Для обеспечения выполнения работы необходимо иметь компьютер с
операционной системой MS Windows, установленное приложение РТС Mathcad
версии 14 или выше; методические указания по выполнению работы.
Общие теоретические сведения
Для работы с матрицами и векторами в Mathcad используется панель
Matrix (рис. 1).
Рисунок 1 – Панель инструментов Matrix
Открыть панель Matrix можно, щелкнув мышкой по изображению матрицы
на панели инструментов Math (рис. 2):
Рисунок 2 – Панель инструментов Math
Для того чтобы набрать матрицу нужной размерности необходимо
щелкнуть мышкой по изображению матрицы на панели Matrix, при этом
откроется диалоговое окно (рис. 3):
47
Рисунок 3 – Диалоговое окно Insert Matrix
В диалоговом окне следует указать количество строк матрицы (Rows) и
количество столбцов (Colums) матрицы, затем нажать OK. Далее в открывшемся
поле набрать необходимые числа.
Основные операции над матрицами и векторами
Пусть задана матрица
7 6 5 8


1 0 3 2

M 
9 3 1 0
5 4 3 2


T
1
Обратная матрица M , транспонированная матрица M , определитель
M вычисляются с помощью соответствующих инструментов на панели Matrix
M
1
 0.026

0.026

 0.154
 0.218

0.179
0.173 
0.321 0.179
0.071

0.327
0.077
0.423 
0.288 
0.026
0.026
0.346 
7

6
T
M  
5
8


1 9 5

0 3 4
3 1 3

2 0 2
|M| = -312
Ранг матрицы
rank(M) = 4
Размер матрицы может быть вычислен следующим образом:
Число строк:
rows(M) = 4
48
Число столбцов:
cols(M) = 4
Слияние матриц
Пусть
6 8 1

7 6 4
B  
1 4 5


 4 7 9  A   5 0 3 
C  

5 7 8
3 0 2
Тогда слияние матриц слева направо выполняется следующим образом:
4 7 9 6 8 1

3 0 2 7 6 4
augment ( C B)  
Слияние матриц сверху вниз:
1
5

stack( A B)   5
6

7
4 5

0 3

7 8
8 1

6 4
Выделение отдельных элементов, строк, столбцов матрицы
При выполнении операций нужно учитывать, что строки и столбцы
нумеруются начиная с нуля.
1
1
 0  
T
 0  

A   4 
A  5
 
 
A1 1  0
A0 1  4
5
5
Для выделения подматрицы используется функция submatrix(A, ir, jr, ic, jc),
которая возвращает часть матрицы А, находящуюся между строками ir, jr и
столбцами ic, jc включительно.
1 4

5 0
submatrix( A 0 1 0 1)  
Действия над векторами
Модуль вектора вычисляется с помощью инструмента |x| , расположенного
на панели Калькулятор (не путать с аналогичным обозначением на панели
Matrix, предназначенном для вычисления определителя матрицы).
Пример.
4
1
r   2  r1   2 
 
 
3
3
 
|r| = 3.74165739
49
Размерность вектора:
length(r) = 3
Скалярное и векторное произведение
 0 
r  r1   9 
 
 6 
r r1  17
Создание таблицы значений функции одной переменной
Для того чтобы построить таблицу значений функции в Mathcad
необходимо выполнить следующие действия:
1) задать функцию;
2) задать границы интервала [a, b] на котором будут рассчитываться
значения функции;
3) задать количество точек разбиения интервала [a, b];
4) вычислить вектор значений аргумента функции в точках разбиения;
5) вычислить вектор значений функции, соответствующий вектору
значений аргумента.
Пример.
Задание функции:
2
𝑓(𝑥): = 𝑒 −𝑥 .
Задание границ диапазона:
a := -10;
b := 10.
Задание числа точек разбиения, включая граничные точки (>=2):
n := 20.
Вычисление вектора значений аргумента:
r  a a 
ba
 b
n1
.
50
r 
-10
-8.94736842
-7.89473684
-6.84210526
-5.78947368
-4.73684211
-3.68421053
-2.63157895
-1.57894737
-0.52631579
0.52631579
1.57894737
2.63157895
3.68421053
4.73684211
...
Вычисление вектора значений функции:
f ( r) 
0
0
0
0
2.77533332·10-15
1.80070418·10-10
1.27392585·10-6
9.82698935·10-4
0.08265543
0.7580482
0.7580482
0.08265543
9.82698935·10-4
1.27392585·10-6
1.80070418·10-10
...
Матрица значений функции двух переменных строится аналогично.
Пример.
Задание функции:
f(x,y) := sin(x,y)
Задание границ прямоугольника по оси ох:
xa := -2·π;
xb := 2·π .
Задание границ прямоугольника по оси оу:
51
ya := -π;
yb := π .
Задание числа точек разбиения по оси ох, включая граничные точки (>=2):
xn := 40.
Задание числа точек разбиения по оси оу, включая граничные точки (>=2):
yn := 20.
Расчет значений индексов i, j:
i := 0 .. xn – 1;
j := 0 .. yn – 1.
Расчет значений x(i) и y(j):
𝑥𝑏−𝑥𝑎
𝑥𝑖𝑖 ≔ 𝑥𝑎 + 𝑖 ·
;
𝑥𝑛−1
𝑦𝑖𝑖 ≔ 𝑦𝑎 + 𝑖 ·
𝑦𝑏−𝑦𝑎
𝑦𝑛−1
.
Матрица значений функции:
Mi,j := f(xii,yij)
0
M
1
2
3
4
5
6
7
0
0.777
-0.928
0.124
0.807
-0.908
0.075
0.836
-0.886
1
-0.122
-0.866
0.798
0.244
-0.988
0.526
0.578
-0.977
2
-0.906
-0.142
0.988
-0.431
-0.739
0.859
0.241
-0.999
3
-0.838
0.692
0.581
-0.908
-0.243
0.998
-0.129
-0.95
4
0.018
0.995
-0.178
-0.966
0.334
0.912
-0.482
-0.835
5
0.857
0.537
-0.83
-0.579
0.8
0.621
-0.768
-0.66
6
0.891
-0.333
-0.979
0.075
0.998
0.189
-0.949
-0.439
7
0.087
-0.947
-0.535
0.694
0.864
-0.285
-0.999
-0.187
8
-0.799
-0.837
0.232
0.994
0.441
-0.695
-0.912
0.078
9
-0.933
-0.085
0.859
0.836
-0.129
-0.949
-0.699
0.338
10
-0.191
0.731
0.966
0.292
-0.656
-0.988
-0.391
0.574
11
0.731
0.988
0.488
-0.386
-0.964
-0.804
-0.028
0.769
12
0.966
0.488
-0.285
-0.886
-0.95
-0.439
0.338
0.91
13
0.292
-0.386
-0.886
-0.978
-0.619
0.025
0.657
0.987
14
-0.656
-0.964
-0.95
-0.619
-0.082
0.483
0.887
0.994
15
-0.988
-0.804
-0.439
0.025
0.483
0.833
0.994
...
Решение систем линейных алгебраических уравнений
Приведем несколько методов решения систем линейных алгебраических
уравнений (СЛАУ) в Mathcad.
1. Метод обратной матрицы (для квадратных систем с невырожденной
матрицей).
Пусть задана СЛАУ
AX  B
Тогда вектор решения находится по формуле: X  A -1  B
2. Метод наименьших квадратов.
Пусть задана система уравнений: À mn  X n1  Bm1 , где m>n, т.е. число
уравнений больше числа неизвестных.
52
Умножим обе части матричного уравнения на транспонированную матрицу
системы. À T  A  X  A T B
Отсюда X  (A T  A) 1  A T  B
3. Символьный метод решения с помощью блока Given - Find (решение
системы будет найдено, если оно существует).
Пример.
Given
2·x + 3·y + 5·z + 4 = 0
4·x + 5·y + 7·z - 5 = 0
3·x + 8·y - 4·z - 1 = 0
140
𝐹𝑖𝑛𝑑(𝑥, 𝑦, 𝑧) →
−
11
257
44
105
−
( 44 )
Замечание: Знаки равенства < = > между левой и правой частью уравнений
необходимо ставить, используя панель Boolean (рис. 4).
Рисунок 4 – Панель инструментов Boolean
Любые «другие» знаки равенства, взятые с других панелей или набранные
с клавиатуры приведут к ошибке.
Задание
1. Вычислить определители матриц, найти матрицу обратную заданной,
найти ранги матриц, выделить из матриц заданные строки и столбцы.
2. Решить СЛАУ методом обратной матрицы и с помощью блока Given Find; решить СЛАУ методом наименьших квадратов.
3. Построить таблицы значений функций на заданном интервале [a, b] с
заданным количеством точек разбиения.
Варианты заданий
Задание 1.
а) вычислить определители;
б) найти матрицу обратную заданной, транспонировать матрицу;
в) найти ранги матриц; выделить из матриц вторую строку и третий
столбец.
53
№
варианта
1
Задание 1 а
Задание 1 б
Задание 1 в
1 2 2 4
1 6 0 5
1 2 1 3
 1 1 0 


 2 1 0
0 1 1


3 0 1 


2 5 3 
 1 4 1


7 9 7
 2


9 5 4
 6
 8 16 14 11


 4  2 4 3 


1 2 1 2
2 2 2 1
1 2 2 4
1 1 0 1
3 3
2
0
4
2 2 2 1
1 2 2 4
1 1 0 1
3 3
4
2
2
8
5
4
0
2 3 1


 3 4 2
 1 1 2


4
3 6
0 3
3 1
6 12  9 2
3
4
2
2
8
5
4
3 6
0 3
3 1
 4 3 0


 1 1 0
 0 0 1


6 12  9 2
6 2
3 0
3 1
4
9
8
4
7
1
2
9  3 12
7
6 2
3 0
3 1
7
1
2
9
8
4
9  3 12
0 0 1


1 5 1
1 4 2


7
4  4  1 12
2 3 2 6
2 2 1 4
6 6
3
13
54
 4 3 0


 1 1 0
 0 0 1


8 4
 2

9 5
 8
 10 17 9

  6 1 1






 1
0 0 1


1 5 1
1 4 2


0 8
 2

9 4
 6
 8
9 12

 4 9 4

6

3
9

3 
 1 2 1


 0 3 1
 0 2 1


3 7
 2

5 7
 4
 6
8 14

 2  2 0

4

2
6

2 
0
1
1
5
4  4  1 12
2 3 2 6
2 2 1 4
6 6
3
 1 2 1


 0 3 1
 0 2 1


13
4 2 1 4
2 2 3 3
 2 1 0 1
6 3 0 2
6
4 2 1 4
2 2 3 3
 2 1 0 1
1 1 2


 0 2 3
 0 1 2


6 3 0 2
 6 2 3 10
 3 1 1 4
3 1 0 3
9
7
3
0
3
0
 2 0 5


 3 1 5
 1 0 2


8
2 4 5 3
1 4 4 4
1 2 3 1
3 6 9 5
8
2 4 5 3
1 4 4 4
1 2 3 1
1 0 1


 2 2 3
 3 0 4


3 6 9 5
9
2 4
1 3
1 2
7
7
4
3
12 17
6
11
12
5
2 4
1 3
1 2
7
7
4
3
12 17
6
 2 1 0


 3 2 0
 3 2 1


11
12
5
6 2 1 4
3 3 4 2
3 1 0 1
9 3
0
  2 0 5


 3 1 5
 1 0 2


5
9
 2

7
6
 5
 7 12 15

3  2 3

6

3
9

3 
8
 6 2 3 10
 3 1 1 4
3 1 0 3
9
1 1 2


 0 2 3
 0 1 2


2 7 4 9


3 5 2 8
 5 12 6 17 


 1 2 2 1 


2
55
1 0 1


 2 2 3
 3 0 4


 2 6 5

6 4
 8
 10 12 9

 6 0 1

 2

 3
 3

 2 6

 4 5
 6 11

 2 1

3

3
6

0 
1 0

2 0
2 1 
9 1 

3 9 
12 10 

6  8 
 1 3 0


 1 2 0
 2 1 1


2 8 5 9


3 1 5 8
 5 9 10 17 


 1 7 0 1 


10
6 2 1 4
3 3 4 2
3 1 0 1
9 3
0
 1 3 0


 1 2 0
 2 1 1


  6 5  2


 3 3 1 
 1
1
2 

2 9 5 1


1 3 4 1
 3 12 9 2 


1 6 1 0


  6 5  2


 3 3 1 
 1
1
2 

3 0 1 


2 5 3 
 1 4 1


5 
 2 9 0


7 
 4 3 2
 6 12 2 12 


  2 6  2  2


2
2  4 4 11
1 9 2 6
1 2 1 4
3  6 3 11
11
2  4 4 11
1 9 2 6
1 2 1 4
3  6 3 11
2 2
1 7
1 1
2
4
1 1
1 3
8  3  3 10
12
2 2
1 7
1 1
2
4
1 1
1 3
8  3  3 10
8
4
4
6 5
5 2
3 2
12 9
13
8
4
4
6
6 5
5 2
3 2
12 9
6
6 4 4
3 3 2
3 2 3
 1  3 0


 1 4 0 
0
0 1 

9
4
3
6 4 4
3 3 2
3 2 3
 4  5

1 1
0
0 
9 1 

4 3 
13 4 

5  2 
11
9
4
3
  6  4  5


1 1
 1
 1
0
0 

11
5
6
4
9 6  9 11
14
 6

 1
 1

2 6

2 2
4 8

0 4

5
6
4
9 6  9 11
 1 0  1


 0 1  1
0  2 3 


4 14 5 12
2 10 0 6
2 7 1 4
6 21  3 13
56
1

0
0

 2

 4
 6

 2

 1

 1
 2 3 
6 3 3

5 5 3
11 8 6 

1  2 0 
0
1
 1 0 1


 0 2  3
 0 1 2 


 2 5 5 6


 7 4 3 2
 9 9 8 8


  5 1 2 4


15
4 14 5 12
2 10 0 6
2 7 1 4
6 21  3 13
 1 0 1


 0 2  3
 0 1 2 


 2 2 1 1
1 3 4 3
1 1 3 0
3 3
9
 2 0 5 


 1 1  5
 1 0  2


 2 9 9 8


 7 2 3 4
 9 11 12 12 


5 7 6 4 


2
Задание 2.
а) решить СЛАУ методом обратной матрицы и с помощью блока Given –
Find;
б) решить переопределенную СЛАУ методом наименьших квадратов.
№
варианта
1
2
3
4
5
Задание 2 а
Задание 2 б
 3x  6y  5z  t  0
 3x  4y  z  2t  1


 5x  4y  7z  8t  0
6x  10y  6z  5t  1
3x  5y  6z  3t  1
 x  y  3z  4t  0


3x  2y  4z  4t  1
 4x  y  9z  t  0
 3x  6y  5z  1
 3x  4y  z  2


 5x  4y  7z  8
6x  10y  6z  3
 3x  4y  7z  8t  1
 9x  5y  4z  5t  0


 x  2y  z  t  1
12x  y  11z  t  13
3x  6y  5z  4t  0
 4x  6y  4z  t  1


 2x  3y  z  3t  0
 7x  y  9z  t  15
 3x  2y  4t  0
 2x  3y  2z  t  1


x  5y  7z  3t  0
5x  y  2z  t  15
 3x  4y  7z  8
 9x  5y  4z  5


 x  2y  z  0
12x  9y  11z  13
3x  5y  6z  3
 x  y  3z  4


3x  2y  4z  4

4x  6y  9z  7
 3x  6y  5z  4
 4x  6y  4z  1


 2x  3y  z  3
7x  12y  9z  5
 3x  2y  4
 2x  3y  2z  1


 x  5y  7z  3
5x  5y  2z  5
57
6
3x  9y  8z  5t  0
 x  3y  3z  t  1


 2x  y  3z  t  0
4x  y  11z  t  16
 3x  9y  8z  5
 x  3y  3z  1


 2x  y  3z  1
4x  12y  11z  6
7
3x  5y  3z  4t  0
 x  7y  6z  6t  1


 3x  y  8z  6t  0

 4x  y  9z  t  10
 3x  5y  3z  4
 x  7y  6z  6


 3x  y  8z  6
4x  12y  9z  10
8
 3x  7y  5z  t  0
 x  2y  3z  t  1


3x  2y  6z  7t  0
 4x  y  8z  t  10
 3x  y  5z  t  1
 x  2y  z  4t  0


3x  2y  6z  5t  1
 4x  3y  z  t  15
 3x  7y  5z  1
 x  2y  3z  1


3x  2y  6z  7

4x  9y  8z  2
 3x  6 y  9z  t  1
 5x  6 y  6z  7t  0


 4x  4 y  6z  t  10
8x  12 y  z  2t  18
3x  5 y  4z  6t  16
 5x  4 y  6z  t  1


 3x  y  2z  t  0
8x  y  10z  2t  17
 3x  6 y  9z  1
 5x  6 y  6z  7


 4x  4 y  6z  1
8x  12 y  15z  8
 3x  5 y  z  8t  0
4x  3y  6z  6t  16


 3x  y  2z  5t  1
 7x  y  7 z  t  1
3x  6 y  5z  4t  0
 x  3y  4z  5t  15


 4x  3y  5z  2t  1
 4x  y  9z  9t  0
 3x  5y  z  8
 4x  3y  6z  6


 3x  y  2z  5
7x  8 y  7z  14
9
10
11
12
13
 3x  y  5z  1
 x  2y  z  4


3x  2y  6z  5
4x  3y  6z  5
 3x  5 y  4z  6
 5x  4 y  6z  1


 3x  y  2z  1
8x  9 y  10z  7
3x  6 y  5z  4
 x  3y  4z  5


4x  3y  5z  2

4x  9 y  9z  9
58
14
3x  5 y  3z  6t  16
 3x  6 y  7 z  t  0


5x  9 y  7 z  8t  18
 6x  y  10z  t  1
 3x  5y  3z  6
 3x  6 y  7z  1


 5x  9 y  7z  8
6x  11y  10z  7
15
3x  5y  3z  9t  19
 x  2 y  3z  5t  0


 7x  7 y  6z  5t  1
 4x  y  6z  t  1
 3x  5y  3z  9
 x  2 y  3z  5


 7x  7 y  6z  5
4x  7 y  6z  14
Задание 3.
Построить таблицу значений следующих функций на интервале [-10,10]
количество точек разбиения n = 50.
№
варианта
1
2
3
4
5
6
Задание 3
y  x  e -x
2
2
y  e -x
y  x  sin  x 
y  x  cos  x 
y  x  ex
y  x  ex
-sin  x 
7
ye
8
ye
cos x 
9
ye
cos x 
10
y  x e
11
y  xe
12
y  sin(e x )
y  cos(e x )
y  x  sin(e x )
y  x  cos(e x )
13
14
15
-sin  x 
cos x 
Технология выполнения работы
В данной работе необходимо произвести действия с векторами и
матрицами, используя панель Matrix, решить СЛАУ методами обратной
матрицы, наименьших квадратов, с помощью блока Given – Find, а так же
построить таблицы значений функций одной переменной, используя алгоритм
описанный выше.
59
Содержание отчета
1. Задание и цель работы.
2. Выполненные расчеты.
3. Таблицы значений заданных функций.
1.
2.
3.
4.
Вопросы для защиты работы
Как вычислить модуль вектора в Mathcad?
Как используя символьный процессор решить систему уравнений?
Как выделить строку заданной матрицы в Mathcad?
Как построить матрицу значений функции двух переменных?
60
ЛАБОРАТОРНАЯ РАБОТА № 7
ВЫЧИСЛЕНИЯ В MATHCAD. ДИФФЕРЕНЦИАЛЬНОЕ И ИНТЕГРАЛЬНОЕ
ИСЧИСЛЕНИЕ
Время выполнения – 2 часа.
Цель работы
Научиться с помощью численных методов и символьного процессора
Mathcad находить: пределы функций в точке и на бесконечности, производные
функций одной переменной и частные производные функций нескольких
переменных, разложения функций в ряд Тейлора - Маклорена, неопределенные
и определенные интегралы, суммы функциональных рядов, решения
обыкновенных дифференциальных уравнений первого порядка.
Задачи лабораторной работы
После выполнения работы студент должен знать и уметь:
 знать основные приемы вычисления пределов, производных,
интегралов, решения дифференциальных уравнений в Mathcad;
 уметь вычислять пределы функций в точке и на бесконечности;
 уметь находить производные функций одной переменной и частные
производные функций нескольких переменных, используя численные методы и
символьный процессор Mathcad;
 уметь выполнять разложение функций в ряд Тейлора - Маклорена;
 уметь вычислять неопределенные и определенные интегралы функций;
 уметь находить суммы функциональных рядов;
 уметь находить решение обыкновенных дифференциальных уравнений
первого порядка.
Перечень обеспечивающих средств
Для обеспечения выполнения работы необходимо иметь компьютер с
операционной системой MS Windows, установленное приложение РТС Mathcad
версии 14 или выше; методические указания по выполнению работы.
Общие теоретические сведения
Для вычисления пределов, производных, интегралов, сумм рядов в Mathcad
используется панель Calculus (рис. 1).
Рисунок 1 – Панель инструментов Calculus
61
Открыть панель Calculus можно, щелкнув мышкой по изображению интеграла
на панели инструментов Math (рис. 2).
Рисунок 2 – Панель инструментов Math
Вычисление пределов
Пример:
3
√𝑥−6+2
𝑥→−2 𝑥 3 +8
lim
→
1
144
Производные функций одной переменной
Пример 1 (символьный метод).
𝑑
𝑑𝑥
(𝑥 2 · sin(𝑥) · cos(𝑥)) → 𝑥 2 · 𝑐𝑜𝑠(𝑥)2 − 𝑥 2 · 𝑠𝑖𝑛(𝑥)2 + 2𝑥 · cos(𝑥) · sin(𝑥)
𝑑3
𝑑𝑥 3
(𝑥 2 · cos(𝑥)) → 𝑥 2 · sin(𝑥) − 6 sin(𝑥) − 6𝑥 · cos(𝑥)
t := 1
𝑑
𝑡
𝜋
(𝑡 · 𝑎𝑠𝑖𝑛 (𝑡+1)) → 6 +
𝑑𝑡
√3
6
Пример 2 (численный метод).
t := 1
𝑑
𝑡
(𝑡 · 𝑎𝑠𝑖𝑛 (𝑡+1)) = 0.812
𝑑𝑡
𝑑2
𝑑𝑡 2
(3𝑡 3 + 𝑡 + 1) = 18
Частные производные
Пример 1 (символьный метод).
𝑧(𝑥, 𝑦) ≔ 𝑥 2 · 𝑦 5

x
z( xy )  2 x y
 
y x

5
z( xy )  10 x y
2 4
y
4
z( xy )  5 x  y
2

2
x
z( xy )  2 y
62
5
 
x y
2

y
2
z( xy )  10 x y
4
2 3
z( xy )  20 x  y
Пример 2 (численный метод).
t := 1 w := 2
2
u( t w)  t  w
 
t w
7
u ( t w )  896
Примечание: Для того чтобы придать частным производным
соответствующий вид необходимо щелкнуть правой кнопкой мыши по
изображению производной в формуле и в открывшемся окне выбрать View
Derivative As / Partial Derivative.
Разложение функции в ряд Тейлора по степеням х в окрестности точки
х = 0 (ряд Маклорена)
Пример
2
 2 
3 3
3 3x
b
2
2
kxkx2 bbxxseries
sinsin
xx33 
x  kkxx2  b  x
series
 bb x
sin k x  b x series x2  b x  k x
2
 seriesxx44  bbx  kxx22  b x
sinsin
k xk x2 b xb xseries

2

2
sin k x  b x series x5  b x  k x 
66
3 3
b3 3x
2 2 k4 x4
b b k x
66
22

3 3
b x
6
2

4
b  k x
2
  b4 k2  b k2


 x  b 

120
6
3
 


5
Здесь в левой части выражения на первом месте стоит функция, которую
надо разложить в ряд (в данном случае sin(kx2+bx) ), далее следует слово series,
что означает разложение в ряд, после чего указывается переменная
относительно которой надо производить разложение в ряд (у нас это – х), затем
указывается количество членов разложения.
Примечание: слово series необходимо вставлять, используя панель
Symbolic (рис. 3).
Рисунок 3 – Панель инструментов Symbolic
Панель Symbolic можно открыть, щелкнув по изображению «шапочки» на
панели Math.
63
Неопределенный интеграл
Пример:


2
(
tan
(
x
)
)
d x  tan ( x)  x




x
x
x

e
d
x


e
 ( x  1)


Определенный интеграл
Пример 1 (символьный метод)



2
 cos ( x) d x 

2
0
Пример 2 (численный метод)


2
 cos ( x) d x  1.571

0
Несобственный интеграл
Пример 1 (символьный метод)





1
dx  
x





2
e
x
dx 

0
Пример 2 (численный метод)





2
e
x
d x  1.772

Двойной интеграл
Пример 1 (символьный метод)




3
4

x y
x y
 2
3
 x  y dxdy  3  4

2
3
  2
121
3
  x  y dxdy 
 
12
1 2
64












e
 2 2 dxdy  
 x y

Пример 2 (численный метод)
2
3
  2
3
  x  y d x d y  10.083
 
1 2











e
 2 2
 x y
d x d y  3.142

Суммирование рядов
Пример 1 (символьный метод)
10

2  2047

( x) 
n
n 0

n
n 0




1
x 1
x
n
x
n
n  0 2  n

 if 1  x
1
n
e
if x  1  x  1
2
 
n 0
Пример 2 (численный метод)
10
n
3

2  2.047  10
n 0


1
n
 e  1.649
n  0 2  n
65
Решение ОДУ первого порядка ( yt   f yt , t  ; y( t 0 )  y 0 )
Для нахождения решения используется служебное слово Given и функцию
Odesolve(t, n), где t – переменная, относительно которой находится решение
уравнения, n – количество точек, в которых будет найдены значения функции
y(t).
Пример:
Given
2
d
y ( x) y ( x)  y ( x)
dx
y( 0) 0.1
y  Odesolve( x10)
y( 3)  0.691
y( 1)  0.232
y( 9)  0.999
Пример построения графика функции представлен на рис. 4
1
1
0.8
0.6
y ( x)
0.4
0.2
0.1
0
0
2
4
0
6
x
8
10
10
Рисунок 4 – Построенный график функции
Варианты задания
Задание 1.
Найти аналитические выражения для производных заданных функций;
вычислить значения производных в точке х = 3,5.
Задание 2.
Найти аналитическое выражение для частных производных заданной
функции до второго порядка включительно; вычислить значения частных
производных в точке М(1,1).
№
варианта
1
Задание 1
ye
y4
Задание 2
1
x 1
1
2
u
x2
 1 
y  cos2 tg 3  2 
x 
66
1
 y2  z
x
2
3
4
5
 1 

y  sin  2

x

x


1
y  x2
e 1
 1 
y  sin 2 3 cos 2 
x 
y  3 cos(ln x )
y  5 3 ln 2 x  1
1
y  sin 3
x
1
y  tg 2
x
y  ln sin 7 cos x
1
y  7 arcsin x  2
x
arccos x
y5
7
1
 z2
y
u  x2  y 
1
z
1
z


u  2x  y 


u  x2 
y  tg arccos x
6
u x


y  cos x  x x
2x  x 2
y
cos2 ( tg 3 x )
1
y  1  x 3 
sin 2 x
1

y  tg 2 (ln x )  x 2 
x

4
3
x  sin x  x
y
tg (1  x )
tg (ln x )
y
ln(sin x )
1
 z
y2
u  xy 
1
z
u  xz 
1
y
u  xy 
1
z2
2x  x 2
y
arccos2 ( tgx )
8
y  arccos3 x
y  sin e x
2
y  arccos2x 2
67
9
y  3 cos(cosx )
u x
y  3 sin 3 x  1
y4
10
3 cos( x 3 )
1
x 2
y  cos sin 3 cos x
y  arctg

y  9 sin x 
11
1
z
y2
u x yz

u z
1
x3
y  5cos
( x 3 x ) 2
y  ln
x  x2 x


1
 5x 4
x
x
2  x2
y
cos3 ( tgx )
1
y  1  x 3 
sin 2 x
1

y  tg 2 (ln x )  x 2 
x

x
2
2 x
y
cos2 ( tg 2 x )
1
y  1  x 3 
sin 4 x
1

y  tg (ln 3 x )  x 2 
x

1
y  arctg 4 2
x
y  cos sin 5 cos2 x
1
y  7 sin 3 x  2
x
2
y  tg cos x
1 1

x y
y3
12
13
14

15

y  ln 3
y3


x x x
u
1
 z
xy
u  xz  y

u

u  x yz 2  z 3
1
 5x
x3
68
1
z
x  y2
2
Задание 3.
Получить 10 членов разложения заданных функций в ряд Тейлора Маклорена.
Задание 4.
Проинтегрировать
процессором Mathcad.
№
варианта
1
указанные
выражения,
Задание 3
y  x  e -x
пользуясь
символьным
Задание 4
x
2
2
cos 2 xdx
5x  6
dx
2
 3x  9)
 ( x  1)( x
1
x
x 3
dx
x
dx
 sin x  2 cos x  6
2
y  e -x
2
1
 x arccos x dx
 ( x  8)( x
2x
dx
2
 5 x  18)
4x  5
dx
x 1
cos x
 2  cos x dx
2
 x sin 3xdx

3
y  x  sin  x 
5x  3
 ( x  1)( x
 1)
dx
x2
dx
x2
sin x
 1  sin x dx
2
 x ln xdx

4
2
y  x  cos  x 
3
x2  x 1
 ( x 2  1)( x  7) dx
x dx
x  5 x2
dx
 sin x cos 3 x

69
5

x 2  3x  4
 ( x  1)( x 2  2 x  4) dx
y  x  ex

25  x 2 dx
cos 3 2 x
 sin 4 x dx
ln x
 x 3 dx
2x  x 2
 ( x  3)( x 2  1) dx
6
y  x  ex
x2  4
 x 2 dx
dx
 sin 2 x  cos 2 x
2
 ln xdx
7
ye
ln x
dx
x2
 (x
-sin  x 
2
7x  8
dx
 9)( x  4)
x
dx
x 2 16
dx
 2 sin x  sin 2 x
2x
 xe dx
8
x
ye

cos x 
2
7x  2
dx
( x 2  1)
dx
2
(36  x 2 ) 3
dx
 sin x  cos x
 x e dx
9
2 x
 (x
ye
2
dx
 4 x  13)( x  1)
x2  9
 x dx
dx
 sin x  cos x
cos x 
70
 arcsin x dx
10
8x  3
 ( x  3)( x  4)
y  x e
-sin  x 
2
dx
x 3 dx

x 2  25
dx
 3 sin x  4 cos x
 2x
11
 (x
y  xe
cos x 
2
cos 5 xdx
x  3x
dx
 2 x  4)( x  1)
3
2
( x 2  9) 3
dx
x6

 sin
2
dx
x  5 sin x cos x
 x  sin 3x dx
12
4 x 3  15 x
 ( x 2  2 x  3)( x  9) dx
y  sin(e x )
x 2 dx

(x 2  1) 3
dx
 cos x  2 sin x  3
 arctg 2 x dx
13
5x 4  4 x 2  3
 x 3  8 dx
x 2 dx

y  cos(e x )
(x 2  16) 5
sin x
 2 sin x  3 cos x dx
 x  arctg x dx
14
 (2 x
y  x  sin(e x )
2
7x  6
dx
 6 x  4)( x  3)
16  x 2
 x 4 dx
sin 2 x
 1  sin 2 x dx
x
 e cosx dx
15
x2
 ( x  2) 2 ( x  1) dx
y  x  cos(e x )
 x x  25dx
cos 2 x
 1  cos x dx
3
2
2
71
Задание 5.
Просуммировать указанные ряды.
Задание 6.
Решить ОДУ первого порядка (задачу Коши) численным методом,
результат представить в виде графика искомой функции.
№
варианта
Задание 3
Задание 4
1
f(x,u) 
  1
n -1
/n
n
2
1/ 2
n
 1/ 3n
f(x,u) 

3
(2n 1) / 2
f(x,u) 
n
4
1/(3
n
f(x,u) 
 2)(3 1)
n
5
f(x,u) 
 n!/(3n n )
6
 n!/ n
f(x,u) 
3n
f(x,u) 
7
 n!/ n
n
8
f(x,u) 
  1 /3n
n
n
72
9
1/ 3
n
 1/ 4 n
f(x,u) 

10
4n 16/ 2
f(x,u) 
n
11
e
n
/ n!
12
1/2
n

3 3 2
n
f(x,u) 

13
2
f(x,u) 
n
/ n!
14
n 1/n
5
 n2
2n 1/n
n
f(x,u) 

15
6
3
f(x,u) 

Технология выполнения работы
В данной работе необходимо произвести вычисления производных,
интегралов, найти суммы рядов и разложения функций в ряд Тейлора Маклорена, используя панель Calculus, а также применяя методики описанные
выше.
Содержание отчета
1. Задание и цель работы.
2. Выполненные расчеты.
1.
2.
3.
4.
Вопросы для защиты работы
Как вычислить частную производную функции в Mathcad?
Как используя символьный процессор найти сумму ряда?
Как вычислить двойной интеграл в Mathcad?
Как найти разложение функции в ряд Тейлора - Маклорена?
73
ЛАБОРАТОРНАЯ РАБОТА № 8
ВЫЧИСЛЕНИЯ В MATHCAD. ПРОГРАММИРОВАНИЕ В MATHCAD
Время выполнения – 2 часа.
Цель работы
Освоить элементарные приемы программирования в среде Mathcad.
Задачи лабораторной работы
После выполнения работы студент должен знать и уметь:
 знать основные приемы программирования в Mathcad;
 уметь составлять программы – функции в Mathcad, реализуя линейные,
разветвляющиеся и циклические алгоритмы.
Перечень обеспечивающих средств
Для обеспечения выполнения работы необходимо иметь компьютер с
операционной системой MS Windows, установленное приложение РТС Mathcad
версии 14 или выше; методические указания по выполнению работы.
Общие теоретические сведения
Для ввода конструкций программирования будет необходима наборная
панель Программирования, в которую входят конструкции, показанные на
рис. 1.
Рисунок 1 – Панель программирования
Для вставки нужной конструкции в текст составляемой программы
достаточно щелкнуть мышью на соответствующем значке наборной панели
Программирования.
Реализовать тот или иной алгоритм вычисления в пакете MathCAD можно
двумя способами.
1. Вставляя соответствующие операторы или функции в текст документа
MathCAD. Такой способ называется программированием в тексте документа;
2. Используя так называемые программы-функции, которые содержат
конструкции, во многом подобные конструкциям таких языков как PASCAL или
FORTRAN: операторы присваивания, операторы циклов, условные операторы
и т. д. Написание программ-функций в MathCAD позволяет решить задачи,
которые невозможно решить используя только операторы и функции MathCAD.
74
Такой способ будем называть программированием в программе-функции. Такое
программирование включает два этапа:
 описание программы-функции;
 вызов программы-функции.
Рассмотрим отдельно эти два этапа.
Описание программы-функции и локальной оператор присваивания
Перед тем как использовать программу-функцию нужно ее задать, т. е.
выполнить описания. Описание программы-функции размещается в рабочем
документе перед вызовом программы-функции и включает в себя имя
программы-функции, список формальных параметров (который может
отсутствовать) и тело программы-функции. Рассмотрим эти понятия.
Каждая программа-функция MathCAD имеет оригинальное имя, используя
которое осуществляется обращение к этой программе-функции. Через это же
имя “возвращается” в рабочий документ результат выполнения программыфункции.
После имени программы-функции идет список формальных параметров,
заключенный в круглые скобки. Через формальные параметры «внутрь»
программы-функции “передаются” данные необходимые для выполнения
вычислений внутри программы. В качестве формальных параметров могут
использоваться имена простых переменных, массивов и функций. Формальные
параметры отделяются друг от друга запятой.
Замечание 1. Программа-функция может не иметь формальных параметров
и тогда данные передаются через имена переменных, определенных выше
описания программы-функции. 
Тело программы-функции включает любое число операторов локальных
операторов присваивания, условных операторов и операторов цикла, а также
вызов других программ-функций и функций пользователя.
Порядок описания программы-функции MathCAD. Для ввода в рабочий
документ описания программы-функции необходимо выполнить следующие
действия:
 ввести имя программы-функции и список формальных параметров,
заключенный в круглые скобки;
 ввести символ “:” - на экране отображается как “: =”;
 открыть наборную панель программирования и щелкнуть кнопкой “add
line”. На экране появится вертикальная черта и вертикальный столбец с двумя
полями ввода для ввода операторов, образующих тело программы-функции
(рис. 2);
75
Рисунок 2 – Структура программы-функции
 перейти в поле 1 (щелкнув на нем мышью или нажав клавишу Tab) и
ввести первый оператор тела программы-функции. Так как самое нижнее поле
всегда предназначено для определения возвращаемого программой значения, то
поля ввода для дополнительных операторов открываются с помощью щелчка на
кнопке “Add line” панели программирования. При этом поле ввода добавляется
внизу выделенного к этому моменту оператора. Для удаления того или иного
оператора или поля ввода из тела программы-функции, нужно заключить его в
выделяющую рамку и нажать клавишу Delete (рис. 3);
f ( x)
x
z
x
x
2
1
3
Оператор 1
Оператор 2
Поле 2
Рис. 3 – Добавление операторов в тело программы-функции
 заполнить самое нижнее поле ввода (поле 2), введя туда выражение,
определяющее возвращаемое через имя программы-функции значение.
В приведенном примере формальным параметром является простая
переменная x, тело программы включает два локальных оператора
присваивания и значение переменной z определяет возвращаемый через имя
функции результат выполнения программы-функции.
Локальный оператор присваивания. Для задания внутри программы
значения какой-либо переменной используется так называемый локальный
оператор присваивания, имеющий вид:
<имя - переменной> <выражение>
Внимание!
Использование
(обозначается знаком равно) в
синтаксической ошибке.
«обычного» оператора присваивания
теле программы-функции приводит к
76
Обращение к программе-функции MathCAD
Для выполнения программы-функции необходимо обратиться к имени
программы-функции с указанием списка фактических параметров (если в
описании программы присутствует список формальных параметров), т. е.
<имя - программы> (список фактических параметров)
Фактические параметры указывают при каких конкретных значениях
осуществляются вычисления в теле программы. Фактические параметры
отделяются друг от друга запятой.
Очевидно, что между фактическими и формальными параметрами должно
быть соответствие по количеству, порядку следования и типу. Последнее
соответствие означает:
 если формальным параметром является простая переменная, то в
качестве фактического может использоваться константа, переменная,
арифметическое выражение;
 если формальным параметром является вектор или матрица, то
фактическим должен быть вектор или матрица;
 если формальным параметром является имя встроенной функции или
другой программы, то и фактическим параметром должен являться тот же
объект.
Замечание 2.2. Обращение к программе-функции должно находиться
после описания программы-функции и к моменту обращения фактические
параметры должны быть определены. 
Пример 1. Обращение к программе f(x), приведенной на рис. 2.3 может
иметь следующий вид:
x :=2
f(x) = 1.587 f(-3.23) = 0.536 + 0.928i
z := f(x+4.5) z = 2.041
Заметим, что переменная z никак не связана с “локальной” переменной z,
используемой внутри тела программы-функции.
Замечание 1. Передать данные внутрь программы-функции можно
используя внутри программы переменные, определенные до описания
программы-функции. Например:
Берется значение равное 2
x
f
x
2
x
z
x
1
3
2
f

1.587
Вызов программы
z
x

2
77
Хотя значение переменной х изменилось внутри программы-функции, вне
описания программы-функции эта переменная сохранила свое прежнее
значение. 
Замечание 2. Имена фактических параметров при вызове программыфункции могут не совпадать с именами ее формальных параметров. 
Программирование в программе-функции линейных алгоритмов
Напомним, что под линейным алгоритмом понимается вычислительный
процесс, в котором необходимые операции выполняются строго
последовательно. Операторы, реализующие этот алгоритм в теле программы функции также размещаются последовательно и выполняются все, начиная с
первого оператора и кончая последним.
Пример. Оформим в виде программы-функции вычисление корней
квадратного уравнения ax2 + bx +c = 0.
Для этого введем следующее описание программы-функции
2
qq1 ( a  b  c  sig1 )
d1 b 4  a  c
d2
d3
2 a
b
sig1  d1
d3
d2
Программа qq1 имеет четыре параметра: смысл первых трех понятен, а
четвертый определяет знак перед корнем квадратным. Задавая Sig1 = 1,
получаем корень x1; Sig1 = -1, получаем корень x2. Программа реализует
линейный алгоритм – все операторы выполняются всегда строго
последовательно.
Программирование
в
программе-функции
разветвляющихся
алгоритмов
Напомним, что в разветвляющихся алгоритмах присутствует несколько
ветвей вычислительного процесса. Выбор конкретной ветви зависит от
выполнения (или невыполнения) заданных условий на значения переменных
алгоритма.
Пример 1. Переменная y задается следующим выражением
𝑥2 , 𝑥 ≤ 0
𝑦(𝑥) = {
√𝑥 , 𝑥 > 0
Видно, что алгоритм вычислений содержит две ветви и выбор зависит от
значения переменной x.
78
Для программирования разветвляющихся алгоритмов в MathCAD имеется
условная функция if и условный оператор. Используя эти конструкции можно
«изменить» последовательное выполнение операторов. В этих конструкциях
могут использоваться следующие новые понятия.
Условный оператор. Этот оператор используется только в теле
программы-функции и для его ввода необходимо щелкнуть на кнопке if панели
программирования или клавиши [ } ]. На экране появляется конструкция с
двумя полями ввода, изображенная на следующем рисунке.
В поле 2 вводится логическое выражение (в простейшем случае это
выражение отношений). В поле 1 вводится выражение (как правило,
арифметическое), значение которого используется, если проверяемое
логическое выражение принимает значение 1.
Условный оператор может находиться только внутри тела программыфункции.
Например:
В поле 3 задается выражение, значение которого используется, если
логическое выражение равно 0. Для ввода в поле 3 необходимо:
 заключить это поле в выделяющую рамку;
 щелкнуть на кнопке “otherwise” панели программирования;
 в оставшемся поле введите соответствующее выражение.
Пример 2. Составим программу-функцию, вычисляющую функцию y(x),
заданную в примере 1. Для этого введем описание следующей программыфункции:
Обращение к этой программе-функции имеет вид
y(2) = 1.414 y(-2) = 4 
Таким образом, выражение, стоящее перед словом otherwise выполняется
только в том случае, если не выполнено заданное перед этим условием.
В программе можно использовать несколько следующих друг за другом
условных операторов с одним выражением перед словом otherwise.
Пример 3. Составим программу-функцию для вычисления переменной z по
формуле
𝑡 3 , если 𝑡 ≤ −3
𝑧(𝑡) = { 𝑡 2 , если − 3 ≤ 𝑡 ≤ 4
ln(𝑡) в остальных случаях
79
В рабочий документ введем описание следующей программы-функции
z( t )
3
t
2
t
if t
if
3
3 t 4
ln( t ) otherwise
Заметим, что функция z(t) получит значение ln(t) только тогда, когда не
выполнятся условия, записанные в двух вышестоящих строках.
Обращение к этой программе – функции имеет вид
z(2) = 4
Если в поле 3 ввести оператор без слова otherwise, то этот оператор будет
выполняться всегда вне зависимости от выполнения выше заданных условных
операторов.
Программирование в программе-функции циклических алгоритмов
Напомним, что циклические алгоритмы (или проще циклы) содержат
повторяющиеся вычисления, зависящие от некоторой переменной. Такая
переменная называется параметром цикла, а сами повторяющиеся вычисления
составляют тело цикла.
Классификация циклов. Циклы можно условно разделить на две группы:
 циклы типа арифметической прогрессии;
 итерационные циклы.
Характерной чертой первой группы циклов является то, что количество
повторений тела цикла можно определить до начала выполнения программы,
реализующей цикл, т.е. априори. Классическим примером цикла типа
арифметической прогрессии является цикл примера 3.
Для итерационных циклов нельзя априори определить количество
повторений тела цикла. Это обусловлено тем, что окончание таких циклов
определяется не выходом параметра цикла за конечное значение, а более
сложными условиями. Это иллюстрирует следующий пример.
Пример 4. Вычислить значение x=, используя итерационную процедуру
xn=0.5(xn--1+a/xn-1),
n=1,2,3,.., x0=a.
В качестве приближенного значения корня квадратного берется такое
значение xn, которое удовлетворяет условию
|𝑥𝑛 − 𝑥𝑛−1 | ≤ 𝛦 ,
где – заданная точность вычисления.
Видно, что задав исходные данные, например, a = 9, = 10 -3, нельзя, не
выполняя итерационные вычисления, определить количество повторений тела
цикла.
80
Программирование цикла типа арифметической прогрессии. Для
программирования таких циклов используется оператор цикла for. Для ввода
такого оператора необходимо выполнить следующие действия:
 щелкнуть на кнопке for наборной панели Программирования. На экране
появятся поля ввода, изображенные на рисунке
 в поле ввода 1 введите имя параметра цикла;
 в поле ввода 2 ввести диапазон значений параметра цикла, используя
для этого дискретный аргумент;
 в поле ввода 3 вводятся операторы, составляющие тело цикла. Если
одной строки недостаточно, то дополнительные поля ввода (дополнительные
строки) создаются щелчком на кнопке “add line” в панели программирования и
тогда слева от тела цикла появляется вертикальная черта.
Пример 5. Для x меняющего от -2 до 2 с шагом 0.5 вычислить значение
f(x) = e-x . cos(2x) и сформировать из этих значений вектор y, т. е. y1 = f(-2),
y2 = f(-1.5) и т. д.
В этом примере количество повторений определяется по формуле
𝑥 −𝑥
[ 𝑘 0] + 1 ,
2
где xk , x0 – конечное и начальное значение параметра цикла, d – шаг его
изменения.
Подставив значения, получаем (2 - (-2))/0.5+1=9.
Описание программы-функции имеет вид
form_tab( x0 , xk , d )
i
1
for x  x0 , x0
z
d .. xk
exp( ( x) ) . cos( 2. x)
yi
z
i
i
1
y
В этом варианте описания программы-функции формальные параметры
используются для задания диапазона изменения параметра цикла (переменная
x). Для изменения индекса у элемента массива y вводится переменная i целого
типа внутри программы-функции. Обращение к описанной программе-функции
может иметь вид
z := form_tab (-2,2,0.5)
81
Замечание. Если значение индексов у элементов массива меняется начиная
с 1 (как в этом примере), то начальное значение индекса необходимо установить
равным 1 (для этого обратиться к пункту MATH команде Built-in Variables, а
затем в поле ввода Origin ввести значение 1 (вместо установленного по
умолчанию значения 0).
Программирование итерационных циклов. Для программирования
таких циклов используется оператор цикла while. Для ввода этого оператора
необходимо выполнить следующие действия:
 щелкнуть на кнопке while панели Программирования. На экране
появляются элементы, показанные на рисунке
 в поле 1 ввести условие выполнения цикла;
 в поле 2 ввести операторы тела цикла. В теле цикла должны
присутствовать операторы делающие условие цикла ложным иначе цикл будет
продолжаться бесконечно.
Оператор цикла while выполняется следующим образом: обнаружив
оператор while, MathCAD проверяет указанное условие. Если оно истинно, то
выполняется тело цикла и снова проверяется условие. Если оно ложно, то цикл
заканчивается.
Пример 6. Составить программу-функцию, реализующую итерационную
процедуру приближенного вычисления корня квадратного.
sqroot( a , eps )
xc
1.0e10
xn
a
while abs ( xn
xc
xn
a
xc
xc
xn
xc ) > eps
2
xn
Как видно из текста программы-функции нет необходимости хранить в
памяти все приближенные решения x0, x1, x2 , ... , и т.д. Достаточно хранить
предыдущее (“старое”) значение xc и последующее (“новое”) значение xn.
Обращение к описанной программе будет иметь вид
sqroot(9,0.0001) = 3
82
sqroot(25,0.0001) = 5
sqroot(123,0.0001) = 11.091
К сожалению, организация итерационного цикла с помощью оператора
while, без дополнительных средств контроля может привести к зацикливанию.
Например, задав при обращении к программе eps < 0 получаем зацикливание.
Поэтому в MathCAD имеется специальный оператор break, который
позволяет выйти из цикла или приостановить исполнение программы при
выполнении заданного в операторе break условии. Для ввода оператора break
необходимо щелкнуть на кнопке break панели Программирования (нельзя
вводить этот оператор с клавиатуры по символам). Оператор break используется
в левом поле ввода условного оператор if, а в правом размещается условие, при
выполнении которого происходит прекращение работы цикла или программы, в
нижнем поле – оператор, выполняемый если условие не выполнено. Поэтому
первоначально вводится оператор if , а затем заполняются поля этого оператора.
Следующий пример показывает написание не зацикливающей программы
с оператором break.
Задание
1. Составить программу – функцию, вычисляющую функцию f(x)
2. Пусть задана функция двух аргументов f(x,y). Найти область
определения этой функции. Составить программу – функцию, вычисляющую
функцию f(x,y), таким образом, чтобы значения x и y не выходили за пределы
области определения функции f(x,y).
3. Построить графики функций f(x) и f(x,y).
Варианты задания
1. Составить программу – функцию, вычисляющую функцию y(x).
2. Составить программу – функцию, вычисляющую функцию f(x,y), таким
образом, чтобы значения x и y не выходили за пределы области определения
функции f(x,y).
cos(𝑥) , если 𝑥 < 0
(𝑥 + 2) / (𝑥 2 − 9), если 0 ≤ 𝑥 ≤ 9
30
𝑦=
∑ 2𝑥 /(𝑛 + 1)! , если 9 < 𝑥 < 12
𝑛=1
{
№
варианта
𝑥 5 + √𝑥, если 𝑥 ≥ 12
Задание 1
Задание 2
𝑒 𝑥 , если 0 ≤ 𝑥 ≤ 1
(𝑥 − 1) / (𝑥2 − 4), если 1 < 𝑥 ≤ 4
1
30
𝑦=
∑ 𝑥 / 𝑛𝑛 , если 4 < 𝑥 < 5
𝑛=1
{
𝑥 3 + 1, если 𝑥 ≥ 5
83
f ( x, y )  9 - x 2  y 2
cos(𝑥) , если 𝑥 < 0
(𝑥 + 2) / (𝑥2 − 9), если 0 ≤ 𝑥 ≤ 9
2
30
𝑦=
∑ 2𝑥 /(𝑛 + 1)! , если 9 < 𝑥 < 12
f ( x, y ) 
1
x  y2
2
𝑛=1
𝑥 5 + √𝑥, если 𝑥 ≥ 12
{
tg(𝑥) , если 𝑥 < 0
(𝑥 + 3) / (𝑥2 − 16), если 0 ≤ 𝑥 ≤ 5
3
30
𝑦=
∑ 𝑒 𝑥 / 𝑛! , если 5 < 𝑥 < 10

f ( x, y)  ln x 2  y 2

𝑛=1
√𝑥 + 1, если 𝑥 ≥ 10
{
ctg(𝑥) , если 𝑥 ≤ 1
(𝑥 − 3) / (𝑥2 − 25), если 1 < 𝑥 ≤ 6
4
25
𝑦=
∑ 2𝑥 / 𝑛! , если 6 < 𝑥 < 8
f ( x, y )  16  x 2  y 2
𝑛=1
𝑥 3 + 𝑥 2 , если 𝑥 ≥ 8
{
cos(𝑥 + 1) , если 𝑥 ≤ 1
(𝑥 − 1) / (𝑥2 − 25), если 1 < 𝑥 ≤ 8
5
30
𝑦=
∑ 1/ 2𝑛 , если 8 < 𝑥 < 10
f ( x, y ) 
1
x  y2
2
𝑛=1
𝑥 3 + 5, если 𝑥 ≥ 10
{
(𝑥3 + 𝑥), если 𝑥 ≤ 1
(𝑥 − 2) / (𝑥2 − 36), если 1 < 𝑥 ≤ 10
6
30
𝑦=
𝑛
∑(3𝑛 − 2) / 3 , если 10 < 𝑥 < 20
𝑛=1

f ( x, y)  ln x 2  y 2

𝑥 + sin(𝑥), если 𝑥 ≥ 20
{
cos (√𝑥 + 1) , если − 1 ≤ 𝑥 ≤ 6
(𝑥 + 4) / (𝑥2 − 49), если 6 < 𝑥 ≤ 10
7
32
𝑦=
𝑛
∑ 𝑛! / 3𝑛 , если 10 < 𝑥 < 20
f ( x, y ) 
1
1 x  y2
2
𝑛=1
𝑥 3 + 𝑥 2 , если 𝑥 ≥ 20
{
𝑥3 + sin(𝑥) , если 𝑥 ≤ −1
(𝑥 + 4) / sin(𝑥), если − 1 < 𝑥 ≤ 10
8
25
𝑦=
𝑛
∑ 𝑛! / (3𝑛) , если 10 < 𝑥 < 20
𝑛=1
{
𝑥 3 + √𝑥, если 𝑥 ≥ 20
84

f ( x, y)  ln 1  x 2  y 2

2𝑥 + 3√𝑥, если 𝑥 ≤ −1
(𝑥 + 5) / sin(𝑥), если − 1 < 𝑥 ≤ 5
9
20
𝑦=
∑ 𝑛! / 𝑛𝑛 , если 5 < 𝑥 < 10
f ( x, y ) 
𝑛=1
1
ln x  y 2 
2
𝑥 3 + 𝑒 𝑥 , если 𝑥 ≥ 10
{
1 + ex , если 𝑥 ≤ −1
(𝑥 2 − 1) / sin(𝑥), если − 1 < 𝑥 ≤ 5
10
20
𝑦=
∑ 4𝑛 / 3𝑛 , если 5 < 𝑥 < 10
f ( x, y ) 
𝑛=1
1
ln 1  x 2  y 2 
1 / 𝑥, если 𝑥 ≥ 10
{
1 / (ex − 1), если 𝑥 ≤ 2
cos(𝑥) + sin(𝑥), если 2 < 𝑥 ≤ 10
11
20
𝑦=
∑ 3𝑛 / (𝑛 + 1)! , если 10 < 𝑥 < 20
f ( x, y ) 
𝑛=1
1
ln x  y 
𝑥 3 + 10, если 𝑥 ≥ 20
{
tg(𝑥) + 𝑐𝑡𝑔(𝑥 + 2) , если 𝑥 ≤ −1
1 / sin(𝑥), если − 1 < 𝑥 ≤ 2
12
20
𝑦=
∑ 𝑒 𝑛 / (𝑛 + 1)! , если 2 < 𝑥 < 10
f ( x, y ) 
𝑛=1
1
9 - x2  y2
𝑥 3 + 𝑥 2 + 1, если 𝑥 ≥ 10
{
𝑒𝑥+1 , если 𝑥 ≤ 0
20
13
∑ 𝑥/ 3𝑛 , если 1 < 𝑥 ≤ 8
𝑦=
𝑛=1
f ( x, y ) 
𝑥 / (𝑥 − 10) , если 8 < 𝑥 < 12
{
𝑥 3 + 𝑥, если 𝑥 ≥ 12
1
ln x  y 
𝑒𝑥 + 𝑥, если 𝑥 ≤ 0
(𝑥 − 13) / (x 2 − 1), если 0 < 𝑥 ≤ 2
14
20
𝑦=
∑ 𝑥/ 3(𝑛+2) , если 2 < 𝑥 < 10
f ( x, y ) 
1
ln  x  y 
f ( x, y ) 
1
ln  x  y 
𝑛=1
𝑥 3 + 𝑥 + 1, если 𝑥 ≥ 10
{
3
√𝑥 − 1, если 𝑥 ≤ −2
𝑒𝑥+1 , если − 2
< 𝑥 ≤ −1
𝑦 = 1 / (e − 1) , если − 1 < 𝑥 < 8
x
15
20
∑ 𝑛! / (2𝑛)𝑛 , если 𝑥 ≥ 8
{
𝑛=1
85
Технология выполнения работы
В данной работе необходимо составить программы – функции, для
вычисления значений функций y(x) и f(x,y), используя панель Programming, а
так же применяя методики описанные выше.
Содержание отчета
1. Задание и цель работы.
2. Выполненные расчеты.
Вопросы для защиты работы
1. Как ввести программу-функцию в Mathcad?
2. Что такое формальные параметры программы - функции?
3. Каким образом происходит обращение к программе – функции в
Mathcad?
4. Что такое условный оператор в Mathcad и как его использовать?
5. Что такое цикл типа арифметической прогрессии в Mathcad и как его
использовать?
86
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Воскобойников Ю.Е. Основы работы в пакете MathCAD: учеб. пособие
/ Ю.Е. Воскобойников, А.Ф. Задорожный. – Новосибирск: НГАСУ (Сибстрин),
2006. – 138 с.
2. Гарнаев, А. Microsoft Office Excel 2010. Разработка приложений /
А. Гарнаев, Л. Рудикова. – СПб.: БХВ-Петербург, 2011. – 514 с.
3. Дьяконов, В.П. Справочник по MathCAD 12 / В.П. Дьяконов. – М.: СК
Пресс, 2006. – 336 с.
4. Дьяконов, В.П. MathCAD14 в математике, физике и в Internet /
В.П. Дьяконов, И.В. Абраменкова. – М.: Изд-во Нолидж, 2008. – 352 с.
5. Информатика [Текст]: учеб. пособие. Ч. 3 / С.М. Горбенко, С.Ю. Кацко,
Н.П. Артемьева, С.А. Егорова, Н.В. Деева, С.А. Вдовин; под общ. ред.
С.Ю. Кацко. – Новосибирск: СГГА, 2011. – 168 с.
6. Кирьянов, Д. Mathcad 14 / Д. Кирьянов. – СПб.: БХВ-Петербург, 2007. –
704 с.
7. Кузьменко, В.Г. Visual Basic 6 / В.Г. Кузьменко. – М.: Бином-Пресс,
2011. – 672 с.
8. Могилев, А.В. Практикум по информатике [Текст] / А.В. Могилев,
Н.И. Пак, Е.К. Хеннер. – М.: Академия, 2009. – 608 с.
9. Сайлер, Брайан. Использование Visual Basic 6. Классическое издание /
Б. Сайлер, Дж. Споттс. – М.: Издательство «Вильямс», 2007. – 832 с.
10. Сырецкий Г.А. Информатика. Фундаментальный курс. Том II.
Информационные технологии и системы / Г.А. Сырецкий. – СПб.: БХВ Петербург, 2007. – 848 с.
87
Download