
Метод._MathCAD_Prime / Метод._MathCAD_Prime
.pdf
Вид документа Mathcad Prime:
Пояснение к программе: Здесь, внутри вложенных циклов |
, |
||||
создается, массив случайных целых чисел |
и его элементы |
||||
записываются в массив |
( |
). В массиве |
происходит замена |
||
элементов, больших чем |
на |
, а остальных на |
. Вывод оформлен в виде |
||
вектора – строки из двух матриц, где |
– исходная матрица, |
– |
|||
результирующая матрица (MassDvum3). |
|
|
|
Примечание: После запуска вышеуказанной программы, вы необязательно получите показанный здесь результат, т.к. использование функции случайных чисел ( ), после каждого запуска может выдавать различные числа.
Индивидуальные задания
Примечание: При выполнении указанных ниже заданий поставьте значение в .
1.Составить программу для решения задачи из Табл.1.
2.Создать квадратную матрицу случайных чисел размером N x N (N <=10). Составить программу решения задачи из Табл.2.
111

Таблица 1
№ |
Задача |
|
|
1Вычислить сумму и число отрицательных элементов матрицы А, находящихся под главной диагональю. Элементы матрицы
|
вычисляются по формуле A |
= (−1)i (2 + j |
|
i − j |
|
!) , где i, j =1,2,...,10 . |
||||
|
|
|
||||||||
|
|
i, j |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
2 |
Вычислить сумму и число положительных элементов матрицы А, |
|||||||||
|
находящихся под главной диагональю. Элементы вычисляются по |
|||||||||
|
формуле A |
= (−1)i+ j ( j −10) ((i + 2)!) , где i, j =1,2,...,10 . |
||||||||
|
i, j |
|
|
|
|
|
|
|
|
|
3 |
Вычислить сумму и число положительных элементов матрицы А, |
|||||||||
|
находящихся на главной диагонали. Элементы матрицы |
|||||||||
|
вычисляются по формуле A |
= (−1)i (| i − j |)! , где i, j =1,2,...,10 . |
||||||||
|
|
i, j |
|
|
|
|
|
|
|
|
4 |
Вычислить сумму и число положительных элементов матрицы А. |
|||||||||
|
Элементы матрицы вычисляются по формуле A |
= |
(−1) j (i −1)! |
, где |
||||||
|
|
|||||||||
|
|
|
|
|
|
|
i, j |
|
j! |
|
|
|
|
|
|
|
|
|
|
||
|
i, j =1,2,...,10 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5Вычислить число и сумму отрицательных элементов матрицы А, находящихся над главной диагональю. Элементы вычисляются по
формуле Ai, j = (−1)i+ j (1 + cos(| i − 6 |!)) , где i, j =1,2,...,10 .
6Вычислить число и сумму отрицательных элементов матрицы А, находящихся под главной диагональю. Элементы вычисляются по
формуле Ai, j = (−1)i+ j 2 − (−1)i 3 − (−1) j 5 , где i, j =1,2,...,10 .
7В матрице А положительные элементы заменить на нули и результаты записать в матрицу В. Вычислить число и сумму отрицательных элементов в матрице A. Элементы матрицы А
вычисляются по формуле A |
= −15 + |
3 i |
, где i, j =1,2,...,10 . |
i, j |
3 − 4 |
j |
|
|
|
8В матрице А отрицательные элементы заменить на единицы и результаты записать в матрицу В. Вычислить число и сумму отрицательных элементов в матрице A. Элементы матрицы А
вычисляются по формуле Ai, j |
= |
|
2 − i |
|
, где i, j =1,2,...,10 . |
|
|
|
|
|
|||
|
|
|
|
|||
− |
|
20 + j |
||||
|
|
|
|
|
9В матрице А отрицательные элементы заменить на нули, положительные на единицы и результаты записать в матрицу В. Вычислить число элементов, равных единице в матрице В.
Элементы вычисляются по формуле A |
= |
1 |
|
− |
1 |
, где i, j =1,2,...,10 . |
|
|
|||||
i, j |
|
i |
|
j |
|
|
|
|
|
|
112

