Метод._MathCAD_Prime
.pdfВывод полученных результатов записан в виде вектора - строки из двух элементов, причем первый элемент представляет собой исходный вектор – столбец , второй результирующий вектор – столбец .
Реализация рекурсивных алгоритмов в Mathcad Prime
До сих пор мы рассматривали случаи, когда основная программа обращается к подпрограмме, но существуют случаи, когда в теле программы (подпрограммы) происходит обращение к самой себе.
Рекурсия – это такой способ организации вычислительного процесса, при котором программа (подпрограмма) в ходе выполнения составляющих ее операторов обращается сама к себе.
Алгоритм называется рекурсивным, если он прямо или косвенно обращается к самому себе. Часто в основе такого алгоритма лежит рекурсивное определение какого-то понятия.
Например, вычисление факториала можно определить следующим
1, если n 0
образом: n!
n (n 1)!, если n 0
В Mathcad Prime, имеется возможность для реализации рекурсивных алгоритмов. Рассмотрим эту возможность на примере вычисления факториала рекурсивным методом.
Вид документа Mathcad Prime:
Пояснение к программе: Здесь, – имя программы вычисления факториала; – результат вычисленного факториала; – формальный параметр программы ; – фактический параметр, который из тела основной программы подставляется вместо , т.е. фактически происходит обращение программы к самой себе; – фактический параметр для вычисления
121
Рекурсивный алгоритм обращается к самому себе, пока не выполнится определенное условие, поэтому в любой рекурсивной подпрограмме
должна быть нерекурсивная ветвь (в нашем примере это: ).
Рекурсию, в Mathcad Prime, можно организовать и не прибегнув к вкладке Программирование. Для этих целей используют оператор условного ветвления . Оператор следует набирать вручную, на клавиатуре.
Вид документа Mathcad Prime:
Примечание: Следует, помнить, что рекурсивные определения подпрограмм далеко не всегда являются самыми эффективными в вычислительном отношении, несмотря на их краткость и элегантность. Часто оказывается, что определения, использующие операторы цикла, вычисляют нужные значения быстрее.
Изображения на тему рекурсия:
122
|
|
|
Индивидуальные задания |
|
|
|
|
|
№ |
|
Задача |
|
1 |
Найдите |
. |
|
|
Нахождение |
(наибольшего общего делителя) двух чисел |
|
|
оформите в виде подпрограммы. |
2Найдите Нахождение (наименьшего общего кратного) двух чисел
оформите в виде подпрограммы.
3
4
5
6
7
8
9
Вычислите |
Ak |
n! |
. |
Нахождение |
факториала |
числа |
||
|
|
|||||||
|
n |
(n k )! |
|
|
|
|||
|
|
|
|
|
|
|||
оформите в виде подпрограммы (учитывать, что 0! 1). |
|
|||||||
Вычислите |
F |
|
n! m! |
. |
Нахождение |
факториала |
числа |
|
|
|
|||||||
|
|
(n m)! |
|
|
|
оформите в виде подпрограммы (учитывать, что 0! 1).
Даны действительные числа и . Получите:
g(1.2, s) g(t, s) g(2s 1,1.5t) |
, где g(a, b) |
a2 b2 |
||||
a2 2ab 3b2 4 |
|
|||||
(оформить в виде подпрограммы) |
||||||
Вычислите Cnm |
n! |
, используя подпрограмму |
||||
|
|
|||||
m!(n m)! |
||||||
|
|
|
|
вычисления факториала (учитывать, что 0! 1).
Даны действительные числа и . Получите:
x min(a,b a), y (min(a b, a b), z min(x y2 ,3.14) . Вычисление минимального значения оформить в виде подпрограммы.
Даны действительные числа и . Получите:
max(a, a b) max(a, b c) . Вычисление максимального
5 max(a c, b)
значения оформить в виде подпрограммы.
Вычислите z a b 2 a 3 a b , используя подпрограмму
вычисления модуля: |
|
x |
|
= x, еслиx 0 |
. |
|
|
||||
|
|
|
|
x, еслиx 0 |
|
|
|
|
|
10 Вычислить S 1k 2k ... nk , где k N , используя
подпрограмму вычисления a n , где k N (учитывать, что a0 1)
11Даны два натуральных числа . Найти разность и
произведение суммы цифр этих чисел. Вычисление суммы цифр числа оформить в виде подпрограммы.
|
Дан одномерный массив целых чисел |
. Вычислить |
|
суммы элементов S1 M1 M2 ... M12 и |
S2 M8 M9 ... M15 . |
|
|
|
123
|
Найти P S1 S2 (Вычисление суммы |
элементов |
массива |
|
|
оформить в виде подпрограммы). |
|
|
|
13 |
Сформировать массив |
й член которого определяется |
||
|
формулой |
Нахождение |
факториала |
числа |
|
оформите в виде подпрограммы (учитывать, что 0! 1). |
14Заменить отрицательные элементы одномерного массива их
модулями, не пользуясь стандартной функцией вычисления модуля. Подсчитать количество произведенных замен.
15Составить программу для вычисления суммы факториалов
всех чётных чисел от до . Нахождение факториала числа оформите в виде подпрограммы (учитывать, что 0! 1).
16 Найдите все коэффициенты разложения (x y)n , т.е. Cnk , где k 0,..., n . Вычисление Cnk оформить в виде подпрограммы.
124
Алгоритм |
– |
набор инструкций, |
описывающих |
порядок |
действий |
|
исполнителя для достижения некоторого результата. |
|
|||||
Часто в качестве исполнителя выступает компьютер, но понятие |
||||||
алгоритма необязательно относится к компьютерным программам, так, |
||||||
например, чётко описанный рецепт приготовления блюда также |
||||||
является алгоритмом, в таком случае исполнителем является человек (а |
||||||
может быть и некоторый механизм, ткацкий станок, и пр.). |
|
|||||
В процессе разработки алгоритма могут использоваться различные |
||||||
способы его описания. Наиболее распространенные: |
|
|||||
– словесная запись; |
|
|
|
|
||
– графические схемы алгоритмов (блок-схемы); |
|
|
||||
– с помощью различных систем программирования; |
|
|
||||
Блок-схема – это графическое представление алгоритма, дополненное |
||||||
элементами словесной записи. На блок-схеме каждый пункт алгоритма |
||||||
изображается соответствующей геометрической фигурой. В табл.1 |
||||||
приведены основные графические элементы, из которых компонуются |
||||||
блок-схемы, их названия и символы. |
|
|
|
|||
Таблица 1 |
|
|
|
|
|
|
Название блока |
Блок |
Отображаемая |
||||
|
|
|
|
функция |
|
|
Начало - конец |
|
Начало, |
конец, |
вход- |
||
|
выход в программах |
|||||
|
|
|
|
|||
Процесс |
|
|
|
Вычисления |
|
|
Альтернатива |
|
|
Проверка условий |
|
||
Ввод - вывод |
|
|
Ввод данных либо вывод |
|||
|
|
результатов |
|
|||
|
|
|
|
|
||
Цикл с параметром |
|
Начало цикла, заголовок |
||||
|
цикла со счетчиком. |
|||||
|
|
|
|
|||
Предопределенный |
|
Вызов подпрограммы |
||||
процесс |
|
|
|
|||
|
|
|
|
|
|
|
В табл. 2 приведены основные базовые элементарные структуры для |
||||||
составления блок-схем. |
|
|
|
|
125
Таблица 2 |
|
|
Название структуры |
|
Изображение |
Следование |
|
|
|
|
– команды алгоритма |
|
а) Полная форма |
|
Ветвление |
|
|
|
Где, – логическое выражение (условие), |
|
|
|
– команды алгоритма |
|
б) Сокращенная форма |
|
|
Где, – логическое выражение (условие), |
|
|
– команда(ы) алгоритма |
|
Цикл |
а) Цикл с предусловием |
|
|
- |
B |
|
|
|
|
Где, – логическое выражение (условие), |
|
|
– команда(ы) алгоритма |
|
|
|
126 |
б) Цикл с постусловием |
|
|
||||
|
S |
|
|
|
|
|
+ |
B |
|
|
|
|
|
|
|
|
|
|
|
|
Где, – логическое выражение (условие), |
||||||
– команда(ы) алгоритма |
|
|
||||
в) Цикл с параметром |
|
|
||||
|
i:=A1 |
|
|
|
|
|
- |
i |
|
|
|
|
|
|
|
|
|
|
|
|
или |
|
|
|
|
|
|
- |
i,A1 |
|
|
|
|
|
|
|
|
|
|
|
|
Где, |
– параметр |
цикла, |
и |
– |
||
начальное |
и |
конечное |
значения |
|||
параметра |
цикла, |
|
– шаг |
изменения |
||
параметра |
цикла, |
– |
команда(ы) |
|||
алгоритма (тело цикла) |
|
|
||||
|
127 |
|
|
|
|
|
Сочетания клавиш для операторов (команд) программирования:
Оператор/ |
Описание |
Сочетание клавиш |
команда |
|
|
Программа
Локальное присваивание
if
else
else if
Ctrl+Shift+}
После набранного if
Ctrl+;
После набранного if
also if
Цикл с предусловием while
Цикл с параметром for
break
continue return
Оператор try/on error
Если, после введенного слова, обозначающего название оператора, нажать клавиши Ctrl и J, то оно будет заменено оператором.
Ctrl+Shift+?
После набранного if
Ctrl+]
Ctrl+Shift+”
Ctrl+Shift+{
Ctrl+Shift+:
Ctrl+\
Ctrl+[
Ctrl+J
128
1.Воскобойников Ю. Е., Задорожный А. Ф. Основы вычислений и программирования в пакете MathCAD PRIME: Учебное пособие. – СПб.: Издательство «Лань», 2016. –224 с.: ил. – (Учебники для вузов. Специальная литература).
2.Забуга Александр Александрович. Теоретические основы информатики: учебное пособие по дисциплине "Информатика" для студентов вузов: для бакалавров и специалистов / А. А. Забуга. - Москва
[и др.]: Питер, 2014. - 208 с.: ил.
3.Информатика: Базовый курс / С. В. Симонович [и др.]. – 2-е изд., перераб. и доп. – СПб: Питер, 2006. – 640 с.
4.Лалетин Н.В. Процедуры и функции в языке Turbo Pascal. Рекурсия: учебное пособие / Н.В. Лалетин; Краснояр. гос. пед. ун-т им. В.П. Астафьева. – Железногорск, 2007. – 82 с.: ил.
5.Агафонов Е.Д. Прикладное программирование: учеб. пособие / Е.Д. Агафонов, Г.В. Ващенко. – Красноярск: Сиб. федер. ун-т, 2015. – 112 с.
6.Клочкова Н.Н., Проценко А.Н. Вычисления в системе MathCAD: лабораторный практикум / Н.Н. Клочкова, А.Н. Проценко. – Самара: Самар. гос. техн. ун-т, 2015. – 90 с.: ил.
7.Основы вычислений и программирования в пакете MathCAD : учеб. пособие / Ю. Е. Воскобойников [и др.] ; под ред. Ю. Е. Воскобойникова ; Новосиб. гос. архитектур.-строит. ун-т (Сибстрин). – Новосибирск: НГАСУ (Сибстрин), 2012. – 212 с.
8.Зализняк, В. Е. Численные методы. Основы научных вычислений: [учебное пособие для студентов вузов, обучающихся по специальности (направлению) подготовки ВПО 010501 (010500.62) "Прикладная математика и информатика" (ОПД.Ф.09 - Численные методы)] / В. Е. Зализняк; Сибирский федеральный университет (СФУ). – 2-е изд., перераб. и доп. – Москва : Юрайт, 2012 .– 357 с.
9.http://pts-russia.com/products/mathcad/
129