Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
РЯЗАНСКИЙ ГОСУДАРСТВЕННЫЙ РАДИОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
ПРИКЛАДНЫЕ ПРОГРАММЫ В МЕДИКО-БИОЛОГИЧЕСКОЙ И ИНЖЕНЕРНОЙ ПРАКТИКЕ
Учебное пособие
УДК 621.3.019.3
Прикладные программы в медико-биологической и инженерной практике: учеб. пособие / О.В. Мельник; Рязан. гос. радиотехн. ун-т.. - Рязань, 2008. - 48 с.
Освещены вопросы, связанные с принципами и методами решения вычислительных задач с помощью персонального компьютера. Рассмотрены приемы работы с математическим пакетом MathCAD.
Предназначены для изучения дисциплины «Прикладные программы в медико-биологической практике» студентами, обучающимися по направлению 653900 «Биомедицинская техника», специальности 200401 «Биотехнические и медицинские аппараты и системы» и 200402 «Инженерное дело в медико-биологической практике» (инженеры).
Табл.5.
MathCAD, решение уравнений, работа с файлами данных, обработка сигналов, аппроксимация, интерполяция, символьные преобразования, программные модули
Печатается по решению редакционно-издательского совета Рязанского государственного радиотехнического университета.
Рецензент: кафедра биомедицинской и полупроводниковой электроники Рязанского государственного радиотехнического университета (зав. кафедрой С. П. Вихров)
М е л ь н и к Ольга Владимировна
Прикладные программы в медико-биологической и инженерной практике
Редактор М.Е. Цветкова
Корректор Н.Г. Рябчикова
Подписано в печать . Формат бумаги 60 х 84 1/16.
Бумага газетная. Печать трафаретная. Усл. печ. л. 3,0.
Уч.-изд. л. 3,0. Тираж 40 экз. Заказ
Рязанский государственный радиотехнический университет.
390005, Рязань, ул. Гагарина, 59/1.
Редакционно-издательский центр РГРТУ.
ВВЕДЕНИЕ
На сегодняшний день решение большинства задач при разработке биомедицинского оборудования, а также в биологических и медицинских исследованиях осуществляется с использованием вычислительной техники. Наиболее доступным и многофункциональным средством является персональный компьютер (ПК). ПК универсальная техническая система. Его конфигурацию, то есть состав оборудования, можно изменять по мере необходимости. Устройства, подключаемые к системному блоку, называют периферийными. В медико-биологической практике в качестве периферийных устройств могут выступать датчики, диагностические приборы и системы, данные с которых через соответствующий интерфейс поступают на обработку в ПК.
Можно выделить следующие основные классы задач, решаемых инженерами биомедицинской техники с помощью ПК.
Распространенное направление использования ПК создание автоматизированных рабочих мест (АРМ) врача. АРМ может представлять собой систему различной сложности, возможности которой от ведения карточки пациента до постановки предварительного диагноза.
Решение биомедицинских задач программными средствами предусматривает два подхода. Первый подход предполагает использование языков программирования. В этом случае создается новый специализированный программный продукт для решения частной проблемы, что наиболее актуально при промышленном производстве оборудования. Второй подход основан на использовании возможностей пакетов прикладных программ. Достоинствами такого подхода являются распространенность пакетов прикладных программ, гибкость и открытая архитектура получаемого решения, наличие специализированных возможностей и функций, облегчающих задачу разработки. Структура полученного программного решения может быть модифицирована или расширена в любой момент.
Одним из наиболее многофункциональных и вместе с тем удобных пакетов прикладных программ является математический процессор MathCAD. Особенностям работы с этим пакетом посвящено данное учебное пособие.
1. ОСНОВНЫЕ СВЕДЕНИЯ О ПАКЕТЕ MATHCAD. ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС
MathCAD (Mathematical Computer Aided Design, математическое проектирование с помощью компьютера) универсальный математический пакет. Был разработан фирмой MathSoft, Inc (Кембридж, штат Массачусетс, США). В 2006 году корпорация MathSoft была куплена фирмой PTS (Parametric Technology Corp).
MathCAD отличается простотой управления и возможностью выражения в естественной форме алгоритмов вычислительной математики. Основная идея системы предоставление пользователю возможности описывать на экране вычисления в виде, близком к общепринятой математической записи. MathCAD позволяет решить почти любую математическую задачу с помощью инструментов численной или символьной математики. Возможности MathCAD используются в различных областях от нахождения корней простейших алгебраических уравнений до конструирования электрических схем. Кроме того, это программа, позволяющая готовить любые относящиеся к науке и технике полиграфические материалы: документацию, научные отчеты, книги и статьи, диссертации, дипломные и курсовые проекты. При этом в них одновременно могут присутствовать тексты сложного вида, любые математические формулы, графики функций и различные иллюстративные материалы. Программа имеет мощную справочную систему, наиболее часто используемые функции оформлены в виде примеров-шпаргалок (Quick Sheets).
Сразу после запуска система готова к созданию документа. Основную часть экрана занимает окно редактирования. Документы в окне редактирования состоят из различных блоков: текстовых, формульных, графических и т. д. Блоки просматриваются системой, интерпретируются и исполняются.
Вверху окна расположены главное меню и панели инструментов. Панели содержат кнопки работы с файлами, кнопки печати и проверки документа, операций редактирования, размещения блоков и операций с выражениями.
Особенность MathCAD наличие выносимых отдельно наборных панелей (панелей инструментов) математических операций, предназначенных для упрощения ввода данных. В табл. 1 приведен список наборных панелей.
Каждая из наборных панелей может быть выведена на экран либо скрыта с помощью соответствующей команды из меню View (Вид).
2. СОЗДАНИЕ И РЕДАКТИРОВАНИЕ ФОРМУЛ И ТЕКСТА
2.1. Курсор
При перемещении по документу курсор принимает разные формы в зависимости от того, в какой области он находится и какие действия выполняются.
Маленький красный крестик служит для указания места для новых блоков. Такой вид курсор имеет только на свободном месте экрана, то есть вне блоков.
Для задания отдельных элементов в формулах используется курсор в виде уголка из синих линий. Внешний вид уголка позволяет судить, что является операндом для следующей операции. Чтобы изменить фрагмент формулы, к которому будет относиться задаваемое действие, можно воспользоваться клавишами со стрелками или пробелом. При создании многоуровневых формул, чтобы записывать символы в нужном месте, клавишу «пробел» приходится использовать постоянно.
В текстовых блоках курсор приобретает вид вертикальной красной черты.
На границе выделенных блоков курсор имеет форму руки. При такой форме курсора выполняется перемещение блоков мышью.
2.2. Простейшие вычисления и операции
При подготовке задания на вычисления можно пользоваться наборными панелями и комбинациями клавиш. Числа и знаки простейших арифметических операций вводятся с клавиатуры. Записанные формулы выглядят в привычной математической форме, документ на экране дисплея похож на текст математической книги или научной статьи. Однако в процессе ввода нажимаемая клавиша и изображение в окне иногда различаются. Это объясняется тем, что многих математических символов нет на клавиатуре. Практически все отсутствующие на клавиатуре символы можно ввести через наборные панели. Для часто повторяемых действий предпочтительным является использование клавиатурных комбинаций, так как это значительно быстрее и удобнее.
Наиболее часто используемые операции и клавиши, которые применяются для их ввода, приведены ниже.
Арифметические операции:
сложение +
комплексное сопряжение "
деление /
возведение в степень ^
факториал !
абсолютная величина |
умножение *
корень n-й степени Ctrl+\
произведение Ctrl+Shift+3
произведение по дискретному аргументу #
суммирование по дискретному аргументу $
квадратный корень \
вычитание -
суммирование Ctrl+Shift+4
Операции отношения:
больше >
меньше <
больше либо равно Ctrl+0
меньше либо равно Ctrl+9
не равно Ctrl+3
равно Ctrl+=
Операции математического анализа:
дифференцирование ?
интегрирование &
производная n-го порядка Ctrl+?
В MathCAD определены операторы:
:= присваивания; вводится клавишей с двоеточием;
≡ глобального присваивания;
= вывода значений.
Оператор присваивания используется для задания значений переменным: слева от знака операции записывается имя переменной, а справа число или выражение. Например, а:=6.75.
Оператор локального присваивания применяют для задания значения переменной до того, как она будет использована. MathCAD выполняет введенные выражения слева направо и сверху вниз, поэтому нужно следить, чтобы выражение располагалось правее или ниже определенных для него переменных.
Глобальное присваивание ≡ разрешено использовать в любом месте документа. Во всех случаях переменная, которой задано значение оператором ≡ , получает это значение. Оператор глобального присваивания может быть в конце документа, а переменная, к которой он относится, в начале. В дальнейшем значение переменной можно изменить оператором локального присваивания.
Оператор = используется для вывода на экран значений переменных и результатов вычисления выражений.
2.3. Текстовые области
Для создания текстовой области можно выполнить команду Insert|Text region (Вставка|Текстовая область). Текстовая область появляется в месте расположения курсора, который задаёт левый верхний угол текстовой области.
Первоначально размер текстовой области определяется длиной введённой строки и может быть изменён растягиванием мышью. При вводе текста клавишу Enter, как принято в текстовых редакторах, нажимают для создания нового абзаца. При работе с текстами внутри блока пользуются обычными приёмами перемещения курсора и редактирования. Кроме того, выделив текстовую область, с ней можно работать как с отдельным блоком: перемещать по экрану, изменять размеры, копировать, вырезать, удалять.
3. КОНСТАНТЫ, ПЕРЕМЕННЫЕ И ФУНКЦИИ
3.1. Имена в MathCAD
Имена констант, переменных и функций в MathCAD могут содержать любые из следующих символов.
Имена функций и переменных не могут включать пробелы или любые иные символы, не перечисленные выше.
К именам переменных относятся следующие ограничения.
MathCAD различает в именах символы верхнего и нижнего регистров. Например, diam переменная, отличная от DIAM. MathCAD также различает в именах различные шрифты. Поэтому DIAM также отличное от DIAM имя.
3.2. Задание констант и переменных
Константы можно задавать в десятичной, двоичной, восьмеричной и шестнадцатеричной системах счисления. Двоичные, восьмеричные и шестнадцатеричные числа могут быть только целыми. Для записи восьмеричных чисел используются цифры 0 7. За последней цифрой числа записывается буква о. Признаком двоичного числа является приписанная в конце буква b или B. Для записи шестнадцатеричных чисел используются цифры 0 9 и буквы A F. После последней цифры ставится буква h или H. Если шестнадцатеричное число начинается с буквы, то перед ней записывают цифру 0, чтобы отличить число от имени.
В системе имеются предопределённые постоянные (системные переменные):
∞ 10307 системная бесконечность (Ctrl+z);
π 3.142 число π (Ctrl+p);
e 2.718 основание натурального логарифма;
% 0.01 процент;
TOL 0.001 погрешность численных методов;
ORIGIN 0 нижняя граница индексации массивов.
Значение любой из системных переменных можно изменить прямо в рабочем документе с помощью оператора присваивания.
Кроме обычных переменных, в MathCAD определены дискретные (ранжированные) переменные. Это такие переменные, которые принимают ряд фиксированных значений от начального до конечного с заданным шагом. В общем случае дискретная переменная задаётся оператором присваивания вида:
Name := Nbegin, NextVal .. Nend ,
где Nbegin начальное значение диапазона изменения дискретной переменной, Nend конечное. Следующее значение NextVal вычисляется как сумма начального Nbegin и шага. NextVal может быть опущено:
Name := Nbegin .. Nend .
В этом случае шаг принимается равным 1, если начальное значение меньше конечного, и равным -1, если Nbegin больше Nend. Например:
x := 1, 1.2 .. 2
t := 2 .. -4
Переменная x будет иметь значения 1, 1.2, 1.4, 1.6, 1.8, 2. Для переменной t получим: 2, 1, 0, -1, -2, -3, -4 .
Особенность ввода дискретных переменных заключается в том, что символ диапазона .. записывается клавишей с символом ; (точка с запятой). На клавиатуре надо набрать:
x:1,1.2;2
t:2;-4
Дискретные переменные используются при организации многократных вычислений.
3.3. Функции
Функция это правило, согласно которому проводятся некоторые вычисления с её аргументами и вырабатывается результирующее значение.
Система MathCAD содержит широкий набор встроенных функций. Функции задаются своим именем и значениями аргументов в круглых скобках. Имена функций можно ввести с клавиатуры либо поместить в рабочий документ с помощью диалогового окна, вызываемого командой Insert|Function (Вставка|Функция). Второй путь исключает ошибки при записи функций, так как вставляется полная синтаксическая форма, в которой надо задать аргументы, заполнив поля ввода.
Функции пользователя определяются с помощью оператора присваивания. В левой части записываются имя функции и список аргументов в круглых скобках. Аргументы отделяются друг от друга запятыми. В правой части записывается выражение.
Например, f(x):=(x+1)/(x2+1).
Для вычисления значения функции в точке записывают имя функции, в скобках значение переменной, ставят знак =.
Например, f(1.2)=0.902.
Для построения таблицы значений функции нужно ввести диапазон изменения дискретной переменной. Для вывода таблицы значений функции определяют диапазон дискретной переменной, вводят имя функции и нажимают знак = .
Например,
x := 0,0.1..1
f(x)=
4. ВЕКТОРЫ И МАТРИЦЫ
В MathCAD предусмотрено использование числовых и символьных массивов. Массивы могут быть одномерные и двумерные. Двумерные массивы (матрицы) рассматриваются как совокупность одномерных массивов одинаковой длины. Одномерные массивы (векторы) могут быть векторами-строками и векторами-столбцами. Массив задаётся именем, обращение к элементам массива выполняется с помощью индексированных переменных.
4.1. Создание массивов
Имеются три способа создания массива.
Можно различать имена матриц, векторов и скаляров, используя различный шрифт для их написания. Например, во многих математических и инженерных книгах имена векторов пишутся жирным шрифтом, а имена скалярных переменных курсивом.
Создание массива заполнением пустых полей
Перед созданием массива нужно задать его имя и ввести знак присваивания. Шаблон массива задаётся в диалоговом окне, которое можно открыть командой Insert|Matrix (Вставка|Матрица), комбинацией клавиш Ctrl+M или кнопкой с изображением шаблона матрицы в наборной панели. Любое из этих действий вызывает появление диалогового окна, в котором надо указать размер матрицы, то есть количество ее строк и столбцов. Для векторов один из этих параметров должен быть равен единице.
После нажатия кнопки «Создать» MathCAD создает массив с пустыми полями для заполнения. Нужно заполнить эти поля скалярными выражениями. Как только массив создан, можно использовать его в вычислениях.
Поэлементное заполнение вектора
Если существует формула для вычисления элементов массива, то при его формировании используются дискретные переменные, позволяющие определить все значения. Определяют дискретную переменную индекс элемента.
Например, k:=0..4.
Задают значения элементов вектора по формуле.
Например, yk:=exp(k).
Для ввода нижнего индекса нажать клавишу [.
4.2. Выбор элементов массивов
Нумерация элементов в одномерном массиве начинается со значения, определяемого системной переменной ORIGIN (по умолчанию с нуля). Чтобы обратиться к элементу массива, необходимо указать один индекс для вектора и два индекса для матрицы. Индексы определяют расположение элемента в массиве и могут быть только целыми числами.
Для выделения элемента матрицы используется конструкция с двумя нижними индексами, записанными через запятую: a1,3. Для обращения к элементу вектора-столбца надо указать один нижний индекс, например, v5. Для выделения целого столбца матрицы следует добавить к имени массива верхний индекс. M<1> означает обращение к столбцу матрицы M с номером 1. Чтобы обратиться к целой строке, нужно добавить верхний индекс к транспонированному массиву: (АT)<1>.
Записывать индексы можно с помощью шаблонов наборной панели Matrix (Матричные и векторные операции) или последовательным вводом символов, задающих требуемые действия. Так, для формирования нижнего индекса можно после имени массива ввести символ [ , а затем значение индекса.
4.3. Основные векторные и матричные функции
Размеры и диапазон значений
length(V) |
Число элементов в векторе V. |
rows(A) |
Число строк в массиве A. |
cols(A) |
Число столбцов в массиве A. |
max(A) |
Самый большой элемент в массиве A. |
min(A) |
Самый маленький элемент в массиве A. |
ORIGIN:=1 |
Изменение порядка нумерации элементов |
Создание специальных типов матриц
identity(n) |
n x n единичная матрица (матрица, все диагональные элементы которой равны 1, а все остальные элементы равны 0). |
diag(V) |
Диагональная матрица, содержащая на диагонали элементы вектора V. |
rref(A) |
Ступенчатая форма матрицы A. |
Функции augment(A,B) и stack(A,B) позволяют объединить две матрицы в одну. Для объединения матриц, имеющих одинаковое число строк, по горизонтали, используется augment. Чтобы объединить два массива с одинаковым числом столбцов, располагая их друг над другом, применяется функция stack. Функция submatrix(M, ir, jr, ic, jc) предназначена для выделения подматрицы, в которую включены элементы матрицы М, расположенные в строках с ir по jr и столбцах с ic по jc .
4.4. Векторные и матричные операции
При рассмотрении векторных и матричных операций приняты следующие обозначения: V вектор, M матрица, z скалярная величина. Основные операции приведены в таблице 2.
Векторные и матричные операции Таблица 2
Оператор векторизации предписывает MathCAD выполнить одну и ту же операцию над каждым элементом вектора или матрицы. Свойства оператора векторизации позволяют использовать скалярные операторы и функции с массивами.
5. РЕШЕНИЕ УРАВНЕНИЙ
5.1. Решение уравнения с одним неизвестным
Для решения одного уравнения с одним неизвестным используется функция root.
root( f(z), z) |
Возвращает значение z, при котором выражение или функция f(z) обращается в 0. Оба аргумента этой функции должны быть скалярами. |
Первый аргумент есть либо функция, определенная в рабочем документе, либо выражение. Выражение должно возвращать скалярные значения. Второй аргумент имя переменной, которое используется в выражении. Это та переменная, варьируя которую, MathCAD будет пытаться обратить выражение в ноль. Этой переменной перед использованием функции root необходимо присвоить числовое значение. Mathcad использует его как начальное приближение при поиске корня.
При использовании функции root нужно иметь в виду следующее.
root(f(x) - g(x), x).
5.2. Нахождение корней полинома
Для нахождения корней выражения, имеющего вид
vnxn +...+ v2x2 + v1x + v0,
используется функция polyroots.
polyroots(V) |
Возвращает корни полинома степени n. Коэффициенты полинома находятся в векторе V длины n+1. Возвращает вектор длины n, состоящий из корней полинома. |
В отличие от функции root, функция polyroots не требует начального приближения. Кроме того, функция polyroots возвращает сразу все корни, как вещественные, так и комплексные.
5.3. Решение систем нелинейных уравнений и неравенств
При решении систем нелинейных уравнений организуется специальный вычислительный блок, использующий ключевое слово Given и имеющий следующую структуру:
Начальные условия определяют начальные значения искомых переменных и задаются с помощью оператора присваивания.
Уравнения записываются с применением жирного знака равенства между левой и правой частями уравнений.
Ограничения задаются в виде неравенств или равенств, которые должны удовлетворяться при решении системы уравнений. В некоторых задачах ограничения могут отсутствовать. При формировании ограничений используются логические операции: >, <, ≤, ≥, ≠, =.
Функция find(v1, v2, .., vn) возвращает значение одной или ряда переменных, являющихся решением системы. Эта функция используется в тех случаях, когда решение системы уравнений реально существует.
Функция minerr(v1, v2, .., vn) пытается найти максимальное приближение даже к несуществующему решению путём минимизации среднеквадратичной погрешности. Функцию minerr применяют для получения приближенного решения.
Функции find и minerr могут использоваться для решения одного уравнения или системы. Число уравнений должно равняться числу неизвестных. Аргументы v1, v2,..,vn это скалярные переменные, значения которых ищутся в блоке вычислений. Когда блок решения уравнений ищет одну неизвестную, функции возвращают скаляр. Если неизвестных несколько, то возвращается вектор, первым элементом которого является искомое значение переменной v1, вторым элементом v2 и т. д.
5.4. Решение систем линейных уравнений
Решение системы линейных уравнений в матричной форме А⋅Х=В определяется соотношением Х = А-1 ⋅ В,
где А матрица коэффициентов;
В вектор свободных членов.
Для решения системы линейных уравнений А⋅Х=В можно воспользоваться функцией lsolve(A,B), которая возвращает вектор Х. Если уравнений n, то размерность вектора В должна быть n, а матрицы А n⋅n.
6. ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ И СИСТЕМЫ
Дифференциальные уравнения - это уравнения, в которых неизвестными являются не переменные (т. е. числа), а функции одной или нескольких переменных. Эти уравнения включают соотношения между искомыми функциями и их производными.
Если в уравнения входят производные только по одной переменной, то они называются обыкновенными дифференциальными уравнениями (ОДУ). В противном случае говорят об уравнениях в частных производных. Таким образом, решить дифференциальное уравнение - значит определить неизвестную функцию на определенном интервале изменения ее переменных.
Одно обыкновенное дифференциальное уравнение или система ОДУ имеет единственное решение, если, помимо уравнения, определенным образом заданы начальные или граничные условия. Имеются два типа задач, которые возможно решать с помощью MathCAD:
- задачи Коши - для которых определены начальные условия на искомые функции, т. е. заданы значения этих функций в начальной точке интервала интегрирования уравнения;
- краевые задачи - для которых заданы определенные соотношения сразу на обеих границах интервала.
Начиная с версии 5, в систему MathCAD введены встроенные функции для решения дифференциальных уравнений и систем численными методами. Применение этих функций требует выполнения ряда вспомогательных операций и учёта особенностей каждой из них. Большое значение имеют представление результатов и анализ зависимостей решения от различных параметров системы. Существует также целый класс ОДУ, называемых жесткими, который не поддается решению стандартными методами, типа методов Рунге-Кутта. Для них в MathCAD предусмотрены специальные возможности. Для численного интегрирования одного ОДУ, начиная с версии MathCAD 2000 Pro, можно использовать вычислительный блок Given/Odesolve.
6.1. Решение одного ОДУ
Дифференциальное уравнение первого порядка может по определению содержать, помимо самой искомой функции y(t), только ее первую производную y'(t). В большинстве случаев дифференциальное уравнение можно записать в стандартной форме (форме Коши):
у' (t)=f (y(t),t) ,
и только с такой формой способен работать вычислительный процессор MathCAD. Для решения одиночного ОДУ применяется вычислительный блок Given/Odesolve либо встроенные функции. Первый путь предпочтительнее из соображений наглядности представления задачи и результатов, а второй дает пользователю больше рычагов воздействия на параметры численного метода. Рассмотрим последовательно оба варианта решения.
Вычислительный блок Given/Odesolve
Odesolve(x,b,[step]) - возвращает функцию, которая является решением дифференциального уравнения. Используется в блоке с оператором Given, x - переменная интегрирования, действительное число; b - конечная точка отрезка интегрирования; step - величина шага по переменной интегрирования (необязательный аргумент)
Особенности применения
Пример использования:
Решение может быть представлено на графике:
Встроенные функции
Для численного решения задачи Коши для дифференциальных уравнений и систем могут быть использованы функции:
rkfixed(y,x1,x2,n,F) возвращает матрицу решений системы уравнений методом Рунге-Кутта 4-го порядка при фиксированном шаге по x;
Rkadapt(y,x1,x2,n,F) ищет решение методом Рунге-Кутта с переменным шагом. Там, где решение меняется медленнее, шаг увеличивается, а в области быстрого изменения решения шаг функции уменьшается. Функция работает быстрее, чем rkfixed.
Bulstoer(y,x1,x2,n,F) осуществляет поиск решения методом Булирша-Штёра.
Аргументы вышеуказанных функций: y вектор начальных условий; x1,x2 границы интервала для поиска решения; n количество точек на интервале; F(x,y) вектор-функция первых производных. Решение получается в виде матрицы, содержащей n+1 строк и p+1 столбцов. Количество столбцов на единицу больше, чем количество уравнений p или порядок уравнения. Начальный столбец матрицы по умолчанию имеет индекс 0 и содержит значения аргумента в точках, определяемых величинами x1, x2, n.
В тех случаях, когда требуется найти решение только в конечной точке интервала интегрирования, то целесообразно применить функцию bulstoer или rkadapt, что позволит уменьшить объём выполняемых вычислений. Иногда оказывается целесообразным попытаться решить уравнение или систему несколькими методами, чтобы выбрать более подходящий по точности или скорости получения результата.
Решим рассмотренное ранее уравнение с помощью функции rkfixed(y, x1, x2, n, F). Аналогичным образом для решения уравнения можно применить функцию Rkadapt или Bulstoer.
Последовательность действий:
Пример решения:
6.2. Решение систем ОДУ
Для решения систем ОДУ применяются только встроенные функции. Последовательность действий при решении системы такая же, как при решении одиночного уравнения. Исходная система уравнений должна быть представлена в форме Коши (слева производная, а справа всё остальное). Количество уравнений и количество начальных условий должны быть равны числу неизвестных.
Например, решим систему:
Сформируем символьный вектор, элементами которого будут правые части уравнений, записанные для точки (t,Y), где t аргумент, Y вектор решения. Элементы вектора Y соответствуют отдельным неизвестным.
Определим параметры, необходимые для получения решения:
t0, t1 начальное и конечное значения независимой переменной;
Y0 вектор начальных условий;
N количество шагов (при необходимости) на интервале [t0,t1].
Получим решение, вызвав одну из функций: rkfixed, Bulstoer или Rkadapt.
В результате работы функций рассчитывается матрица, количество столбцов которой равно порядку уравнения +1 (или сумме порядков уравнений в системе +1). Первый столбец содержит значения независимой переменной, второй - значение функции, третий - для дифференциальных уравнений 2-го порядка - значение производной искомой функции (если решается система двух уравнений 1-го порядка, то третий столбец будет содержать значения второй функции). Для выделения решений (функций или их производных) можно воспользоваться стандартным оператором вывода столбцов матрицы M< > .
Выделим из матрицы решения S независимую переменную и функции y0, y1, y2, учитывая, что аргумент расположен в начальном столбце (номер 0), а функции в последующих столбцах.
По найденным t, y0, y1, y2 можно построить графики. Однако формирование этих векторов для построения графиков не является обязательным. В качестве примера создадим график по двум функциям решения, не выделяя их предварительно из матрицы.
6.3. Решение жестких систем ОДУ
Если матрица правых частей дифференциальных уравнений почти вырождена, то такие системы называются жесткими. В этом случае решения, возвращаемые функцией rkfixed, будет неустойчивым и для решения таких систем необходимо применять функции Stiffb , Stiffr .
Система линейных автономных дифференциальных уравнений
x¢ = Ax |
называется жесткой, если, во-первых, все собственные значения li (i = 1, ..., m) матрицы A имеют отрицательную вещественную часть (т. е. система экспоненциально устойчива) и, во-вторых,
S =
Re li
Re li >> 1. |
Число S при этом называют коэффициентом жесткости системы. Значок >> ("значительно превосходит") обычно означает, что S >10-100, хотя часто встречаются задачи (например, в теории электрических цепей, в химической кинетике и т. п.) с коэффициентом жесткости »106 и более.
Stiffb(y,x1,x2,n,F,J) ищет решение уравнения или системы дифференциальных уравнений методом Булирша-Штёра.
Stiffr(y,x1,x2,n,F,J) ищет решение уравнения или системы дифференциальных уравнений методом Розенброка.
Первые пять аргументов такие же, как и при решении хорошо обусловленных систем дифференциальных уравнений. Дополнительный аргумент - матрица J размером n×(n+1), первый столбец которой содержит частные производные , остальные столбцы и строки представляют собой матрицу Якоби
В качестве примера решим жесткую систему уравнений
,
используя функцию Stiffr. Решение системы в MathCAD:
Для отыскания решения жесткой системы уравнений только в конечной точке используются функции stiffb и stiffr (начинаются с прописной буквы).
7. РАБОТА С ФАЙЛАМИ ДАННЫХ
7.1. Текстовые файлы данных. Функции для работы с файлами
Файл данных, считываемых MathCAD, должен быть представлен в ASCII формате. MathCAD читает файлы, которые состоят из чисел, отделяемых запятыми, пробелами или возвратами каретки. В сущности, файлы данных представляют собой векторы и матрицы, записанные в текстовом формате.
Числа в файлах данных могут быть целыми числами (например, 3 или 1), числами с плавающей запятой (например, 2.54) или иметь экспоненциальную запись (например, 4.51E -4 для 4.510-4).
В ранних версиях MathCAD существует шесть функций для работы с файлами, которые приведены в табл.3.
Функция |
Значение |
READ( file) |
Считывает значение из файла данных. Возвращает скаляр. Обычно используется следующим образом: vi :=READ( file) |
WRITE( file) |
Записывает значение в файл данных. Если файл уже существует, заменяет его на новый файл. Должна использоваться в определениях следующего вида: WRITE( file) := vi |
APPEND( file) |
Дописывает значение к существующему файлу. Должна использоваться в определениях следующего вида: APPEND( file) := vi |
READPRN( file) |
Читает структурированный файл данных. Возвращает матрицу. Каждая строка в файле данных становится строкой в матрице. Число элементов в каждой строке должно быть одинаковым. Обычно используется следующим образом: A : = READPRN( file) |
WRITEPRN( file) |
Записывает матрицу в файл данных. Каждая строка матрицы становится строкой в файле. Должна использоваться в определениях следующего вида: WRITEPRN( file) := A |
APPENDPRN( file) |
Дописывает матрицу к существующему файлу. Каждая строка в матрице становится новой строкой в файле данных. Должна использоваться в определениях следующего вида: APPENDPRN( file) := A |
Аргументы этих функций называются файловыми переменными. Имена функций записываются прописными буквами. Имя файла является строкой, поэтому указывается в кавычках. Если используемый файл расположен не в текущей папке, то следует задавать полное имя файла.
Обычно имя файла, соответствующего файловой переменной, есть имя этой переменной с расширением .dat или .prn .
Расширение зависит от используемой функции. Например, если имя файловой переменной data и используется READPRN или WRITEPRN, то MathCAD будет работать с файлом, называемым data.prn. Если использовать READ или WRITE, MathCAD будет работать с файлом, называемым data.dat.
Расширения по умолчанию можно отменять, используя в качестве файловой переменной имя файла с расширением. Например, чтобы читать из файла data.txt, напечатайте имя с расширением в качестве файловой переменной.
Важно отметить, что в современных версиях MathCAD для работы с внешними текстовыми данными предпочтительным является использование не указанных выше функций, а более гибкой OLE-технологии, например встроенного компонента «Таблица».
7.2. Считывание данных из файла с использованием компонента «Таблица»
Пусть требуется считать данные из текстового файла, состоящего из строк и столбцов чисел. Столбцы отделены пробелами, строки переводами каретки. Например, первый столбец содержит моменты времени, второй и третий уровень электрокардиосигнала в первом и втором отведениях в эти моменты времени.
t, с I II
Для считывания данных:
Таким же путём можно считывать данные из таблиц Excel, файлов баз данных dBase, M-файлов Matlab.
7.3. Работа с графическими файлами
Биомедицинская информация, например рентгеновские снимки или результаты эндоскопического исследования, может быть задана в виде растровых изображений. Растровые графические файлы представляют собой набор точек, каждая из которых описывается рядом числовых значений, характеризующих такие её параметры, как цвет и яркость. Например, изображение числа «ноль» в растровом представлении:
Размер изображения определяется числом точек по горизонтали и по вертикали. Разрешение характеризует число точек на единицу площади. Измеряется в dpi (dot per inch, точек на дюйм).
Различают чёрно-белые изображения, изображения в градациях серого и цветные. Они описываются по-разному.
Для черно-белого изображения используется только один параметр есть цвет (1) или нет цвета (0).
Для изображения в градациях серого используется ряд числовых значений, обычно от 0 (чёрный) до 255 (белый).
Цветные изображения описываются с помощью нескольких систем кодирования информации. Самая распространенная система RGB (red-green-blue), основывающаяся на красных, зеленых и синих базовых цветах. Для описания цвета каждой точки используются три параметра, значения которых пропорциональны степени присутствия каждого из базовых цветов в цвете точки.
MathCAD позволяет производить считывание растровых файлов, преобразуя в массив чисел какой-либо из параметров изображения. Типы считываемых файлов - BMP, JPG, GIF, TGA, PCX.
Рассмотрим некоторые функции считывания.
READ_IMAGE(file) создаёт массив, содержащий представление изображения в градациях серого. Каждый элемент число от 0 до 255. Например,
N:= READ_IMAGE(graphic.bmp) .
Будет получен массив N размером Im-Jm, где Im число точек в рисунке по вертикали, Jm по горизонтали. Массив будет перевернут по вертикали относительно исходного изображения. Например, изображение вида
в результате работы функции READ_IMAGE будет преобразовано в матрицу чисел вида
100 |
255 |
255 |
255 |
0 |
100 |
READRGB(file) возвращает массив, состоящий из трёх субматриц. Первая треть представление красного цвета, вторая зеленого, третья синего. Элементы массива числа от 0 до 255.
READ_RED(file) считывает только красные компоненты из цветного изображения.
К полученным числовым массивам могут быть применены любые операции обработки данных.
8. ОБРАБОТКА ЭКСПЕРИМЕНТАЛЬНЫХ ДАННЫХ
Аппроксимацией (приближением) функции f(x) называется нахождение такой функции g(x) (аппроксимирующей функции), которая была бы близка заданной. Критерии близости функций f (x) и g (x) могут быть различные.
В том случае, когда приближение строится на дискретном наборе точек, аппроксимацию называют точечной или дискретной.
В том случае, когда аппроксимация проводится на непрерывном множестве точек (отрезке), она называется непрерывной или интегральной. Примером такой аппроксимации может служить разложение функции в ряд Тейлора, то есть замена некоторой функции степенным многочленом.
Наиболее часто встречающим видом точечной аппроксимации является интерполяция (в широком смысле).
Пусть задан дискретный набор точек xi i = ( 0,1,..., n) , называемых узлами интерполяции, причем среди этих точек нет совпадающих, а также значения функции yi в этих точках. Требуется построить функцию g (x), проходящую через все заданные узлы. Таким образом, критерием близости функции является g (x i) =yi .
В качестве функции g(x) обычно выбирается полином, который называют интерполяционным полиномом.
В том случае, когда полином един для всей области интерполяции, интерполяцию называют глобальнай.
В тех случаях, когда между различными узлами полиномы различны, говорят о кусочной или локальной интерполяции.
Найдя интерполяционный полином, мы можем вычислить значения функции f(x) между узлами (провести интерполяцию в узком смысле слова), а также определить значение функции f(x) даже за пределами заданного интервала (провести экстраполяцию). Следует иметь в виду, что точность экстраполяции обычно очень невелика.
В MathCAD существует ряд встроенных функций, предназначенных для проведения различных видов аппроксимации и интерполяции экспериментальных данных.
Простейшим случаем локальной интерполяции является линейная интерполяция, когда в качестве интерполяционной функции выбирается полином первой степени, то есть узловые точки соединяются прямой линией.
Линейная интерполяция в MathCAD осуществляется с помощью встроенной функции linterp(vx,vy,x), где
vx набор абсцисс узловых (исходных) точек данных;
vy набор ординат узловых точек данных;
x новые значения независимой переменной.
Рассмотрим использование данной функции на примере. Пусть имеется функция синуса, определенная в пяти точках
.
Данная функция имеет только точечные значения, и для того чтобы функция была непрерывной и можно было определить ее значения в «промежуточных» точках, нужно осуществить интерполяцию.
Определим интерполирующую функцию.
Результат можно представить на графике.
Теперь можно вычислить значения функции в промежуточных точках, например
yy(0.8)=0.673.
Интерполяция сплайнами
В настоящее время среди методов локальной интерполяции наибольшее распространение получила интерполяция сплайнами (от английского слова spline гибкая линейка). При этом строится интерполяционный полином третьей степени, проходящий через все заданные узлы и имеющий непрерывные первую и вторую производные. На каждом интервале [xi, xi+1] интерполирующая функция является полиномом третьей степени
и удовлетворяет условиям
.
Если всего n узлов интерполяции, то интервалов n-1. Задавая различные условия на концах всего интервала функции, можно получить разные сплайны.
Для построения сплайнов используется встроенная функция interp(VS,x,y,z). Переменные x и y задают координаты узловых точек, z является аргументом функции.
VS промежуточные аргументы, определяет тип граничных условий на концах интервала. Существуют три типа подфункций для их вычисления.
Вектор VS формируется одной из функций cspline(vx,vy), pspline(vx,vy) или lspline(vx,vy). Эти функции различаются ограничениями, накладываемыми на поведение сплайна на границах области. Вектор VS должен быть получен перед использованием функции interp.
Решим предыдущую задачу об интерполяции синуса, но с помощью сплайнов. Определим интерполяционную функцию для одного из типов кубического сплайна
VS:=lspline(x, y), gl(z):=interp(VS, x, y, z).
Результаты интерполяции и значения исходной функции показаны на графике. В отличие от предыдущего примера, точки соединяются гладкой кривой.
8.3. Метод наименьших квадратов. Аппроксимация функций
Наиболее распространенным методом аппроксимации экспериментальных данных является метод наименьших квадратов. Метод позволяет использовать аппроксимирующие функции произвольного вида и относится к группе глобальных методов. Простейшим вариантом метода наименьших квадратов является аппроксимация прямой линией. Этот вариант метода носит также название линейной регрессии.
Критерием близости в методе наименьших квадратов является требование минимальности суммы квадратов отклонений от аппроксимирующей функции до экспериментальных точек
.
Аппроксимация линейной функцией
Задача регрессии заключается в получении таких параметров функции y(x), чтобы она приближала набор исходных данных с наименьшей среднеквадратичной погрешностью. Наиболее простым и часто используемым методом является линейная регрессия, при которой функция y(x) имеет вид
y(x) = ах + b.
Таким образом, построение линии регрессии сводится к нахождению прямой, наилучшим образом (в смысле наименьших квадратов) приближающей облако исходных данных, заданных векторами vx, vy.
Используются встроенные функции slope(vx, vy) и intercept(vx, vy) для определения коэффициентов линейной регрессии (аппроксимация данных прямой линией). Функция slope определяет угловой коэффициент прямой a, а функция intercept точку пересечения графика с вертикальной осью b.
Например, требуется вычислить линейную регрессию для таблично заданной функции.
Задаем векторы b и h.
Вычисляем коэффициенты линейной регрессии.
Определяем диапазон изменения аргумента для расчета и построения линии регрессии.
Определяем функцию регрессии.
Строим график.
Аппроксимация линейной комбинацией функций
В последние версии системы MathCAD введена функция linfit(vx,vy,F) для выполнения линейной регрессии общего вида. В этом случае исходная совокупность точек приближается линейной комбинацией заданных функций F1(x), F2(x), ..., Fn(x), записанных в символьной форме:
F(x, K1, K2, ..., Kn) = K1⋅ F1(x) + K2⋅ F2(x) + ..., + Kn⋅ Fn(x) .
Функция linfit(vx,vy,F) возвращает вектор коэффициентов К, при которых линейная комбинация функций из F даёт наилучшую аппроксимацию исходных данных.
Полиномиальная регрессия
Для проведения одномерной и многомерной полиномиальной регрессии в MathCAD используются функции regress и loess. Эти функции возвращают вектор VS, запрашиваемый функцией interp. При вызове функции regress(vx,vy,k) задаётся степень аппроксимирующего полинома k, а результатом является вектор VS, содержащий коэффициенты полинома порядка k, который наилучшим образом приближает данные из vx и vy.
Функция regress создаёт единственный приближающий полином, коэффициенты которого вычисляются по всей совокупности заданных точек. Иногда полезна функция loess(vx,vy,span), дающая локальные приближения отрезками полиномов второго порядка. Аргумент span>0 определяет, насколько большие наборы данных будут приближаться отдельными полиномами. Чем больше span, тем сильнее сказывается сглаживание данных. Рекомендуется задать начальное значение равным 0.75 .
Найденный тем или иным способом вектор VS используется в функции interp(VS,vx,vy,x), которая возвращает оценку значения y, соответствующую заданному x.
Например, требуется вычислить полиномиальную регрессию для таблично заданной функции.
Задаем количество точек.
Задаем векторы b и h.
Задаем порядок аппроксимирующего полинома.
Вычисляем коэффициенты полиномиальной регрессии.
Определяем диапазон изменения аргумента для расчета и для построения линии регрессии.
Определяем функцию регрессии.
Строим график.
Для выполнения многомерной полиномиальной регрессии используются описанные функции в несколько иной форме: interp(VS,Mxy,vz,v), regress(Mxy,vz,k), loess(Mxy,vz,span). Отличие заключается в задании исходных данных: аргумент Mxy является матрицей размера 2⋅m, содержащей координаты точек (х, y); vz это m-мерный вектор, состоящий из координат z, соответствующих m точкам, указанным в Mxy; v вектор координат x и y точки, для которой находится z.
8.4. Сглаживание функций
Задача сглаживания таблично заданных функций часто возникает при обработке экспериментальных данных, поскольку при проведении эксперимента возможны разного рода погрешности, влияние не учитываемых факторов и т. п.
Для сглаживания данных в MathCAD есть несколько функций, использующих разные алгоритмы. В названии этих функций присутствует слово smooth:
medsmooth(vy,n) возвращает вектор из m элементов, полученный сглаживанием данных из vy скользящей медианой; параметр n задаёт ширину окна сглаживания, n должно быть нечётным числом, меньшим m;
ksmooth(vx,vy,b) возвращает вектор ординат, вычисленных на основе распределения Гаусса; параметр b задаёт ширину окна сглаживания, то есть управляет степенью сглаживания, b должно в несколько раз превышать интервал между точками по оси х;
supsmooth(vx,vy) возвращает вектор сглаженных ординат, вычисленных на основе использования процедуры линейного сглаживания методом наименьших квадратов по правилу k- ближайших соседей с адаптивным выбором k.
Например, требуется выполнить сглаживание таблично заданной функции (табл. 4) и построить графики.
Таблица 3. Таблично заданная функция
Задаем векторы x и y.
Задаем параметр, определяющий степень сглаживания.
Изменяя b, необходимо добиться требуемой гладкости графика.
Вычисляем сглаженные значения вектора у. Результат помещается в вектор s.
Строим график.
9. СИМВОЛЬНЫЕ ВЫЧИСЛЕНИЯ
9.1. Организация символьных вычислений
Символьными называют вычисления, результаты которых представляются в аналитическом виде. Системы символьной математики (компьютерной алгебры) снабжаются специальным процессором для выполнения аналитических вычислений. Его основой является ядро, хранящее всю совокупность формул и формульных преобразований, с помощью которых выполняются аналитические вычисления. Чем больше этих формул в ядре, тем надежней работа символьного процессора и тем вероятнее, что поставленная задача будет решена, разумеется, если такое решение существует в принципе.
Ядро символьного процессора системы MathCAD несколько упрощенный вариант ядра системы символьной математики Maple V фирмы Waterloo Maple Software. Символьная математика включена в MathCAD, начиная с версии 3.0. Введение символьных вычислений придает системе MathCAD качественно новые возможности, при этом символьные вычисления выполняются достаточно просто.
В отличие от численных методов, дающих решение задачи в частном случае, аналитические вычисления позволяют получить результат в общем виде. Полученные аналитические зависимости можно проанализировать, оценить влияние разных факторов на результат. Кроме того, в ряде случаев предварительно выполненные аналитические преобразования позволяют гораздо быстрее получить численный результат.
Существуют два способа проведения символьных преобразований выражений: с помощью команд меню Symbolics (Символы) или использованием операций системы SmartMath. Операции символьного вывода экспертной системы SmartMath появились несколько позже и являются более мощным и удобным средством выполнения аналитических вычислений.
9.2. Меню Symbolics
Все команды символьного меню работают примерно одинаково: нужно выделить выражение частично или целиком, а затем выбрать соответствующую команду из меню Symbolics (Символы).
MathCAD выводит преобразованное выражение в текущий рабочий документ. В зависимости от установленного способа расположения результата MathCAD или замещает выделенное выражение, или помещает новое выражение справа или снизу от исходного. Если исходное выражение записано корректно, но символьное преобразование не удалось, то новое выражение совпадает со старым.
Через меню Symbolics вычисления выполняются в командном режиме. При использовании команд меню нельзя в исходном выражении применять функции пользователя, и результаты преобразований не меняются при внесении изменений в рабочий документ.
Символьные операции разбиты на четыре характерных раздела, которые рассмотрены ниже.
Операции с выражениями
К операциям с выделенными выражениями относятся:
Evaluate (Вычислить) преобразовать выражение с выбором вида преобразований из подменю: Symbolically, Floating Point, Complex (Символьные, С плавающей запятой, Комплексные). Операция возможна также над матрицами с символьными элементами. Примеры работы операции:
Simplify (Упростить) упростить выделенное выражение с выполнением таких операций, как сокращение подобных слагаемых, приведение к общему знаменателю, использование основных тригонометрических тождеств. Упрощение означает замену более сложных фрагментов выражений на более простые. Приоритет тут отдается простоте функций. К примеру, функция tan (x) считается более сложной, чем функции sin (x) и cos (x);
Expand (Расширить) раскрыть выражение. Действие противоположно действию операции Simplify. Старается более простые функции представить через более сложные, свести алгебраические выражения, представленные в сжатом виде, к выражениям в развернутом виде (например, (X+ Y)·(X-Y) будет преобразовано в X2-Y2);
Factor (Разложить) разложить число или выражение на множители. Способствует выявлению математической сущности выражений, к примеру, выявляет представление полинома через его действительные корни. Обычно приводит к упрощению (например, X2-Y2 будет преобразовано в (X+ Y)·(X-Y));
Collect (Собрать) собрать слагаемые, подобные выделенному выражению, которое может быть отдельной переменной или функцией со своим аргументом. Обеспечивает замену указанного выражения выражением, скомплектованным по базису указанной переменной;
Polynomial Coefficients (Коэффициенты полинома) найти коэффициенты полинома по заданной переменной. Выражения могут быть перезаписаны в виде полиномов от выделенной переменной или относительно подвыражения. MathCAD возвращает вектор, содержащий коэффициенты требуемого полинома в порядке возрастания степеней.
Операции с переменными
Группа символьных операций выполняется с выражениями, требующими указания переменной, по отношению к которой выполняется операция. Для этого достаточно установить на переменной курсор ввода. Само выражение при этом не указывается отдельно, поскольку указание в нем на переменную является одновременно и указанием на само выражение. Если выражение содержит другие переменные, то они рассматриваются как константы.
Solve (Решить) найти значения выделенной переменной, при которых содержащее ее выражение становится равным нулю. Команду Solve удобно использовать для решения алгебраических уравнений и для определения корней полиномов.
Чтобы найти корни уравнения, надо:
При вычислении корней уравнения выражение автоматически приравнивается к нулю и выдаётся результат в виде матрицы.
Substitute (Подстановка) заменить указанную переменную содержимым буфера обмена. Предварительно выражение, используемое для подстановки, надо скопировать или вырезать в буфер, а затем выделить заменяемую переменную. Если переменная фигурирует в выражении несколько раз, MathCAD заменит все её вхождения на содержимое буфера обмена. Эта команда позволяет перейти от символьного представления результата к числовому.
Differentiate (Дифференцировать) дифференцировать все выражение, содержащее выделенную переменную, по этой переменной. Остальные переменные рассматриваются как константы.
Integrate (Интегрировать) интегрировать все выражение, содержащее выделенную переменную, по этой переменной.
Expand to Series (Разложить в ряд...) найти несколько членов разложения выражения в ряд Тейлора относительно выделенной переменной.
Чтобы использовать команду Разложить в ряд... , нужно:
Затем MathCAD выдаст соответствующее разложение выражения по формуле Тейлора. Если выбрать x в sin(x) и указать порядок остаточного члена 6, получится разложение функции синус по степеням x, в котором самая высокая степень x5. Ошибка, таким образом, имеет порядок О(x6).
Ответы, которые получаются применением команды Разложить в ряд... , используют для остаточного члена обозначение O. Прежде чем использовать разложение для дальнейших вычислений, следует удалить этот остаточный член.
Команда Разложить в ряд... ограничивается разложением в ряд по одной переменной; любые другие переменные в выражении обрабатываются как константы. Чтобы найти члены разложения в ряд относительно точки, отличной от нуля, требуется замена переменной.
Convert to Partial Fraction (Разложить на элементарные дроби) разложить выражение, которое рассматривается как рациональная дробь относительно выделенной переменной.
Операции с матрицами
Transpose (Транспонировать) получить транспонированную матрицу.
Invert (Обратить) создать обратную матрицу.
Determinant (Определитель) вычислить определитель матрицы.
Операции преобразования
Fourier Transform (Преобразование Фурье).
Inverse Fourier Transform (Обратное преобразование Фурье).
Laplace Transform (Преобразование Лапласа).
Inverse Laplace Transform (Обратное преобразование Лапласа).
Z Transform (Z-преобразование).
Inverse Z Transform (Обратное Z-преобразование).
9.3. Система SmartMath
Для выполнения символьных преобразований применяются операция символьного вывода и операция расширенного символьного вывода . Символы операций можно выбрать в палитре Symbolic или задать с помощью клавиатурных комбинаций Ctrl+.(точка) или Ctrl+Shift+.(точка). Расширенный оператор имеет два шаблона, в первый вводится символьное выражение, а во второй директива. Кроме того, в такой оператор можно включить другой символьный оператор, чтобы получить составной оператор и поля для записи нескольких директив. Пример символьного преобразования:
Чтобы воспользоваться оператором символьного вывода, надо задать его одним из имеющихся способов, а затем заполнить поля ввода. При работе с оператором расширенного вывода в первом поле ввода записывается выражение, а во втором директива.
При вводе после выражения стрелки по умолчанию выполняется операция Simplify (Упростить). При необходимости выполняемую операцию можно уточнить с помощью ключевых слов. Ключевые слова можно выбирать из наборной палитры или набирать только строчными буквами. Большинство ключевых слов совпадает с командами меню Symbolics, например:
simplify упрощение выражений;
expand разложение выражения по степеням;
factor разложение выражения на простые множители;
series разложение в ряд по заданным переменным;
float преобразование в формат чисел с плавающей точкой;
parfac разложение на элементарные дроби;
coeffs получение коэффициентов полинома;
fourier прямое преобразование Фурье;
1ар1асе прямое преобразование Лапласа.
Пример использования операции расширенного символьного вывода с применением ключевого слова:
.
Преобразования Фурье и Лапласа требуют использования специальных символов для обозначения переменных (табл. 5).
Ключевое слово |
Преобразование |
Переменные |
|
Исходная |
После преобразования |
||
fourier |
Прямое преобразование Фурье |
t |
ω |
invfourier |
Обратное преобразование Фурье |
ω |
t |
laplace |
Прямое преобразование Лапласа |
t |
s |
invlaplace |
Обратное преобразование Лапласа |
s |
t |
Например, преобразование по Лапласу функций et и sin(2t)
, .
Если есть необходимость, можно изменить имена переменных.
.
Можно применять несколько операций, например, добавить упрощение.
Обратное преобразование Лапласа.
Прямое преобразование Фурье (для функции Дирака).
Обратное преобразование Фурье.
В современных версиях пакета директивы охватывают все возможные символьные преобразования и прямо указывают на выполняемые действия. При этом их стало даже больше, чем команд меню Symbolics.
Использование операторов символьного вывода имеет несколько существенных преимуществ:
10. ПРОГРАММИРОВАНИЕ В MATHCAD
Средства программирования включаются только в версии пакета MathCAD Professional. Программные модули выделяются в документе жирной вертикальной чертой и формируются с помощью операторов (инструкций). Путём применения программного модуля можно реализовать алгоритм вычислений для получения результата. Кроме того, разрешено встраивать программные модули в определение функций. Назначение программных модулей заключается в определении выражений, переменных и функций в несколько строк, часто с применением специфических программных операторов.
Возможности:
Программирование осуществляется при помощи панели инструментов Programming (Программирование).
Программные операторы
Для организации программы необходимы операторы, реализующие основные базовые структуры: следование, ветвление и цикл с предусловием. Ниже приведён перечень программных операторов MathCAD.
Add line добавить строку программы (тела цикла, плеча альтернативы).
знак локального присваивания.
If оператор «если», позволяет вводить в программу альтернативу с одним плечом.
Otherwise позволяет превратить неполную альтернативу в полную.
C D if A > B
E F otherwise
While цикл с предпроверкой.
For цикл с параметром.
Break досрочный выход из программы или цикла.
Сontinue обозначает границы завершения тела цикла.
Return возвращает значение переменной.
On error перехват ошибок.
Программный модуль обозначается в MathCAD вертикальной чертой, справа от которой последовательно записываются операторы языка программирования. Пример программного модуля:
Создание программы (Add Line)
Чтобы создать программный модуль:
После того как программный модуль полностью определен, функция может использоваться обычным образом как в численных, так и в символьных расчетах.
С клавиатуры имена программных операторов вводить нельзя. Для их вставки можно применять лишь сочетания клавиш, которые приведены в тексте всплывающей подсказки.
Вставить строку программного кода в уже созданную программу можно в любой момент с помощью кнопки Add Line. Для этого следует предварительно поместить на нужное место внутри программного модуля курсор ввода.
Локальное присваивание ()
Позволяет создавать внутри программных модулей локальные переменные, которые "не видны" из других частей документа. Например, рассмотрим функцию, вычисляющую логарифм числа по произвольному основанию
Переменная z существует только внутри программы, выделенной вертикальной чертой. Из других мест документа получить ее значение невозможно.
Операторы ветвления
Оператор условия if возвращает значение выражения, если условие имеет значение «истина» (выполняется). Сначала записывается выражение, затем директива if, после которой вводится условие:
Выражение if Условие
Совместно с условным оператором часто используется оператор «иначе» otherwise. Этот оператор позволяет задать действия для тех случаев, когда условие не выполняется (имеет значение «ложь»). Сначала следует записать выражение, а потом директиву otherwise. Например, функцию, которая имеет значение 0 при x<0 и значение 1 для всех других значений аргумента, можно определить следующим образом.
Операторы цикла
Имеются два оператора цикла: for и while. Первый из них дает возможность организовать цикл по некоторой переменной, заставляя ее пробегать некоторый диапазон значений. Второй создает цикл с выходом из него по некоторому логическому условию.
Чтобы вставить в программный модуль оператор цикла:
Для досрочного завершения цикла предназначен оператор break. Производит остановку исполнения программы при выполнении некоторого условия.
Чтобы четче обозначить границы завершения тела цикла, в его конце может использоваться дополнительная строка с оператором continue.
Возврат значения
В программном модуле его строки исполняются последовательно. По мере выполнения программы рассчитываемый результат претерпевает изменения. В качестве окончательного результата выдается последнее присвоенное значение. Чтобы подчеркнуть возврат программным модулем определенного значения, его нужно прописать в последней строке.
Можно прервать выполнение программы в любой ее точке и выдать некоторое значение, применив оператор return. В этом случае при выполнении указанного условия значение, введенное в местозаполнитель после return, возвращается в качестве результата, а никакой другой код больше не выполняется.
Перехват ошибок
Если предполагается, что выполнение кода способно вызвать ошибку (например, деление на ноль), то эту ошибку можно перехватить с помощью оператора on error. Этот оператор задается в виде:
Выражение_2 on error Выражение_1.
Если при выполнении Выражения_1 возникает ошибка, то выполняется Выражение_2.
В правом местозаполнителе следует ввести выражение, которое должно выполняться в данной строке программы. В левом - выражение, которое будет выполнено вместо правого выражения, если возникнет ошибка.
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ _________________________________________________ |
1 |
1. ОСНОВНЫЕ СВЕДЕНИЯ О ПАКЕТЕ MATHCAD. ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС __________________________ |
3 |
2. СОЗДАНИЕ И РЕДАКТИРОВАНИЕ ФОРМУЛ И ТЕКСТА _______ |
4 |
2.1. Курсор _____________________________________________ |
4 |
2.2. Простейшие вычисления и операции ____________________ |
5 |
2.3. Текстовые области ___________________________________ |
6 |
3. КОНСТАНТЫ, ПЕРЕМЕННЫЕ И ФУНКЦИИ __________________ |
7 |
3.1. Имена в MathCAD ___________________________________ |
7 |
3.2. Задание констант и переменных ________________________ |
8 |
3.3. Функции ___________________________________________ |
9 |
4. ВЕКТОРЫ И МАТРИЦЫ ____________________________________ |
10 |
4.1. Создание массивов ___________________________________ |
10 |
4.2. Выбор элементов массивов ____________________________ |
11 |
4.3. Основные векторные и матричные функции ______________ |
12 |
4.4. Векторные и матричные операции ______________________ |
13 |
5. РЕШЕНИЕ УРАВНЕНИЙ ___________________________________ |
14 |
5.1. Решение уравнения с одним неизвестным _______________ |
14 |
5.2. Нахождение корней полинома _________________________ |
14 |
5.3. Решение систем нелинейных уравнений и неравенств ______ |
15 |
5.4. Решение систем линейных уравнений ___________________ |
16 |
6. ДИФФЕРЕНЦИАЛЬНЫЕ УРАВНЕНИЯ И СИСТЕМЫ ___________ |
16 |
6.1. Решение одного ОДУ _________________________________ |
17 |
6.2. Решение систем ОДУ _________________________________ |
20 |
6.3. Решение жестких систем ОДУ _________________________ |
22 |
7. РАБОТА С ФАЙЛАМИ ДАННЫХ ____________________________ |
24 |
7.1. Текстовые файлы данных. Функции для работы с файлами _ |
24 |
7.2. Считывание данных из файла с использованием компонента «Таблица» ___________________________________________________ |
25 |
7.3. Работа с графическими файлами _______________________ |
26 |
8. ОБРАБОТКА ЭКСПЕРИМЕНТАЛЬНЫХ ДАННЫХ _____________ |
28 |
8.1. Аппроксимация и интерполяция функций ________________ |
28 |
8.2. Локальная интерполяция ______________________________ |
29 |
8.3. Метод наименьших квадратов. Аппроксимация функций ___ |
31 |
8.4. Сглаживание функций ________________________________ |
34 |
9. СИМВОЛЬНЫЕ ВЫЧИСЛЕНИЯ _____________________________ |
36 |
9.1. Организация символьных вычислений __________________ |
36 |
9.2. Меню Symbolics _____________________________________ |
36 |
9.3. Система SmartMath ___________________________________ |
40 |
10. ПРОГРАММИРОВАНИЕ В MATHCAD ______________________ |
43 |