Создание новых функций с помощью программирования
Любая программа может быть задана как функция. Причем параметры ее могут быть определены в общем виде.
Подставив в маркеры, созданной таким образом функции, какие-то числовые значения, можно получить непосредственно результат программного расчета.
Такой подход позволяет значительно экономить время в том случае, если программа должна быть использована много раз.
Пример:
Создание функции расчета вероятности нахождения нормально распределенной случайной величины в заданном интервале.
Исходное выражение:
Присвоим программе имя Ver ():
Посмотрим графики вероятности от значения верхнего предела:
Рис. 7.3 График расчета вероятности
Можно рассматривать зависимость и от других параметров.
Поиск ошибок в программах
В профессиональных языках программирования высокого уровня ошибки обычно находит сама система при процедуре, называемой компиляцией.
В MathCAD подобной процедуры нет, однако возможность быстро и легко определять ошибки в синтаксисе алгоритма имеется.
Рассмотрим ошибочную ситуацию: при попытке использования программы, вычисляющей интеграл по методу трапеций, система выдает сообщение «Illegal function value» (Недопустимое значение функции):
|
Если не удается найти ошибку самостоятельно, то стоит обратится за помощью к системе.
Во первых необходимо выполнить щелчок правой клавиши мыши по функции в которой возникла ошибка.
Откроется контекстное меню, в котором следует выбрать команду, расположенную в верхней сточке «Trace Error» (поиск ошибки). После этого открывается специальная одноименная панель, содержащая различные опции поиска ошибки. Панель «поиск ошибки» изображена на рис.10.4.
Рис 7.4 Панель «Поиск ошибки»
Данная панель содержит несколько кнопок:
Первая кнопка «Первый». Если нажать эту кнопку, то тот фрагмент программы, который вызывает ошибку, окрасится в красный цвет и выделится курсором.
Так в рассматриваемом примере получим картинку:
Из анализа этого выражения можно обнаружить, что между h и скобкой с полусуммой функций нет знака умножения. А это значит, что h рассматривается как функция со значением аргумента, равным величине в скобках. Но h не является функцией от этого выражения, запись не корректна, поэтому ошибка.
Так как знак умножения по умолчанию в MathCAD не отображается, то найти ошибку такого рода очень сложно.
Вторая слева кнопка панели «Previous» (предыдущая). Так как влияние ошибки распространяется иногда уровнями (например, при неправильном задании индекса), бывает нужным произвести исправления в разных фрагментах программы. Что бы подняться на уровень выше и используется данная команда.
Третья кнопка «Next» (следующая). Команда, идентичная по функциям, но противоположная по направлению.
Четвертая «Last» (последняя). Команда помещает курсор на последний уровень распространения ошибки.
Пятая «Close» (закрыть). Команда служит для сворачивания окна «Trace Error» (поиск ошибки).
Использовать панель «Trace Error» можно не только в случае программ, но и везде, где есть последовательность выполнения каких-то действий.
Ниже в качестве примеров приводятся программы расчета фильтров для заданных условий.
Пример 1. Программа расчета допустимого значения порядка ФНЧ Чебышева по допустимым значениям группового запаздывания, неравномерности рабочего затухания в полосе пропускания и получаемых значений затухания на частоте среза.
Обозначим:
- неравномерность частотной характеристики ФНЧ в полосе пропускания (в дБ);
Wn ─ нормированная (относительно граничной частоты полосы пропускания) частота среза (граничная частота полосы пропускания);
APmin ─ значение требуемого затухания АЧХ ФНЧ на частоте среза (в дБ);
τ(ω) ─ групповое время запаздывания как функция текущей частоты ω.
Пусть заданны значения:
α = 1 дБ; ωn = 1,2; APmin = 20 дБ;
τд(6400) = 5 мс ─ допустимое значение на частоте 6400.
Параметр:
Порядок фильтра определяется по формуле:
Поскольку число звеньев фильтра может быть только целым, то принимаем:
N = ceil(N)
Далее записываются выражения для определения корней АЧХ (Р(к)), причем число корней равно N:
к = 1 .. N
Выражение для ФЧХ имеет вид:
Групповое время запаздывания можно определить в соответствии с выражением:
Ниже приведены листинги программ расчета порядка ФНЧ Чебышева и Баттерворта для заданных значений параметров. Расчет ведется в полосе пропускания (оператор «For ω 0.01 ..1») , где нормированная частота изменяется с шагом 0.01.
Программа производит определения порядка фильтра, удовлетворяющего требованиям по неравномерности АЧХ и оптимально допустимой задержки в полосе пропускания (операторы « Аmax ← 1 » и « while τ ≤ 5 »). Оператор « if τ > 5 » позволяет определить в расположенном ниже подцикле программы допустимый порядок фильтра. Справа от тела программы выведем вектор, показывающий полученное значение и порядок фильтра. Ниже тела программы приведена проверка требуемого порядка фильтра NT для получения заданного APmin. Если NT > n (получен в программе), то фильтр Чебышева не может одновременно удовлетворить противоречивые требования по τ и APmin.
Листинг программы расчета ФНЧ Чебышева
Листинг программы расчета фильтра Баттерворта по критерию ограничения во времени группового запаздывания