10 |
В каждой строке матрицы А найти минимальный элемент. |
||||||||||
|
Элементы матрицы А вычисляются по формуле A |
= |
| i − 5 |! |
− |
| j − 4 |! |
|
|||||
|
|
|
|||||||||
|
|
|
|
|
i, j |
|
j |
|
|
i |
|
|
|
|
|
|
|
|
|
|
|||
|
, где i, j =1,2,...,10 . |
|
|
|
|
|
|
|
|
||
|
|
||||||||||
11 |
В каждом столбце матрицы А найти максимальный элемент. |
||||||||||
|
Элементы |
матрицы |
А |
вычисляются |
по |
формуле |
|||||
|
A |
= (100− | j −i |!) (−1)i , где i, j =1,2,...,10 . |
|
|
|
|
|
|
|||
|
i, j |
|
|
|
|
|
|
|
|
|
|
12Транспонировать матрицу А и результат записать в матрицу В. Вычислить сумму индексов положительных элементов матрицы В, стоящих на главной диагонали. Элементы матрицы А
вычисляются по формуле A |
= |
|
8 |
− i |
, где i, j =1,2,...,10 . |
|
|
|
|
|
|||
i, j |
|
− |
3 + j |
|||
|
|
13В матрице А найти число строк и столбцов, содержащих не более трех отрицательных элементов, и их номера. Элементы матрицы
А вычисляются по формуле A |
= 3 |
|
|
i − |
5 |
, где i, j =1,2,...,10 . |
|
j − 5 |
|||||||
|
|
||||||
i, j |
|
|
|
j |
|
|
|
|
|
|
|
|
|
14В матрице А найти число строк и столбцов, содержащих более трех положительных элементов, и их номера. Элементы матрицы А
вычисляются по формуле A |
= |
(i +1)2 − j −1 |
, где i, j =1,2,...,10 . |
||
j2 + i +1 |
|
||||
i, j |
|
|
15В целочисленной матрице А найти сумму и число элементов кратных пяти. Элементы матрицы А вычисляются по формуле
Ai, j = ( j − 3) (i − 2) (i j − 50) , где i, j =1,2,...,10 .
16В целочисленной матрице А найти номера строк, содержащих более трех четных элементов. Элементы матрицы А вычисляются
по формуле Ai, j =| i − j |! | 2 i − j |! , где i, j =1,2,...,10 .
Таблица 2
№ |
Задача |
|
|
1Найти сумму всех ее элементов и заменить им все элементы главной диагонали этой матрицы.
2Найти сумму всех ее элементов и заменить им все элементы побочной диагонали этой матрицы.
3Получить новую матрицу путем сложения всех элементов данной матрицы с ее наибольшим элементом в главной диагонали.
113

4Получить новую матрицу путем сложения всех элементов данной матрицы с ее наименьшим элементом в главной диагонали.
5Получить новую матрицу путем сложения всех элементов данной матрицы с ее наименьшим элементом в побочной диагонали.
6Получить новую матрицу путем сложения всех элементов данной матрицы с ее наибольшим элементом в побочной диагонали.
7Получить новую матрицу путем сложения всех элементов данной матрицы с ее наибольшим элементом.
8Получить новую матрицу путем сложения всех элементов данной матрицы с ее наименьшим элементом.
9Получить новую матрицу путем вычитания всех элементов данной матрицы из ее наибольшего элемента.
10Получить новую матрицу путем вычитания всех элементов данной матрицы из ее наименьшего элемента.
11Заменить все ее элементы, расположенные на главной диагонали
ивыше нее, на наименьший элемент.
12Заменить все ее элементы, расположенные на главной диагонали
иниже нее, на наибольший элемент.
13Заменить все ее элементы, расположенные на побочной диагонали и выше нее, на наибольший элемент.
14Заменить все ее элементы, расположенные на побочной диагонали и ниже нее, на наименьший элемент.
15Сформировать вектор из элементов главной диагонали и найти среднее арифметическое элементов этого вектора.
16Сформировать вектор из элементов побочной диагонали и найти среднее арифметическое элементов этого вектора.
114

