Одним из важнейших инструментов математики являются функции. Некоторые функции бывают достаточно сложны, чтобы их уместить в одно выражение. В таком случае прибегают к программной реализации в виде череды вычислений.
Язык программирования Mathcad имеет много элементов сходных с языками высокого уровня для математических расчетов. Дополнение встроенными системными функциями и операторами, а также возможностями символьных и численных расчетов, Mathcad по эффективности не уступает профессиональным системам программирования. При этом язык программирования Mathcad предельно прост.
Функции встроенные в систему, в том числе и в Mathcad, подобны «черному ящику» и пользователи зачастую не задумываются — на основании каких методов и решений достигается цель, поставленная перед функцией, и какова точность. Обычно пользователь только знакомится с ее описанием/спецификацией для вызова, получения решения и ответа.
При программировании пользовательских функций будем придерживаться такого же порядка, то есть идти от спецификации к программированию.
1. MathCad. Вычисление значений числовых выражений
Спецификации функций
Для создания спецификации функции можно обратиться к мастеру функций и более и посмотреть на предоставляемые им для его функций описания. На рис. 3.43 открыта страница со спецификацией функции rnorm.
Рис. 3.43. Спецификация функции, предоставляемая мастером функций
Через формальные параметры программе-функции передаются данные, необходимые для выполнения вычислений внутри программы. Формальные параметры отделяются друг от друга запятой. В качестве формальных параметров используются простые переменные, массивы и функции.
При описании назначения функции необходимо указать, что возвращается функцией в качестве своего результата (функция rnorm возвращает вектор нормально распределенных случайных величин). При этом обязательно нужно объяснить предназначение каждого из формальных параметров, например m — количество значений, mu -среднее значение, sigma — стандартное отклонение.
Программирование функций
Для создания подпрограмм-функций в системе Mathcad предусмотрена специализированная панель Programming (Программирование), содержащая перечень операторов языка программирования. Вид панели Programming представлен на рис. 3.44. Операторы в программу необходимо вставлять с помощью кнопок этой панели. Здесь также
указано назначение основных команд, представленных на панели программирования.
Add Line — добавление новой строки в программу или создание заготовки программы из двух строк, если программы еще нс существует;
(Добавить линию) на панели Programming (Программирование).
Присваивание значений переменным в программах имеет свои особенности: присвоение величин функциям и переменным, используемым алгоритмом, может быть произведено как в самой программе, так и выше нее. Эти два подхода весьма существенно разнятся в следующих случаях:
Программирование в Mathcad 13. Написание простейших циклов и условий. Урок 24
- 1. Если значение переменной или функции присваивается в программе посредством оператора « на панели Programming (Программирование). Появившийся шаблон-заготовка с вертикальной чертой и полями-маркерами для ввода операторов, будет составлять заготовку для тела программы-функции.
- 3. Записать операторы в шаблон-заготовку. Тело подпрограммы-функции может включать произвольное число операторов: операторов присваивания, условных операторов, операторов цикла, вызовов других подпрограмм-функций.
- 4. Нижнее поле подпрограммы предназначено для определения возвращаемого подпрограммой значения.
Пример 3.18. Требуется подготовить описание функции y = sin— и
8 вычислить значения этой функции при х = 4,15 и g = 1,854.
Решение. При вычислении такого у можно обойтись без описания и использования пользовательской функции и без программирования, как это показано на рис. 3.45, а. Использование простой функции использовано для простоты изложения.
Для нахождения значения функции в подпрограмму-функцию следует передать значения х и g, необходимые для выполнения вычислений внутри программы. Поэтому переменные X и g следует включить в список формальных параметров заголовка создаваемой функции. Назовем эту функцию — у. Тогда подготовка описания функции и ее выполнение в соответствии с описанной технологией могут быть выполнены, как это представлено на рис. 3.45.
Источник: bstudy.net
Урок 11. Программирование в Mathcad
Mathcad содержит встроенную среду программирования, что значительно расширяет возможности вычислительного пакета. Операторы программирования находятся в меню Математика –> Операторы и символы –> Программирование: Этих операторов не очень много, но и они позволяют построить достаточно сложные алгоритмы. К тому же, уже ознакомившись с базовыми понятиями (операторы, переменные, константы, функции и т.д.), можно использовать Mathcad, если Вы хотите лишь начать изучать программирование. Команды, которые мы изучим в этом уроке:
- «Программирование» – для создания программной структуры.
- «Локальное назначение» – знак «равно» для программ.
- «Оператор if»– оператор условия.
- «Оператор else»– альтернативный выбор.
- «Оператор return» – выход из программы.
- «Try / On Error» – применяется, если при выполнении программы может возникнуть ошибка.
Эти команды можно сочетать с операторами, переменными и функциями Mathcad. Например, Вы можете использовать структуру функции для ввода входных значений:
«Программирование» и «Локальное определение»
Создадим программу, которая вычисляет разницу между двумя переменными a и b.
На рисунке ниже представлена структурная диаграмма программы:
Здесь всего три элемента: вход, действие и выход. Вместо структурной диаграммы можно использовать другие способы, помогающие созданию программы, например, блок-схемы или псевдокод.
Определите ввод переменных a и b:
Нажмите оператор «Программирование» на панели Математика –> Программирование:
Нажмите [Enter] для создания второй строки:
Переместите курсор в верхний местозаполнитель, затем вставьте оператор «Локальное назначение»:
Заполните местозаполнители слева и справа от оператора:
Переместите курсор в нижний местозаполнитель и вставьте оператор «return»:
Важно! Операторы программирования return, else, if, while и т.д. следует вставлять из меню программирования. Ввод этих команд с клавиатуры не приведет к желаемому результату.
Введите переменную в местозаполнитель:
Всегда тестируйте программы, потому что при некоторых значениях могут получиться бессмысленные результаты. В некоторых случаях это могут быть отрицательные числа, ноль или бесконечность.
У операторов программирования есть свои горячие клавиши. Попробуйте запомнить их:
- «Программирование» – правая квадратная скобка ]
- «Локальное назначение» – левая фигурная скобка
- «return»– [Ctrl+]
Создайте предыдущую программу снова, используя горячие клавиши. Теперь это должно занять меньше минуты!
Программе не обязательно задавать входные переменные:
Оператор «return» также не обязателен – программа примет за выходное значение последнее вычисление:
В нашей второй программе (которая более полезна, чем предыдущая) мы вычислим площадь поверхности цилиндра диаметром D и высотой H. Структурная диаграмма этой программы:
Программа и некоторые выходные результаты показаны ниже. Возможно, нужно запретить отрицательные входные значения…
Заметьте, что переменные внутри программы являются локальными. Локальная переменная не определяется вне программы:
Входным значениям можно дать числа с единицами измерения:
Однако если задать единицу измерения только одной переменной, Mathcad скажет, что единицы не совместимы:
Поэтому единицы измерения следует использовать единообразно.
Булева алгебра
В программах часто используются равенства и неравенства. Операторы сравнения находятся в меню Математика –> Операторы и символы –> Операторы –> Сравнение:
Операторы сравнения дают результат 1 при истинном выражении и 0 при ложном:
Операторы сравнения можно сочетать. Пример таких сочетаний с оператором логического И:
Операторы
if и
else
Необходимо создать программу функции, которая принимает следующие значения:
Структурная диаграмма программы представлена ниже. Треугольник означает выбор между двумя или более альтернативными вариантами. Напишем программу, используя операторы if и else.
Введите имя функции и местозаполнитель для первой строки:
Нажмите if в меню программирования или с помощью горячей клавиши >. Появится вторая строка, которая относится к оператору if:
Введите критерий выбора и желаемое значение функции. Обратите внимание на серые линии справа:
Нажмите на внутреннюю серую линию (станет мигающей синей), затем вставьте оператор else. Появится еще одна строка, относящаяся к else:
Введите необходимую функцию под else. Внутренняя серая линия удлинится, что указывает на то, что операторы ifи else связаны между собой. Нажмите на нее, нажмите [Enter], затем вставьте оператор return:
Проверьте программу, построив график функции:
При работе с программой можно добавлять новые строки нажатием клавиши [Enter]. Где появится местозаполнитель, зависит от положения курсора. Выбрана внутренняя серая линия:
Курсор стоит за x 2 :
На структурной диаграмме показаны различные варианты выбора. Наиболее простой способ создать программу для этой задачи – использовать три различных операторов выбора (в Mathcad нет аналога оператора case).
Здесь важно правильно задать границы независимой переменной. Если Вы введете:
то точки 0 и 1 будут исключены, а Mathcad выдаст некорректный результат для этих значений.
Проверим программу для некоторых входных значений:
Для значений, не имеющих смысла, Mathcad выдаст сообщение об ошибке.
Функции в программах
В Mathcad встроено множество функций, которые могут быть полезными в том числе и в программах. Рассмотрим некоторые из них.
Векторы и матрицы
Откройте Функции –> Все функции и откройте раздел Векторы и матрицы. Найдите функции last() и length(). Это функции для определения некоторых свойств вектора:
Функция length() определяет длину вектора, т.е. количество элементов в нем, а функция last() выводит индекс последнего элемента. По умолчанию в Mathcadнумерация элементов вектора начинается с нуля, поэтому у четвертого элемента массива индекс 3.
Наибольший общий делитель:
Наименьшее общее кратное:
Остаток от деления x на y:
«Разное» содержит функцию time(), которая возвращает системное время момента активации функции.
Строки в Mathcad заключаются в двойные кавычки:
Строки можно задавать в качестве переменных, но их нельзя использовать в вычислениях. (Строку, содержащую только числа, можно преобразовать в константу.)
Длина строки (включая пробелы):
Строки могут быть полезны для задания в программах сообщений об ошибках.
Усечение и округление
Наименьшее целое число, большее x:
Наибольшее целое число, меньшее x:
Список функций Mathcad огромен. Два совета по ознакомлению с новыми функциями:
- Подведя указатель мыши к имени функции в списке, Вы увидите ее полное название и краткое описание.
- Если Вы вставите функцию в рабочую область, а затем нажмете [F1], Вы получите расширенное описание функции.
Try / On Error
Последняя команда, которую мы изучим в этом уроке, используется для указания, что должно быть сделано, если при выполнении программы возникает ошибка (например, деление на ноль). Если при выполнении программы в блоке tryвозникает ошибка, программа выполняет действия в блоке on error:
Ниже представлена программа с тремя операторами if внутри блока try:
При неверном вводе появится сообщение об ошибке. Таким образом, можно отследить большую часть ошибок, но не все:
Поскольку переменная abc не определена, функция не вычисляется.
Резюме
Графики в «Маткаде» — построение и исследование
Программа MathCAD обеспечивает стабильное поддержание своих функций уже долгие годы. В этой вычислительной среде работают экономисты, ученые, студенты и другие специалисты, владеющие прикладной и аналитической математикой.
Так как математический язык понятен не всем, и не каждый способен за быстрое время его изучить, программа становится сложной для восприятия начинающих пользователей. Нагруженный интерфейс и большое количество нюансов отталкивают людей от использования этого продукта, но на самом деле разобраться в любой рабочей среде возможно — достаточно иметь желание. В этой статье разберем такую важную тему, как построение графиков функций в «Маткаде». Это несложная процедура, которая очень часто помогает при расчетах.
Типы графиков
Помимо того что в MathCAD определены быстрые графики, которые вызываются с помощью горячих клавиш, существуют и другие графические приложения. Например, пользователь может в шапке программы найти раздел «Вставка», а в ней — подраздел «График», в котором можно просмотреть все доступные графики в «Маткаде»:
- График X-Y — показывает зависимость одной величины от другой. Самый распространенный тип, который позволяет быстро оценить и исследовать зависимости.
- Полярный график — использует полярные координаты. Суть графика — показать зависимость одной переменной от другой только в полярной координатной плоскости.
- График поверхности — создает поверхность в пространстве.
- Векторное поле, 3-D график разброса, столбчатая 3-D диаграмма используются для других специальных целей.
Построение графика функции
Невозможно научиться работать с вычислительной средой без примеров, поэтому будем разбираться в MatchCAD на шаблоне.
Допустим, задана функция f(x) = (e^x/(2x-1)^2)-10 в интервале [-10;10], которую необходимо построить и провести исследование. Прежде чем приступить к построению графика функции, необходимо данную функцию перевести в математический вид в самой программе.
- После того как функция была задана, следует вызвать окно быстрого графика клавишей Shift + 2. Появляется окошечко, в котором расположены 3 черных квадратика по вертикали и горизонтали.
- По вертикали: самый верхний и нижний отвечают за интервалы значений, которые можно регулировать, средний задает функцию, по которой пользователь может построить график в «Маткаде». Крайние черные квадратики оставляем без изменения (значения автоматически присвоятся после построения), а в средний пишем нашу функцию.
- По горизонтали: крайние отвечают за интервалы аргумента, а в средний нужно вписать «х».
- После проделанных шагов нарисуется график функции.
Построение графика по точкам в «Маткаде»
Иногда тяжело задать функцию или посчитать ее значение, поэтому для ее построения используют метод диапазонов. В техническом задании может быть дан только диапазон значений, по которому необходимо воспроизвести изображение.
- Зададим диапазон значений для аргумента, в рассматриваемом случае x:=-10,-8.5.. 10 (символ «..» ставится при нажатии на клавишу «;»).
- Для удобства можем отобразить получившиеся значения «х» и «у». Для первого случая используем математическую формулировку «х=», а для второго — «f(x)». Наблюдаем два столбика с соответствующими значениями.
- Построим график, используя сочетание клавиш Shift + 2.
Заметим, что та часть графика, которая устремлялась вверх, исчезла, а на месте нее образовалась непрерывная функция. Все дело в том, что в первом построении функция претерпевала разрыв в некой точке. Второй график был построен по точкам, но, очевидно, что точка, которая не принадлежала графику, не отображена здесь — это одно из особенностей построения графиков по принципу точек.
Табуляция графика
Чтобы избавится от ситуации, где функция претерпевает разрыв, необходимо протабулировать график в «Маткаде» и его значения.
- Возьмем известный нам интервал от -10 до 10.
- Теперь запишем команду для переменного диапазона — x:=a,a + 1 .. b (не стоит забывать, что двоеточие — результат нажатия клавиши «;»).
- Смотря на заданную функцию, можно сделать вывод о том, что при значении «х=1» будет происходить деление на ноль. Чтобы без проблем протабулировать функцию, стоит исключить эту операцию так, как показано на картинке.
- Теперь можно наглядно отобразить значения в столбиках, как мы это делали с построением по точкам. Табуляция выполнена, теперь все значения с шагом в одну единицу соответствуют своим аргументам. Обратите внимание, что на «х=1» значение аргумента не определенно.
Минимум и максимум функции
Чтобы найти минимум и максимум функции на выбранном участке графика в «Маткаде», следует использовать вспомогательный блок Given. Применяя этот блок, необходимо задать интервал поиска и начальные значения.
- В рассматриваемом случае начальное значение x:=9.
- Запишем рабочую команду для поиска максимального значения — Xmax=Maximize(f,x) и вычисляем значение через знак равенства.
- Через блок Given запишем условие для x.
- Задаем минимум функции по аналогии с максимумом.
- Результаты получились следующими: значение минимума на графике с указанным интервалом f(x) = 2,448*10 198 , а значение минимума f(x) = -10.
Источник: fb.ru