Файл: Практикум по курсам Информатика, Прикладное программное обеспечение.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 10.01.2024

Просмотров: 194

Скачиваний: 5

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
<список аргументов> – список формальных параметров (аргументов) функции.
Если аргументов более одного, они отделяются друг от друга запятыми. Переменные, входящие в список аргументов, являются локальными – их действие проявляется только в пределах блока функции. Аргументами функции могут быть скаляры, векторы и матрицы
(последний случай рассмотрим позже);
<выражение> – любое допустимое выражение, определяющее данную функцию. В него могут входить как переменные из списка аргументов, так и переменные, введенные в других блоках (глобальные переменные). В последнем случае такие переменные должны быть определены (т.е. иметь конкретные значения) до определения данной функции.
Функция пользователя, определяемая в программе, может использоваться много- кратно и точно так же, как и встроенная функция – обращение к ней по имени с указанием в скобках списка фактических параметров.
Задача 3. Определить функцию, которая возвращает расстояние между точкой
S(x,y) и началом координат.
Решение: Приведем два варианта решения.
1 вариант. Определим функцию, которая имеет скалярные аргументы и возвраща-
ет скалярное значение.
n
100

количество точек dx
20
n

шаг расчета i
0 n


x i
10

i dx



значения x y
i if x
i
0.1

1
x i
 
2 6


sin x i
 
x i








значения y
10 0
10 1
0 1
y i
x i

32
2 вариант. Определим функцию, которая в качестве аргумента имеет вектор, а
возвращает скалярное значение.
Упражнения
1. Используя стандартную функцию rnd(1), определите новую функцию F(a,b), ко- торая возвращает случайные числа в диапазоне a…b.
2. Дано число. Если оно четное, увеличить его в два раза, если нечетное – в три раза. Используйте стандартные функции if и mod.
3. Используя функцию if(), рассчитайте значения функций. Постройте графики функций. Диапазон и шаг выберите самостоятельно.
Номер варианта
Функция
1