Лабораторная работа №10. Программирование с использованием подпрограмм
При создании программ часто появляется некоторая последовательность команд (инструкций), которую необходимо выполнять в нескольких местах. Можно эту последовательность переписать несколько раз в нужных местах, но, во-первых, это удлинит текст программы и уменьшит ее читабельность, но и существенно увеличит вероятность появления ошибок в программе. В большинстве языков программирования для решения этой проблемы введено понятие подпрограммы (название зависит от языка). Подпрограмма – это «кусок» кода, который вынесен из основной программы и которому дано уникальное имя. В месте, где необходимо выполнить эту последовательность кода, необходимо просто сослаться на имя подпрограммы. Это называется вызовом подпрограммы.
В системе Mathcad Prime, практически каждая составленная программа, может быть использована при составлении более сложных программ в качестве подпрограммы – функции. Формально, подпрограммой, состоящей из одного оператора, является любая функция пользователя, входящая в состав другой программы.
Схема взаимодействия основной программы с подпрограммой:
Подпрограмма составляется по тем же правилам что и основная программа. Параметры подпрограммы называются формальными. Обращение к подпрограмме происходит по имени с указанием списка фактических параметров (если в описании программы присутствует список формальных параметров), т.е.:
<имя> (<список фактических параметров>)
115

Фактические параметры указывают, при каких конкретных значениях осуществляются вычисления в теле программы. Фактические параметры отделяются друг от друга запятой. При выполнении подпрограммы, его формальные параметры заменяются на фактические параметры основной программы.
Между фактическими и формальными параметрами должно быть соответствие по количеству, порядку следования и типу. Это означает следующее:
1)если формальным параметром является простая переменная, то в качестве фактического может использоваться константа, переменная, арифметическое выражение;
2)если формальным параметром является вектор или матрица, то фактическим должен быть вектор или матрица.
Имена фактических параметров при вызове подпрограммы могут либо совпадать, либо не совпадать с именами ее формальных параметров. Однако, для лучшего понимания процесса взаимодействия подпрограммы с основной программой, все же лучше использовать разные имена. Например, если – подпрограмма, а
– вызов подпрограммы из основной программы, то
и
– формальные параметры, а и
–фактические параметры.
Примечание: Во избежание различных ошибок логического характера, рекомендуется использовать, разные имена для основной программы и подпрограмм, а также разные имена аргументов (формальных параметров).
Упражнение 1
Вычислить сумму: S = 1!+ 2!+,..., n!, n 1 , используя подпрограмму вычисления факториала числа.
Порядок выполнения:
1. Наберите подпрограмму для вычисления факториала, для этого запишите и соответствующие операторы.
2.Наберите основную программу , для этого запишите и соответствующие операторы.
3.Проверьте работу программы при , для этого наберите
, затем обычный знак равенства =.
116

