- •ПРЕДИСЛОВИЕ
- •ВВЕДЕНИЕ
- •ЧАСТЬ 1. ПЕРВОЕ ЗНАКОМСТВО С MATHCAD
- •Введение. Общие правила работы в среде Mathcad
- •§1. Ваши первые примеры
- •1.1. Ввод данных, формул, вывод решения
- •1.3. Построение графика функции одной переменной
- •1.4. Построение графика функции двух переменных
- •1.5. Освоение функции CreateMesh для форматирования графика
- •§2. Решение уравнений
- •2.2. Нахождение корня уравнения. Операторная скобка Given – Find
- •§3. Учебная задача
- •3.1. Постановка задачи
- •§4. Индивидуальные задания по части 1
- •ЧАСТЬ 2. МАТРИЦЫ И ВЕКТОРЫ В MATHCAD
- •Введение. Общие сведения о матричной алгебре в Mathcad
- •§5. Осваиваем технику работы с матрицами и векторами
- •5.1. Ввод матрицы и вектора
- •5.3. Обращение к столбцу матрицы
- •5.6. Запись массивов данных на диск
- •5.7 Соединение (композиция) матриц и векторов
- •§6. Алгебра матриц
- •6.1. Транспонирование матриц
- •6.2. Умножение матрицы на скаляр
- •6.3. Операции умножения матриц
- •6.4. Сложение матриц
- •6.5. Операции с квадратными матрицами
- •6.6. Решение примеров с действиями алгебры матриц
- •6.7. Специальные приемы работы с матрицами
- •6.8. Ранг матрицы
- •§7. Некоторые применения матриц и векторов
- •7.1. Нахождение всех корней уравнения n-й степени
- •7.2. Применение матриц и векторов для решения систем линейных уравнений
- •7.3. Применение матриц и векторов в задаче интерполяции
- •§8. Учебная задача
- •8.1. Постановка задачи
- •8.2. Решение
- •§9. Индивидуальные задания по части 2
- •ЧАСТЬ 3. ПРОГРАММИРОВАНИЕ В MATHCAD
- •Введение. О программировании в среде Mathcad
- •§10. Осваиваем технику программирования в Mathcad. Ваша первая программа
- •10.2. Выполнение этапа 2 «Разбор способа получения результата. Расчет примеров»
- •10.4. Выполнение этапа 4 «Расчет контрольных примеров применительно к алгоритму»
- •10.5. Выполнение этапа 5 «Составление программы, отладка на контрольных примерах»
- •§11. Задания для самостоятельной разработки программы
- •§12. Учебная задача
- •12.1. Введение
- •12.2. Общие положения
- •12.3. Выполнение фазы 1 решения задачи «Понять существо задачи»
- •12.4. Выполнение фазы 2 решения задачи «Предложить идею алгоритма»
- •12.6. Выполнение фазы 4 «Оценить точность программы, а также ее потенциал в качестве средства для решения других задач»
- •§13. Индивидуальные задания по части 3
- •ЧАСТЬ 4. СИМВОЛЬНЫЕ ПРЕОБРАЗОВАНИЯ В MATHCAD
- •Введение. Сведения о символьных преобразованиях в Mathcad
- •14.1. Опция Evaluate – Symbolically
- •14.3. Опция Symbolics – Expand
- •14.4. Опция Symbolics – Variable
- •§15. Учебная задача
- •15.1. Постановка задачи
- •15.2. Этапы решения
- •15.6. Выполнение этапа 4 «Решение» (на компьютере)
- •§16. Создание анимационных клипов
- •16.1. Общие сведения
- •16.2. Фазы создания анимационного клипа
- •Список использованной литературы
- •2. Арифметические, алгебраические и логические операторы
- •6. Часто употребляющиеся функции
- •8. Графики
- •Общие замечания
- •1. Плоскости
- •2. Прямая линия в пространстве
- •3. Цилиндр
- •4. Конус
Приложение 2
СПРАВОЧНИК КОМАНД И КОНСТРУКТОВ, ИСПОЛЬЗУЕМЫХ ДЛЯ ПРОГРАММИРОВАНИЯ В MATHCAD
Общие замечания
1. Команды MathCAD НЕЛЬЗЯ набирать литерами. Их можно либо вводить из окошка «Программирование» (меню View – Toolbars– Programming, Вид – Инструменты – Программирование), либо использовать сочетания клавиш (это быстрее). Сочетания клавиш видны в окошке программирования в форме подсказок, см. рис. П 2.1. Если Вам не приходится программировать часто, запоминать сочетания клавиш нецелесообразно.
Всплывающая подсказка («хинт»): оператор for вводится клавишами
<Ctrl>+<кавычки>
а) Окошко с операторами |
б) Всплывающие |
программирования |
подсказки о сочетании |
|
клавиш |
Рис. П2.1. Команды и операторы программирования.
2. Зоны охвата программных конструктов (for…, while…, if…) ограничиваются линиями, которые придают программе вид легко читаемой структуры (рис. П 2.2). Линия вводится командой Add Line (добавить линию) или клавишей «закрывающая квадратная скобка». Часто такие линии формирует сам MathCAD. Пример структуры программы:
169
max_value(M) := |
max ← M0 |
|
|
|
|
|
|
|
Зона охвата конструкта for |
|
|||
|
|
|
|
|
|
|
|
number_max ← 0 |
|
(ДЛЯ КАЖДОГО), |
|
||
|
n ← rows(M) − 1 |
|
внутри – зона конструкта if |
|
||
|
|
|
|
|||
|
for |
k 1.. n |
|
|
|
|
|
if Mk > max |
|
|
|||
|
|
max ← Mk |
|
|
||
|
|
|
|
|||
|
|
number_max ← k |
Зона охвата конструкта |
|
||
|
|
if (ЕСЛИ) |
|
|||
|
|
max |
|
|
||
|
|
|
||||
|
|
|||||
|
|
|
|
|
|
|
|
number_max |
|
|
Рис. П2.2. Структура программы. Линии выделяют зоны действия конструктов.
3. Все MathCAD-программы строятся как программы-функции. Переменные внутри программы являются локальными (действуют только в пределах программы). В конце программы приводится либо скалярная переменная, либо вектор, либо матрица, которые возвращает функция. Например, программа на рис. П 2.2 возвращает вектор из двух значений, которым внутри программы присвоены значения max и number_max.
Команды, конструкты и операторы с примерами их использования.
Оператор присваивания (стрелка справа налево). Пример: number_max ← 0
Согласно этому оператору ЭВМ проводит следующие действия:
−Формирует константу 0;
−Находит в основной памяти свободную ячейку;
−Присваивает этой ячейке имя (идентификатор) number_max;
−Заносит в эту ячейку константу 0.
Оператор читается так: ПРИСВОИТЬ значение НУЛЬ переменной с ИДЕНТИФИКАТОРОМ number_max.
Простой оператор if (ЕСЛИ) и otherwise (В ОСТАЛЬНЫХ СЛУ-
ЧАЯХ). Пример:
m(s) := |
V ← "No" |
if s |
|
0 |
ОБЯЗАТЕЛЬНО жирный знак |
|
|||||
|
|||||
|
V ← "Yes" |
otherwise |
равенства <Ctrl>+<=> |
170
Программа возвращает No, если s = 0. В других случаях (т. е. если s ≠ 0) функция возвращает Yes.
Виды условий: равно (жирный знак равенства <Ctrl>+<=>), не рав-
но (<Ctrl>+<3>), больше, меньше, больше или равно (<Ctrl>+ <закры-
вающая_круглая_скобка>), меньше или равно (<Ctrl>+<открывающая_ круглая_скобка>) или сочетания этих условий через логические функции ИЛИ (обозначается знаком +), И (обозначается знаком умножения, *). Пример:
m(s) := |
V ← "No" |
if [(s |
|
0) + (s ≠ 5)] (s ≠ "April" ) |
|
||||
|
||||
|
V ← "Yes" |
otherwise |
Программа возвращает No, если [ s = 0 ИЛИ s не равно 5] И [s не равно April]. Во всех других случаях программа возвращает Yes.
Сложный оператор (конструкт) if (ЕСЛИ). Содержит последова-
тельность команд, охваченных действием оператора. Для ввода линии, ограничивающей зону действия, нужно установить курсор в левый слот и ввести команду Add Line (можно клавишей «открывающая квадратная
f(g) := |
|
if |
|
g |
|
4 |
|
скобка»). Пример приведен |
|||
|
|
|
|
слева. |
|
|
|
||||
|
|
|
|
|
|
||||||
|
|
|
|
|
|
||||||
|
|
|
|
month ← "April" |
Если g = 4, то |
функция |
|||||
|
|
|
|
||||||||
|
|
|
|
days ← 30 |
|||||||
|
|
|
|
возвратит: |
|
|
|
||||
|
|
|
|
|
|
|
|
"April" |
|
|
|
|
|
|
|
time ← "Spring" |
|
|
|
||||
|
|
if |
|
g ≠ 4 |
|
f(4) = |
30 |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
month ← "I don't know" |
"Spring" |
|
|
||||
|
|
|
|
days ← "I don't know" |
Если g не равно 4, то |
||||||
|
|
|
|
time ← "I don't know" |
|||||||
|
|
|
|
функция возвратит, например, |
|||||||
|
|
month |
"I don't know" |
|
|||||||
|
|
|
days |
|
|
|
|
|
|||
|
|
|
|
f(9) = "I don't know" |
|
||||||
|
|
|
|
time |
|
"I don't know" |
|
||||
|
|
|
Конструкт for (ДЛЯ КАЖДОГО…). Конструкт for предназначен для повторяющихся (циклических) вычислений. Пример: найти сумму всех элементов массива M. Пусть в этом массиве хранятся следующие значения:
171
|
2.2 |
||
|
|
1.9 |
|
|
|
|
|
M := |
|
0.6 |
|
|
|
||
|
|||
|
|
2.3 |
|
|
|
2.5 |
|
|
2.1 |
sum(M) := |
|
sum ← 0 |
– заготовка переменной для суммы (как бы пустой коше- |
||
|
лек) |
|
– расчет максимального номера элемента массива |
||
|
|
n ← rows(M) − 1 |
|
||
|
|
|
М (по числу строк в массиве), единица учитывает |
||
|
|
for j 0..n |
|
нумерацию с нуля |
|
|
|
|
– цикл для каждого значения переменной |
||
|
|
sum ← sum + M |
|
j = 0, 1, .., n (т. е. до последнего элемента массива) |
|
|
|
j |
– добавление очередного элемента массива к |
||
|
|
sum |
|
уже накопленной сумме |
|
|
|
– значение, возвращаемое функцией |
sum(M) = 11.6
Проследим, как работает программа с циклом for и массивом M.
1.До начала цикла sum = 0.
2.Номер последнего элемента n = 6 –1 = 5
3.Первый цикл: j = 0.
a.Формула внутри цикла читается «по-еврейски» – справа нале-
во. Вначале в процессор поступает значение Mj с j = 0, т. е. нулевой элемент 2.2. Затем на другой регистр процессора вызывается ячейка с идентификатором sum (в ней нуль). Затем процессор складывает оба числа (2.2 + 0) = 2.2 и отсылает в ячейку памяти с идентификатором sum. Теперь там число 2.2.
b.Оператор for увеличивает номер цикла на 1 (получается j = 1)
исравнивает c n (равно 5). Поскольку номер цикла меньше 5,
нужен еще один цикл с j = 1.
4.Второй цикл: j = 1.
a.Вначале в процессор поступает значение Mj с j = 1, т. е. первый элемент 1.9. Затем на другой регистр процессора вызывается ячейка с идентификатором sum (в ней 2.2). Затем процессор складывает оба числа (1.9 + 2.2 ) = 4.1 и отсылает в ячейку памяти с идентификатором sum. Теперь там число 4.1.
b.Оператор for увеличивает номер цикла на 1 (получается j = 2)
исравнивает c n (равно 5). Поскольку номер цикла меньше 5, нужен еще один цикл с j = 2.
172
5.Третий цикл: j = 2.
a.Вначале в процессор поступает значение Mj с j = 2, т. е. второй элемент 0.6. Затем на другой регистр процессора вызывается ячейка с идентификатором sum (в ней 4.1). Затем процессор складывает оба числа (0.6 + 4.1 ) = 4.7 и отсылает в ячейку памяти с идентификатором sum. Теперь там число 4.7.
b.Оператор for увеличивает номер цикла на 1 (получается j = 3)
исравнивает c n (равно 5). Поскольку номер цикла меньше 5, нужен еще один цикл с j = 3.
6.Четвертый цикл: j = 3.
a.Вначале в процессор поступает значение Mj с j = 3, т. е. третий элемент 2.3. Затем на другой регистр процессора вызывается ячейка с идентификатором sum (в ней 4.7). Затем процессор складывает оба числа (2.3 + 4.7 ) = 7.0 и отсылает в ячейку памяти с идентификатором sum. Теперь там число 7.0.
b.Оператор for увеличивает номер цикла на 1 (получается j = 4)
исравнивает c n (равно 5). Поскольку номер цикла меньше 5, нужен еще один цикл с j = 4.
7.Пятый цикл: j = 4.
a.Вначале в процессор поступает значение Mj с j = 4, т. е. четвертый элемент 2.5. Затем на другой регистр процессора вызывается ячейка с идентификатором sum (в ней 7.0). Затем процессор складывает оба числа (7.0 + 2.5 ) = 9.5 и отсылает в ячейку памяти с идентификатором sum. Теперь там число 9.5.
b.Оператор for увеличивает номер цикла на 1 (получается j = 5)
исравнивает c n (равно 5). Поскольку номер цикла равен 5, нужен еще один (последний!) цикл с j = 5.
8.Шестой цикл: j = 5.
a.Вначале в процессор поступает значение Mj с j = 5, т. е. пятый элемент 2.1. Затем на другой регистр процессора вызывается ячейка с идентификатором sum (в ней 9.5). Затем процессор складывает оба числа (9.5 + 2.1 ) = 11.6 и отсылает в ячейку памяти с идентификатором sum. Теперь там число 11.6.
b.Оператор for увеличивает номер цикла на 1 (получается j = 6)
исравнивает c n (равно 5). Поскольку номер цикла БОЛЬШЕ 5, циклы прекращаются, и программа возвращает число из ячейки sum (там накопилась сумма всех элементов массива 11.6).
173