0
,
3
)
(
sin
2 0
,
1 1
2 4
2
x
x
x
x
x
x
x
y
2














0
,
3
)
(
sin
2 0
,
)
(
cos
1
)
2
(
sin
3 2
2 2
x
x
x
x
x
x
x
y
3










0
),
(
cos
2 0
,
1
)
(
sin
3 2
2 2
2
x
x
x
x
x
x
y
4













0
,
1 1
1 0
,
1 3
2
,
0 2
x
e
x
x
x
y
x
5














0
,
)
(
cos
2 1
0
,
2 1
3
x
x
x
x
x
x
y
dist x y

(
)
x
2
y
2


определение функции x
1

y
2

dist x y

(
)
2.236

вывод значений для данных x,y dist S
( )
S
0
 
2
S
1
 
2


определение функции
S
1 2







dist S
( )
2.236

вывод значения для данного S


33
Номер варианта
Функция
6











0
,
)
5
ln(
1 3
0
),
(
cos
)
sin(
3 2
2
x
x
x
x
x
x
y
7













0
,
2 1
0
,
1 3
2 5
,
0 2
2
x
x
e
x
x
x
x
y
x
8
















0
,
2 2
0
,
)
(
sin
2 1
3 1
,
0 2
2
x
e
x
x
x
x
y
x
9












0
,
2 1
3 1
0
,
1 3
x
x
x
x
x
y
10











0
,
1 1
)
(
sin
0
,
1 2
3 2
x
e
x
x
x
x
y
x
4. Решите задачу о случайном блуждании, но на плоскости x-y (за аналог возьмите задачу 1): пешеход может двигаться только вперед-назад и влево-вправо. Постройте гра- фик его траектории и отметьте место его остановки. Как далеко он смог отойти от началь- ного места?
Контрольные вопросы
1. С помощью какой команды можно посмотреть описание функций?
2. Как округлить число до ближайшего меньшего целого? Большего целого?
3. Какое число выведет функция rnd(10)?
4. Как работает функция if?
5. Что такое вложенный условный оператор?
6. Для чего используют функции пользователя?

34
ЛАБОРАТОРНАЯ РАБОТА № 4
ОПЕРАЦИИ С ВЕКТОРАМИ И МАТРИЦАМИ
Цель: ознакомиться с основными операциями с векторами и матрицами в системе
MathCAD, научиться их применять при решении задач.
4.1 Операции с векторами
Векторы – переменные, которые имеют имена и характеризуют некоторую сово- купность данных. Элементы вектора нумеруются (или индексируются). По умолчанию нумерация начинается с нуля (определяется системной переменной ORIGIN, которая по умолчанию равна нулю). Например, если задан вектор V, то его элементами будут V
0
, V
1
,
V
2
, …, V
i
, где i – индекс вектора.
Для ввода индексной переменной удобно использовать кнопку панели Calcu- late или Matrix.
Таким образом, индексированная переменная – это соответствующий элемент од- ноименного вектора. Отметим, что переменная может иметь и два индекса – этот случай рассмотрим позднее при изучении матриц.
Порядок нумерации можно изменить при помощи системной переменной ORIGIN.
Так, если задать ORIGIN:=1, то нумерация векторов или матриц начинается с 1.
Способы определения векторов
Способы задания векторов покажем на примере вектора V, содержащего 5 компо- нентов – целые числа 0, 2, 4, 6, 8.
1 способ. Использование шаблона. Наберем V:= , а затем с помощью кнопки панели Matrix зададим параметры, определяющие размер вектора (для этого надо указать количество строк и один столбец). Затем в шаблон необходимо ввести соответствующие числа или выражения. После этого вектор можно использовать, например, вывести все его значения, набрав V= . Последовательность указанных действий приведена на рис. 4.1.
2 способ. Поэлементное создание. Для этого можно использовать оператор при- сваивания, в левой части которого вводится имя вектора с индексом (или индексным вы- ражением), а в правой – необходимые числа или выражения. Например, вектор V можно создать, используя переменную диапазона в качестве его индекса (см. рис. 4.2). Этот слу- чай можно использовать, если известен некоторый алгоритм, определяющий элементы вектора.
Рисунок 4.1 – Шаблон вектора V (a), задание вектора (б) и вывод его значений (в)
Рисунок 4.2 – Поэлементное задание вектора V
4.2 Операторы суммирования и перемножения
В математические выражения MathCAD могут также входить операторы суммиро- вания и перемножения (см. Таблица 4.1).


35
Таблица 4.1 – Операторы суммирования и перемножения
Оператор
Назначение
Панель инструментов i
x

Возвращает результат суммирования x по диа- пазону i. m
n i
x


Возвращает результат суммирования x при i = m, m+1, …, n. Здесь i – локальная переменная. i
x

Возвращает результат перемножения x по диа- пазону i. m
n i
x


Возвращает результат перемножения x при i = m, m+1, …, n. Здесь i – локальная переменная.
Примечание: Здесь i – переменная диапазона с целым шагом, x – любое допустимое выражение, m и n должны быть целыми числами.
Элементами векторов могут быть не только числа, но и выражения, содержащие числа, переменные и функции. Например, можно определить следующий вектор где первый элемент – число, второй – имя переменной, третий – выражение, четвертый – имя стандартной функции. При этом значения x и y должны быть определены выше.
4.3 Итерации
Как уже отмечалось, переменные диапазона позволяют организовать итерационные алгоритмы – некоторый аналог циклов в традиционных языках программирования. Рас- смотрим это на конкретном примере.
Задача 1. В 1202 г. итальянский математик Леонард Пизанский (Фибоначчи)
предложил следующую задачу. Пара кроликов каждый месяц дает приплод – тоже пару
(самца и самку), от которых через два месяца уже получают новый приплод. Сколько
кроликов будет через n месяцев, если взять пару новорожденных крольчат?
Решение. Решение данной задачи дается числами Фибоначчи:
F
i
= F
i-1
+ F
i-2
, i

3 ;
F
1
=1 ; F
2
= 1 .
Программа на MathCAD приведена ниже.
V
3.5
x x
y

sin x
( )











n
12

количество месяц ев
F
1 1

F
2 1

i
3 n


переменная диапазона
F
i
F
i 1

F
i 2



рекурсия
F
n
144

от вет

36
Векторные операторы
Основные векторные операторы приведены в Таблица 4.2, где V и x – обозначения векторов и скаляров соответственно. Практически все операции могут проводиться как с действительными, так и с комплексными переменными.
Таблица 4.2 – Векторные операторы
Оператор
Назначение операторов
Результат
V+x
Сложение вектора со скаля- ром
Вектор, образованный путем добавления x к каждому элементу вектора V
V-x
Вычитание из вектора скаля- ра
Вектор, образованный путем вычитания x из каждого элемента вектора v x
V

Умножение вектора на ска- ляр
Вектор, образованный путем умножения каждого элемента вектора V на x x
V
Деление вектора на скаляр
Вектор, образованный путем деления каж- дого элемента вектора V на x
-V
Смена знака
Вектор, образованный путем смены знака у всех элементов вектора V
V1+V2
Сложение векторов одинако- вой длины
Вектор, образованный путем суммирова- ния соответствующих элементов векторов
V1 и V2
V1-V2
Вычитание векторов одина- ковой длины
Вектор, образованный путем вычитания соответствующих элементов векторов V1 и
V2
V2
V1

Скалярное произведение век- торов
Скаляр, образованный по правилам ска- лярного произведения векторов
V2
V1

Векторное произведение трехэлементных векторов
Вектор, образованный по правилам век- торного произведения векторов
V
Модуль вектора
Скаляр, равный квадратному корню из суммы квадратов элементов вектора V
V

Суммирование всех элемен- тов вектора
Скаляр, равный сумме всех элементов век- тора V





operator
Векторизация оператора. По- зволяет провести какую – либо операцию над всеми элементами вектора
Зависит от вида оператора
Vn
Выделение n-го элемента вектора
Скаляр, равный n-му элементу вектора V
Оператор векторизации требует некоторых пояснений. Без него операции с векто- рами, если они присутствуют в выражениях, выполняются по соответствующим правилам математических операций. Оператор векторизации отменяет эти правила и предписывает рассматривать векторы в выражении как массивы. Рассмотрим несколько примеров.
1)
Если v – вектор, то v
- модуль вектора, тогда как