Блок – схема:
Начало
n
S:=0
-i,1,
S |
k: |
|
|
Конец |
P( |
|
|
|
S:=S |
Здесь, S– сумма, i – параметр цикла и фактический параметр, k – формальный параметр, P(k) – подпрограмма вычисления факториала, P– возвращаемый подпрограммой результат.
Вид документа Mathcad Prime:
Пояснение к программе: Здесь, – имя подпрограммы для вычисления
факториала и одновременно результат его работы; |
– |
имя основной |
|||||
программы и одновременно результат его |
работы; |
– |
|||||
соответствующие им формальные параметры; |
– параметр цикла для |
|
|||||
и . В основной программе, |
еще и выполняет роль фактического |
||||||
параметра, подставляемого |
вместо |
после |
каждого |
обращения |
к |
||
подпрограмме. До входа в циклы |
присваивается , а |
– |
. Обращение к |
||||
подпрограмме происходит |
– раз (PodProg1). |
|
|
|
|
117

|
|
Упражнение 2 |
|
|
|||
|
|
|
|
|
|
|
|
Найти значения функции |
z = |
ch( x2 −1) − ch( x +1) |
, где x |
меняется от 3 до |
|||
ch( x) |
|||||||
|
|
|
|
4 с шагом 0,2. Вычисление гиперболического косинуса ch(k ) = ek + e−k
2
оформить в виде подпрограммы.
Порядок выполнения: |
|
1. Наберите |
:=1. |
2.Наберите подпрограмму для вычисления гиперболического косинуса, для этого запишите
и соответствующие
|
операторы. |
|
|
3. |
Наберите основную программу , для этого |
запишите |
и |
|
соответствующие операторы. |
|
|
4. |
Проверьте работу программы, для этого наберите |
, затем обычный |
|
|
знак равенства =. |
|
|
Вид документа Mathcad Prime:
Пояснение к программе: Здесь, – имя подпрограммы для вычисления факториала и одновременно результат его работы; – имя основной
118

программы; |
– параметр цикла; |
– |
выполняет роль индексов для |
|||
векторов – столбцов |
и (массивов |
и ); |
– вектор - столбец, |
|||
состоящий из значения переменной |
; |
– вектор - столбец, состоящий из |
||||
значения переменной |
. До входа в цикл переменной присваивается |
|||||
начальное значение . В соответствии с условием задачи, в теле цикла |
, |
|||||
происходит формирование исходного векторов – столбцов |
и |
|||||
результирующего , а также изменение |
на . |
|
|
Как видно из полученного результата, тело цикла повторяется – раз, а обращение к подпрограмме происходит - раз ( ), используя каждый
раз в качестве фактических по |
параметра, которые подставляются |
вместо формального параметра |
подпрограммы . |
Вывод полученных результатов записан в виде вектора - строки из двух элементов, причем первый элемент представляет собой исходный вектор – столбец , второй результирующий вектор – столбец
(PodProg2) .
Реализация рекурсивных алгоритмов в Mathcad Prime
До сих пор мы рассматривали случаи, когда основная программа обращается к подпрограмме, но существуют случаи, когда в теле программы (подпрограммы) происходит обращение к самой себе.
Рекурсия – это такой способ организации вычислительного процесса, при котором программа (подпрограмма) в ходе выполнения составляющих ее операторов обращается сама к себе.
Алгоритм называется рекурсивным, если он прямо или косвенно обращается к самому себе. Часто в основе такого алгоритма лежит рекурсивное определение какого-то понятия.
Например, вычисление факториала можно определить следующим
1, если n = 0
образом: n! =
n (n −1)!, если n 0
В Mathcad Prime, имеется возможность для реализации рекурсивных алгоритмов. Рассмотрим эту возможность на примере вычисления факториала рекурсивным методом.
119

Вид документа Mathcad Prime:
Пояснение к программе: Здесь, – имя программы вычисления факториала; – результат вычисленного факториала; – формальный параметр программы ;
– фактический параметр, который из тела основной программы подставляется вместо
, т.е. фактически происходит обращение программы к самой себе;
– фактический параметр для вычисления
(Rekursia)
Рекурсивный алгоритм обращается к самому себе, пока не выполнится определенное условие, поэтому в любой рекурсивной подпрограмме
должна быть нерекурсивная ветвь (в нашем примере это: ).
Рекурсию, в Mathcad Prime, можно организовать и не прибегнув к вкладке Программирование. Для этих целей используют оператор условного ветвления . Оператор следует набирать вручную, на клавиатуре.
Вид документа Mathcad Prime:
Примечание: Следует, помнить, что рекурсивные определения подпрограмм далеко не всегда являются самыми эффективными в вычислительном отношении, несмотря на их краткость и элегантность. Часто оказывается, что определения, использующие операторы цикла, вычисляют нужные значения быстрее.
120