- в аргументах большинства функций;
- в экспонентах;
- в верхних и нижних индексах.
- имя переменной;
- имя переменной с верхним или нижним индексом;
- явный вектор или матрицу;
- имя функции с аргументами: f(x,y)
- аргументы в функции;
- первые два элемента области в определении интервала;
- выражения в графике элементы во входной таблице нижние индексы в матрице.
Сообщение об ошибках в символьных вычислениях
Выражение, отмеченное сообщением об ошибке, не обязательно содержит ее причину. Причиной ошибки могут быть функции или переменные, определенные в рабочем документе значительно ранее. Для устранения ошибки придется отредактировать именно ее.
Рассмотрим допустимые в MathCAD имена переменных и функций. Имена в MathCAD могут содержать любые из следующих символов:
· прописные и строчные латинские буквы;
· цифры от 0 до 9
· знак подчеркивания _
· штрих ` Это не апостроф. Находится на одной клавише с тильдой ~
· символ процента %
· Имена переменных и функций не могут включать пробелы или любые другие символы, не перечисленные выше.
MathCAD не делает различий между именами переменных и именами функций. Если определить вначале f(x), а затем переменную f, окажется невозможным использовать f(x) где-либо ниже определения f некоторые имена уже используются MathCAD для встроенных констант, единиц измерения и функций. Хотя эти имена можно переопределить, этот уничтожит их встроенные значения.
MathCAD различает в именах символы верхнего и нижнего регистра, а также различные шрифты.
Кроме того, среда MathCAD включает так называемые предопределенные переменные. MathCAD содержит 8 переменных, значения которых определены сразу после запуска программы. Они называются встроенными или предопределенными. Эти переменные имеют или общепринятое значение (например, пи или е), или используются как внутренние переменные, управляющие работой MathCAD. Эти переменные можно переопределять, например, определим е:= 2. Ниже этого определения переменная е примет в рабочем документе новое значение.
Приведем примеры некоторых встроенных переменных:
е=2.71828 – основание натурального логарифма;
Е=10^307 – машинная бесконечность;
% =0.01 – процент.
MathCAD интерпретирует все, начинающееся цифрой, как число. Цифра может сопровождаться:
· другими цифрами;
· десятичной точкой;
· цифрами после десятичной точки;
· символами h или o для шеснадцатеричных и восьмеричных чисел; символами i или j для комплексных чисел. Комплексные числа MathCAD воспринимает в форме a+bi (или a+bj). Специальные функции и операторы для работы с комплексными числами:
· Re(z) – вещественная часть числа z;
· Im(z) – мнимая часть числа z;
· Arg(z) – аргумент числа z (угол в комплексной плоскости между вещественной осью и радиус-вектором, определяемым числом z);
Одиночное число в MathCAD называют скаляром. Столбец чисел называется вектором, а прямоугольная таблица чисел — матрицей. Способы создания массива:
· заполнить массив пустых полей
· использовать дискретный аргумент
Можно различать имена векторов, матриц и скаляров, используя различный шрифт для их описания.
В системе Mathcad можно реализовать расчеты по сложным разветвленным алгоритмам или с циклическими процессами.
Это реализуется использованием встроенных программных операторов, похожих на используемые в различных языках
программирования (рис. 1.17). Как видно на рис. 1.18 и 1.19, где вычисляется факториал, программный модуль в системе Malhcad
превратился в самостоятельный блок, причем при необходимости выполнить несколько операторов, их объединяют жирной
вертикальной чертой.
Модуль может вести себя как безымянная функция без параметров, но возвращающая результат – первый пример.
Программный модуль может выполнять и роль тела функции пользователя с именем и параметрами – второй пример.
Набор программных операторов для создания программных модулей ограничен и содержит следующие элементы:
-
Add Line – создает и при необходимости расширяет жирную вертикальную линию,
справа от которой в шаблонах задается запись программного блока; - – символ локального присваивания (в теле модуля);
- if – условный оператор;
- for – оператор задания цикла с фиксированным числом повторений;
-
while – оператор задания цикла, действующего до тех пор, пока выполняется
некоторое условие; -
otherwise – оператор иного выбора
(обычно применяется с if); - break – оператор прерывания;
- continue – оператор продолжения;
- return – оператор возврата;
- on error – оператор обработки ошибок.
Оператор добавления линии Add Line
выполняет функции расширения программного блока. Расширение фиксируется удлинением
вертикальной черты программных блоков или их древовидным расширением. Благодаря этому, в принципе,
можно создавать сколь угодно большие программы.
Оператор внутреннего присваивания
выполняет функции внутреннего,
локального присваивания. Например, выражение
присваивает переменной x значение 123.
Локальный характер присваивания означает, что такое значение х сохраняет только в теле программы.
За пределами тела программы значение переменной х может быть неопределенным, либо равно значению,
которое задается вне программного блока операторами локального := или глобального присваивания.
Условный оператор if является оператором для создания условных выражений.
Он задается в виде:
Если условие выполняется, то возвращается значение выражения. Совместно с этим оператором часто
используются операторы прерывания break и иного выбора otherwise.
Оператор цикла for
служит для организации циклов с заданным числом повторений. Он записывается в виде:
Эта запись означает, что выражение, помешенное в расположенный ниже заменитель, будет выполняться для значений
переменной Var, меняющихся от Nmin до Nmax с шагом +1. Переменную счетчика Var можно использовать в
исполняемом выражении.
Оператор цикла while служит для организации циклов, действующих до тех пор,
пока выполняется некоторое условие. Этот оператор записывается в виде:
Выполняемое выражение записывается на место расположенного ниже заполнителя.
Оператор иного выбора otherwise обычно используется совместно с
оператором . Это поясняет следующая программная конструкция:
Здесь f(x) получает значение 1, если х>0, и –1 во всех остальных случаях.
Оператор прерывания break вызывает прерывание работы программы всякий раз,
как он встречается. Чаще всего он используется совместно с оператором условного выражения
if и операторами циклов while и for,
обеспечивая переход в конец тела цикла.
Оператор продолжения continue используется для продолжения работы
после прерывания программы. Он также чаще всего используется совместно с операторами задания циклов
while и for, обеспечивая возвращение в точку прерывания и
продолжение вычислений.
Оператор возвращения return прерывает выполнение программы и возвращает
значение операнда, стоящего следом за ним. Например, конструкция
будет возвращать значение 0 при любом х < 0.
Оператор и функция обработки ошибок
позволяет создавать конструкции обработчиков ошибок. Этот оператор задается в виде:
Здесь если при выполнении Выражения_1 возникает ошибка, то выполняется Выражение_2.
Для обработки ошибок полезна также функция error(S), которая, будучи помешенной в
программный модуль, при возникновении ошибки выводит всплывающую подсказку с надписью, хранящейся в
символьной переменной S.
Программный модуль, в сущности, является функцией, но описанной с применением упомянутых программных
средств. Она возвращает значение, определяемое последним оператором (если не предусмотрено иное с помощью
оператора return). Это значит, что после такого модуля, выделенного как целый блок,
можно поставить знак равенства для вывода результата его работы (см. рис. 1.18). В блоке могут
содержаться любые операторы и функции входного языка системы. Для передачи в блок значений переменных
можно использовать переменные документа, которые ведут себя в блоке как глобальные переменные.
Обычно модулю присваивается имя со списком переменных, после которого идет знак присваивания:=. Переменные в списке являются локальными и им можно присваивать значения при вызове
функции, заданной модулем. Локальный характер таких переменных позволяет использовать для их
идентификаторов те же имена, что и у глобальных переменных документа. Однако лучше этого не делать и
использовать разные имена для локальных переменных программных модулей и переменных документа.
MathCAD – это система, ориентированная на пользователя, который не обязан знать абсолютно ничего о программировании. Создатели MathCAD изначально поставили перед собой такую задачу, чтобы дать возможность профессионалам – математикам, физикам и инженерам самостоятельно проводить сложные расчеты, не обращаясь за помощью к программистам. Несмотря на блестящее воплощение этих замыслов, выяснилось, что совсем без программирования MathCAD серьезно теряет в своей силе, в основном, из-за недовольства пользователей, знакомых с техникой создания программ.
В очень ранних версиях MathCAD встроенного языка программирования не было. Чтобы применять привычные операции проверки условий и организовывать циклы, приходилось изобретать причудливую смесь из встроенных функций if и until, а также комбинаций ранжированных переменных. Но надо отметить, что использование ранжированных переменных – мощный аппарат MathCAD, похожий на применение циклов в программировании. В подавляющем большинстве случаев намного удобнее организовать циклы с помощью ранжированных, чем заниматься для этого программированием.
И тем не менее встроенный язык программирования MathCADпозволяет решать самые различные, в том числе и довольно сложные, задачи и является серьезным подспорьем для расчетов. Поэтому последние версии MathCAD имеют не очень мощный, но весьма элегантный собственный язык программирования.
Для вставки программного кода в документы MathCAD имеется специальная панель инструментов. Большинство кнопок этой панели выполнено в виде текстового представления операторов программирования, поэтому их смысл легко понятен. Операторы программирования могут быть введены только с этой панели, но никак не с клавиатуры (можно еще их вводить с помощью сочетаний клавиш, которые приведены в тексте всплывающей подсказки).
Создание программного блока начинается с команды . Нажатие этой клавиши приведет к тому, что в рабочей области документа появится вертикальная черта, а справа от нее – два пустые поля ввода . Вертикальная черта означает, что строки, находящиеся справа от нее, образуют линейную программную последовательность операций. Эта черта является особенностью программ MathCAD. В полях ввода можно ввести две первые строки программы, а если требуется большее число строк, то необходимо нажимать клавишу столько раз, сколько необходимо строк. Не стоит забывать, что программа является полноценным выражением MathCAD. Это выражение может быть использовано для присвоения значения скалярной или векторной переменной или определения функции, или даже в составе другого выражения, в том числе и другой программы.
Для определения функции это будет выглядеть следующим образом:
Внутри программы можно использовать глобальные переменные документа, но изменить их значение внутри программы никак нельзя. Можно создать в программе другие переменные, доступ к которым может осуществляться только из самой программы. Эти переменные называются локальными переменными. Локальные переменные «не видны» извне. Локальная переменная создается с помощью знака локального присвоения с панели Programming. Для оператора локального присваивания, так же как и для операторов обычного и глобального присваивания, можно изменить внешний вид так, чтобы он выглядел как обычный знак равенства. Для этого достаточно вызвать контекстное меню этого оператора и в нем выбрать команду View Definition As/Equal.
Последняя строка любой программы не должна содержать никаких управляющих операторов. Эта строка задает значение, возвращаемое программой. В качестве этого значения может быть скаляр (число или переменная), вектор или матрица. Таким образом, последняя строка программы может содержать имя локальной переменной либо некоторое математическое выражение, куда входят как локальные, так и глобальные переменные, либо вектор или матрицу.
Вставить строку программного кода в уже созданную программу можно в любой момент с помощью той же самой кнопки Add Line. Для этого следует поместить на нужное место внутри программы линии ввода.
Если вертикальная линия ввода находится в начале текущей строки, то нажатие кнопки приведет к появлению новой строки перед текущей строкой, если вертикальная линия ввода находится в конце строки, то нажатие кнопки приведет к появлению новой строки после текущей. Можно выделить только часть текущей строки, что повлияет на положение новой строки в программе (например, если необходимо для некоторого условия выполнить не одно действие, а несколько). Таким образом, основной принцип создания программных модулей заключается в правильном расположении строк кода. Ориентироваться в их действии довольно легко, т.к. фрагменты кода одного уровня сгруппированы в программе с помощью вертикальных черт.
Проверка условий в программах.
Программы в MathCAD могут быть не только линейными, но и разветвленными. Одним из вариантов ветвления в программах является проверка условия. Условия могут проверять значения как локальных, так и глобальных переменных, а также выражений, содержащих эти переменные.
Для проверки условий в программах MathCAD служит оператор if . В поле ввода справа нужно ввести условие. Для ввода условий служит панель Boolean. На этой панели есть кнопки, предназначенные для проверки условий , а также кнопки, предназначенные для вставки логических операций (логическое отрицание, операция «и», операция «или», операция «исключающее или»). Вторые позволяют создавать сложные условия. В поле ввода слева нужно ввести строку программы, которая должна выполняться, если введенное условие истинно.
Если для условия «истинно» необходимо выполнение нескольких строк программы, надо воспользоваться кнопкой .
Если невыполнение условия должно привести к выполнению какого-либо иного программного кода, можно в строке, следующей за оператором if, вставить оператор . В поле ввода слева от этого оператора необходимо ввести строку программы, которая будет выполняться только в том случае, если не выполнилось условие, заданное в операторе if.
Следует помнить, что если в программе введено подряд несколько строк с оператором if , то выражение слева от оператора otherwise будет выполнено только в том случае, если не выполняются условия, заданные во всех операторах if.
Другим очень важным элементом при создании нелинейных программ являются циклы. Циклы позволяют повторять несколько раз выполнение одного и того же программного блока. Для создания циклов в MathCAD предусмотрено два оператора for и while.
Цикл for – цикл со счетчиком.
В таких циклах создается некоторая переменная-счетчик, значение которой изменяется после каждого выполнения тела цикла. Выход из цикла происходит при достижении этой переменной заданного значения. Этот оператор вводится с панели Programming клавишей for . В поле ввода после слова for следует указать имя переменной – счетчика. Это может быть любое имя, которое не использовалось ранее в программе. Внутри цикла можно использовать эту переменную в любых выражениях, нельзя только присваивать ей никакого значения. В поле ввода после знака следует указать диапазон значений переменной-счетчика. Вводить диапазон в данном случае следует так же, как и при создании ранжированной переменной. Вместо диапазона в данном поле ввода можно указать имя некоторого массива (вектора или матрицы). В этом случае переменная-счетчик будет последовательно принимать значения всех элементов этого массива. Возможность перебора элементов массива не может быть реализована с помощью цикла while, поэтому именно в таких случаях цикл for и является незаменимым. В поле ввода под словом for следует ввести тело цикла.
Пример: Заполнить вектор числами от xнач до xкон с шагом h. Затем определить сумму элементов этого вектора и найти их среднее арифметическое значение.
Цикл while – цикл, который выполняется до тех пор, пока выполняется определенное условие.
В поле ввода справа от слова while следует ввести условие. Это условие строится по тем же правилам, что и в операторе if. Оно будет проверяться после каждого выполнения тела цикла и в тот момент, когда условие перестанет выполняться, повторение тела цикла прекратится. В поле ввода ниже слова while следует ввести тело цикла (напомним, что для ввода нескольких строк в теле цикла надо воспользоваться кнопкой Add Line).
Пример 1: Вычислить сумму с точностью е.
Пример2: Найти первый элемент, превышающий определенный порог.
Использование операторов break и continue.
Иногда возникает необходимость повлиять на выполнение цикла некоторым образом, например, прервать его выполнение по какому-либо условию или выполнять некоторые итерации не так, как другие. Для этого и служат операторы break и continue.
Оператор break, если он расположен внутри цикла, означает немедленное прекращение выполнения текущей итерации и выход из цикла. Если есть необходимость прекратить выполнение цикла по какому-либо условию, то следует использовать конструкцию следующего вида break if (условие).
Пример: Выделить из массива все элементы от начала и до первого вхождения в него заданного числа.
Оператор continue используется для того, чтобы немедленно перейти в начало цикла и начать следующую итерацию. Этот оператор также обычно используется в составе конструкции вида continue if (условие). Оператор continue используется в случаях, когда необходимо чтобы некоторые вычисления производились для одних итераций и не производились для других.
Пример: Требуется заполнить элементы квадратной матрицы в шахматном порядке.
Оператор return (возврат значения).
Как мы уже указывали, результат выполнения программного модуля помещается, как правило, в последней его строке. Но можно прервать выполнение программы в любой ее точке (например, с помощью условного оператора) и выдать некоторое значение, применив оператор return. В этом случае при выполнении указанного условия значение, введенное в поле ввода после return, возвращается в качестве результата, и никакой другой код больше не выполняется. Вставляется в программу оператор return с помощью одноименной кнопки панели Programming . Пример:
Система MathCAD предоставляет пользователю некоторый контроль над ошибками, которые могут возникнуть при вычислении выражений или при выполнении программ. Для этой цели служит оператор on error, который можно вставить с помощью одноименной кнопки панели Programming . В поле ввода справа следует ввести выражение или программу, которые необходимо вычислить (известно, что это выражение может содержать ошибку при определенных значениях входных параметров). В поле ввода слева следует ввести выражение, которое будет выполнено вместо правого выражения, если при выполнении последнего возникнет ошибка. Пример: Если аргументу функции присвоено нулевое значение, то в программе возникает ошибка – деление на нуль. Но за счет оператора on error сообщение не выводится, а функции в этой точке присваивается значение, указанное слева от оператора on error – значение машинной бесконечности.
В поле ввода слева может быть введено текстовое выражение, сообщающее об ошибке
Конечно, если программа содержит только простейшие математические операции, то никаких ошибок, кроме деления на нуль или превышения наибольшего допустимого числа в ней возникнуть не может. В таких программах оператор on error используется редко. Но для более сложных программ, которые содержат функции решения дифференциальных уравнений, аппроксимации или другие сложные функции MathCAD, использование on error может избавить от многих трудностей.
Иногда может возникнуть ситуация обратная той, которая была описана выше, т.е. необходимо, чтобы при определенных условиях результатом выражения было сообщение об ошибке, хотя в действительности при этом не возникает ни одной стандартной ошибки MathCAD. Для таких случаев в MathCAD предусмотрена встроенная функция error. В качестве аргумента этой функции нужно в кавычках указать текст сообщения об ошибке, который должен быть выведен. Таким образом, если необходимо, чтобы программа возвращала ошибку при определенном условии, то следует использовать конструкцию вида: error («текст ошибки») if (условие).
Для того, чтобы иметь возможность нормально вводить текст на русском языке в аргумент функции error (а также во все другие функции со строками), следует изменить шрифт, который используется во встроенном стиле Constant. Для того чтобы этот стиль правильно отображал русские буквы, установите курсор на любом числе или строковом выражении в формульном блоке. При этом в поле на панели инструментов Formatting, отображающем текущий стиль, должно быть написано – Constant. Теперь выберите из раскрывающегося списка шрифтов шрифт, поддерживающий кириллицу.
1. Вычислить функцию sin(x) с точностью е.
2. Даны массивы А(5) и В(5). Получить массив С, в который записаны сначала элементы
массива А в порядке возрастания, а затем элементы массива В порядке убывания
3. По введенным значениям коэффициентов А, В, С определить корни квадратного уравнения
4. Дан массив натуральных чисел В(10). Определить, есть ли в нем 4 последовательных числа (например, 1, 2, 3, 4, и т.п.). Напечатать такие группы чисел.