v
– вектор, получен- ный из v путем взятия модуля из каждого элемента данного вектора: v
1 1

2 2










v
3.162

v


1 1
2 2











37 2)
Если v и w – векторы, то w
v

означает скалярное произведение векторов, тогда как

 


w v
– новый вектор, чей i – элемент получен перемножением v i
и w i
:
Векторные функции
Система MathCAD имеет большое число векторных функций. Здесь мы рассмот- рим некоторые функции общего назначения, а также ряд специальных функций.
Ниже для определенности будем полагать, что системная переменная ORIGIN=0 и задан вектор













1 2
9 0
W
length(V)- возвращает длину вектора V, т.е. число его компонентов. Например, length(W)=4.
last(V) -возвращает индекс последнего элемента вектора V. Например, last(W)=3.
max(V) -возвращает значение элемента вектора V, имеющего максимальное значе- ние. Например, max(W)=9.
min(V) -возвращает значение элемента вектора V, имеющего минимальное значе- ние. Например, min(W)=0.
mean(V)- возвращает среднеарифметическое значение для элементов вектора V.
Например, mean(W)=3.
Re(V) -возвращает вектор действительных элементов комплексного вектора V.
Im(V) -возвращает вектор мнимых элементов комплексного вектора V.
sort(V)- сортировка элементов вектора V в порядке возрастания их значений. На- пример,













9 2
1 0
)
W
(
sort
revers(V)- обращает порядок элементов вектора V. Например,













0 9
2 1
)
W
(
revers
Одновременные вычисления с помощью векторов
Как уже отмечалось, операторы MathCAD работают последовательно один за од- ним. Иногда требуется, чтобы одновременно выполнялась группа операторов. Это можно сделать двумя способами: использовать встроенный язык программирования (в данном пособии он не рассматривается) или использовать конструкцию, которая называется од- новременным определением. В общем случае одновременное определение делается так





































n выражение
2
выражение
1
выражение
:
n переменной имя
2
переменной имя
1
переменной имя
Здесь слева от оператора присваивания задается вектор имен переменных, справа – вектор соответствующих выражений той же размерности. v
1 1

2 2










w
1 2
3 4









v w

3


v w

(
)


1 2

6 8












38
MathCAD вычисляет все элементы справа перед присваиванием значений любой из переменных слева.
Задача 1. С помощью одновременного определения поменять значения у перемен-
ных x и y.
Решение:
Одновременные определения – удобный способ организации рекурсивных вычис- лений, которые можно использовать, например, при итерационных методах решения сис- тем уравнений или систем дифференциальных уравнений в конечных разностях. Более детально это показано в соответствующих разделах.
4.4 Операции с матрицами
Матрицы, как и векторы в MathCAD выполняют двоякую роль: 1) роль двумерных массивов, к элементам которых можно обращаться по их номерам (индексам) и 2) собст- венно матриц как математических объектов, над которыми можно проводить соответст- вующие математические операции.
Матрица, как и вектор, имеет имя, но ее элементы характеризуются двумя индек- сами – их можно рассматривать как номера строк и столбцов. Обычно нумерация идет с нуля, однако этот порядок можно изменить путем изменения значения системной пере- менной ORIGIN.
К элементам матрицы можно обращаться по имени матрицы с указанием индексов, например M
i,j
. Таким образом, элемент матрицы – переменная с двумя индексами.
Как создать матрицу
Как и в случае с векторами, существует несколько способов создания (определе- ния) матриц. Можно использовать шаблон, как это делалось при создании векторов, с тем отличием, что задается количество столбцов более 1.
Матрицу можно также определить, используя выражения с переменными диапазо- на (дискретными переменными) в качестве индексов матрицы. Например, приведенные ниже операторы создают матрицу М размером 4

5
Как и в случае с векторами, MathCAD заполняет неопределенные элементы матри- цы нулями. Например, x
1

y
2

начал ьные значения переменных x
y






y x







од новременные определения x
2

y
1

новые значения переменных i
0 3


j
0 4


M
i j

i j


M
0 1
2 3
1 2
3 4
2 3
4 5
3 4
5 6
4 5
6 7









A
4 5

1

A
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 0
0 1
















39
Этот прием также можно использовать для создания матриц.
Отметим, что размер матрицы всегда можно изменить.
Матричные операторы
Основные матричные операторы приведены в таблице 4.3, где M, V и x – обозначе- ния матриц, векторов и скаляров соответственно.
Таблица 4.3 – Матричные операторы
Оператор
Назначение операторов
Результат
M+x сложение матрицы со скаля- ром матрица, образованная путем добавления x к каждому элементу матрицы M
M-x вычитание из матрицы ска- ляра матрица, образованная путем вычитания x из каждого элемента матрицы M x
M

умножение матрицы на ска- ляр матрица, образованная путем умножения каждого элемента матрицы M на x x
M
деление матрицы на скаляр матрица, образованная путем деления каж- дого элемента матрицы M на x
-M смена знака матрица, образованная путем смены знака у всех элементов матрицы M
M1+M2 сложение матриц одинаково- го размера матрица, образованная путем суммирова- ния соответствующих элементов матриц
M1 и M2
M1-M2 вычитание матриц одинако- вого размера матрица, образованная путем вычитания соответствующих элементов матриц M1 и
M2
M2
M1

умножение матриц матрица, образованная по правилам умно- жения матриц. Матрицы должны быть со- гласованы
V
M

умножение матрицы на век- тор вектор, образованный по правилам умно- жения матриц и векторов n
M
возведение матрицы в целую степень n при n>0 – матрица, полученная n кратным перемножением; при n=1 – исходная матрица; при n=-1 – обратная матрица; при n=0 – единичная матрица
M
определитель матрицы скаляр, определитель квадратной матрицы
M
T
M
транспонирование матрицы траспонированная матрица


n
M
выделение n-го столбца мат- рицы вектор – n столбец матрицы m
n,
M
выделение элемента Mn,m матрицы скаляр – Mn,m элемент матрицы M







operat векторизация оператора. По- зволяет провести какую- ли- бо операцию над всеми эле- ментами матрицы зависит от вида оператора *)
1   2   3   4   5   6   7