ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 03.12.2023
Просмотров: 183
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
116
Урок 8. Символьные вычисления в MathCAD
M
T
Транспонирование матрицы
T
M
-1
Построение обратной матрицы
-1
|M|
Вычисление определителя матрицы
| |
Использование панели инструментов при проведении символьных преобразований имеет следующие особенности:
1)
Хорошее визуальное представление операций (команд).
2)
Вывод шаблонов для задания параметров. Первое знакоместо заполняется выраже- нием, над которым выполняется операция.
3)
Допустимо использование функций пользователя.
4)
Предоставляется возможность передавать данные от формулы к формуле.
5)
Допустимо задание нескольких команд одновременно.
8.6.
Примеры
Пример 8.24 (Использование оператора символьного вывода).
Пример 8.25 (Разложение на элементарные дроби).
Урок 8. Символьные вычисления в MathCAD
117
Пример 8.26 (Определение вектора коэффициентов полинома).
Пример 8.27 (Разложение на множители). При заполнении шаблона следует удалить второе знакоместо.
Пример 8.28 (Раскрытие скобок). Второе знакоместо шаблона можно не заполнять, удалив его.
Отличия в результатах выполнения преобразования с заполнением второго знакоместа шаблона или без заполнения шаблона можно увидеть на следующих примерах:
118
Урок 8. Символьные вычисления в MathCAD
Пример 8.29 (Приведение подобных слагаемых).
Пример 8.30 (Подстановка в выражение).
Замечание. В записи команды символ = соответствует логическому оператору сравнения.
В выражении можно выполнить сразу же несколько подстановок вводом нужного количе- ства двойных маркеров = , разделенных запятыми: или одновременным использованием нескольких команд:
Ввод нескольких команд выполняется следующим образом:
1) ввести первую команду и охватить ее справа уголком курсора:
2) выбрать на панели очередную команду;
3) продолжить ввод в случае использования более двух команд одновременно.
Пример 8.31 (Задание формата представления).
Урок 8. Символьные вычисления в MathCAD
119
Пример 8.32 (Разложение в степенной ряд). Для команды series двойные маркеры вводятся: имя (или значение) переменной, относительно которой выполняется разложение в степенной ряд. Последний маркер содержит число, задающее порядок ошибки. Но по- следний маркер может быть исключен, тогда в этом случае команда series выводит ряд с точностью до членов шестого порядка. Если в первом маркере после названия команды указано только имя переменной, то это воспринимается командой как x=0:
В первый маркер после названия команды можно вводить через запятые несколько пере- менных (возможно, с указанием их значений) при разложении в ряд функции многих пе- ременных в окрестности заданной точки:
Пример 8.33 (Упрощение выражения).
120
Урок 8. Символьные вычисления в MathCAD
Пример 8.34 (Решение уравнений, неравенств и их систем).
Если надо найти решение уравнения вида f(x)=0, то в записи команды можно не указывать правую часть уравнения:
Указав уравнение и условие Im(x)=0 как элементы матрицы-столбца, можно найти только вещественные корни уравнения:
Урок 8. Символьные вычисления в MathCAD
121
Решение системы уравнений можно оформить следующим образом:
Если среди решений системы есть комплексные, например: то выделить только вещественные пары можно так:
Можно решить уравнение при заданном условии, например:
Пример решения неравенства:
Пример 8.35 (Символьные преобразования над функциями пользователя).
122
Урок 8. Символьные вычисления в MathCAD
Замечание. Способ задания нескольких команд описан в примере 8.30.
Пример 8.36 (Использование оператора символьного вывода в блоке решений
Given-Find).
Урок 9. Программирование в MathCAD
123
Урок 9. Программирование в MathCAD
MathCAD Professional позволяет составлять программы, которые с точки зрения програм- миста представляют собой подпрограммы-функции. Они могут возвращать в качестве ре- зультата число, вектор, матрицу или строку текста. Функции могут вызывать самих себя
(рекурсивно определенные функции) или другие подпрограммы-функции, определенные выше в том же MathCAD-документе (или ниже, если при их определении используется оператор глобального присвоения). В этих подпрограммах-функциях можно присваивать значения локальным переменным, создавать ветвления (условные переходы), программи- ровать циклы, производить обработку ошибок. На рис. 9.1 приведен пример подпрограм- мы-функции для нахождения вещественных корней квадратного уравнения. f a b
c
(
)
OR IGIN
1
D
b
2 4a c
"Not a quadratic equation"
return a
0
if
"no real roots"
return
D
0
if x
1
b
D
2 a
x
2
b
D
2a
D
0
if x
b
2a
D
0
if x
Рис. 9.1
Как видно из рис. 9.1, программный модуль обозначается в MathCAD вертикальной чертой, справа от которой последовательно записываются операторы языка программиро- вания.
После того как программный модуль полностью определен, функция может исполь- зоваться обычным образом, как в численных, так и в символьных расчетах. На рис. 9.2 приведены примеры обращения к функции f(a,b,c). f 2 5
6
(
)
"no real roots"
f 1 2
1
(
)
f 1 2
7
(
)
f 0 3
4
(
)
Рис. 9.2
124
Урок 9. Программирование в MathCAD
1 ... 7 8 9 10 11 12 13 14 15
9.1.
Панель программирования
Для вставки программ в MathCAD-документ имеется специальная панель инструментов
Programming
(Программирование)
, которая вызывается на экран нажатием кнопки на панели
Math (
Математика)
, как показано на рис. 9.3.
Рис. 9.3
Рис. 9.4
Операторы программирования вставляются в текст программы с помощью кнопок панели инструментов
Programming (
Программирование)
, или применяя сочетания клавиш, ко- торые можно увидеть в тексте всплывающей подсказки (см. рис. 9.4).
Ключевые слова операторов нельзя просто вводить с клавиатуры, так как при этом они не будут восприняты MathCAD корректно.
Список и назначение операторов программирования приведены в таблице 9.1.
Таблица 9.1. Операторы программирования
Операторы и ключевые слова
Назначение
Сочетание клавиш
Шаблон
Add Line
Добавляет новую строку под/над (зависит от выделения) текущей строкой
]
Присваивает значения локальной пере- менной
{
If
Условный оператор (оператор ветвле- ния). Проверяемое условие должно сто- ять после ключевого слова if, а оператор, который исполняется, если выполнено заданное условие, – перед if.
} if otherwise
Обозначает оператор, который должен быть исполнен, если условие оператора if не выполняется
Ctrl+} otherwise for
Цикл for. За ключевым словом for следу- ет переменная-счетчик, а после символа
вводится промежуток изменения этой переменной. Внутренние операторы цик- ла записываются, начиная со следующей строки, и сдвинуты немного вправо
Ctrl+‖
for while
Цикл while. Внутренние операторы цикла
(со второй строки шаблона) будут испол- няться до тех пор, пока не будет выпол-
Ctrl+] while
Урок 9. Программирование в MathCAD
125
нено условие, следующее за ключевым словом while break
Служит для преждевременного заверше- ния цикла, чтобы, например, избежать зацикливания или слишком продолжи- тельных вычислений
Ctrl+{ break continue
Служит для досрочного завершения те- кущей итерации цикла; сам цикл при этом продолжается
Ctrl+[ continue return
Преждевременное завершение програм- мы с возвратом указанного значения
Ctrl+| return on error
Если при вычислении выражения, ука- занного после ключевых слов on error, возникла ошибка, то вычисляется значе- ние выражения, записанного перед on error
Ctrl+‘ on error
Каждый оператор имеет определенную структуру. Вставка в текст программы оператора приводит к выводу соответствующего ему шаблона. Шаблоны операторов содержат одно или несколько знакомест, все из которых следует заполнить. Знакоместа заполняются вы- ражениями или, в свою очередь, содержат обращение к операторам программирования.
Если при заполнении знакоместа добавляются новые строки, то автоматически изменяется шаблон оператора. Так, при добавлении новой строки при заполнении первого знакоместа оператора if шаблон примет вид: if а при добавлении новой строки при заполнении второго знакоместа – такой: if
При этом набор строк, относящихся к оператору, выделяется вертикальной чертой.
Аналогично вертикальной чертой отмечаются строки, определяющие тело цикла for или while, если добавляются новые строки:
for while
Таким образом, основной принцип создания программных модулей заключается в пра- вильном расположении строк с операторами. Ориентироваться в их действии довольно легко, так как фрагменты программных строк, относящихся к одному уровню, сгруппиро- ваны в программе с помощью вертикальных черт.
126
Урок 9. Программирование в MathCAD
9.2.
Локальное присваивание
Язык программирования MathCAD не был бы эффективным, если бы не позволял созда- вать внутри программных модулей локальные переменные, которые «не видны» извне, из других частей документа. Присваивание значений переменным в программе производится с помощью оператора локального присвоения, который вставляется нажатием кнопки с изображением стрелки на панели
Programming
(Программирование)
Ни оператор присваивания :=, ни оператор вывода = в пределах программы не приме- няются.
Оператор локального присваивания иллюстрируется MathCAD-документом, кото- рый приведен на рис. 9.5.
В пределах программного модуля возможно локальное присваивание значений и встроенным переменным. Так, например, в программе, приведенной на рис. 9.1, такое присвоение выполнено для переменной ORIGIN.
Рис. 9.5
9.3.
Условные операторы (if, otherwise)
Действие оператора if состоит из двух частей. Сначала проверяется логическое выражение
(условие) справа от него. Если оно истинно, то выполняется выражение слева от операто- ра if. Если ложно, то выполнение программы продолжается переходом к строке, следую- щей за оператором. Правила записи условий см. в п. 2.3. Оператор otherwise используется совместно с одним или несколькими условными операторами if и указывает на выраже- ние, которое будет выполняться, если ни одно из условий не оказалось истинным.
Пример 9.1.
Подготовить программу для вычисления значений функции:
2 2,
0 2,
( )
sin(
1),
2 5,
0, иначе.
x
x
y x
x
x
Решение:
y x
( )
x
2 2
x
0
(
)
x
2
(
)
if sin x
1
(
)
x
2
(
)
x
5
(
)
if
0 otherwise
y 6
( )
y 1
( )
y
4
(
)
y 3
( )
Сравните предложенный вариант построения функции с рассмотренным ранее
(пример 2.2).
Урок 9. Программирование в MathCAD
127
Пример 9.2.
Составить программу, с помощью которой, зная корни
1 2
3
,
,
x x x
кубиче- ского уравнения
3 2
0 1
2 3
0
a x
a x
a x a
, находятся его коэффициенты
0 1
2 3
, ,
,
a a a a
Решение: Для определения коэффициентов воспользуемся формулами Виета:
3 1
2 1
2 3
1 2 1 3 2 3 1 2 3 0
0 0
,
,
a
a
a
x
x
x
x x
x x
x x
x x x
a
a
a
Ниже приведен MathCAD-документ, в котором определена функция Cub(x) для опреде- ления коэффициентов кубического уравнения при условии, что
0 1.
a
Cub x
( )
a
0 1
a
1
x
1
x
2
x
3
a
0
a
2
x
1
x
2
x
1
x
3
x
2
x
3
a
0
a
3
x
1
x
2
x
3
a
0
a
x
1 1
x
2 3
x
3 2
Cub x
( )
T
Упражнение 9.1.
Составьте программу для расчета ин- дуктивности многослойной катушки, имеющей размеры Dmin,
Dmax, b и число витков n (рис. 9.6). Индуктивность много- слойной катушки определяется по формуле:
2 2
0, 08
,
3 9
10
D n
L
D
b
C
где
0,5(
max min),
0,5(
max min).
D
D
D
C
D
D
Рис. 9.5
9.4.
Операторы цикла (for, while, continue, break)
В языке программирования MathCAD имеются два оператора цикла: for и while. Первый дает возможность организовать цикл по некоторой переменной, заставляя ее пробегать некоторый диапазон значений. Второй создает цикл с выходом из него по некоторому ло- гическому условию.
Чтобы четче обозначить границу завершения цикла, в его конце можно вставить до- полнительную строку с оператором continue.
Диапазон значений переменной в заголовке цикла for можно задать как с помощью диапазона ранжированной переменной (см. п. 2.4), так и с помощью массива. Примеры записи заголовков цикла for:
1) for i
1 .. N
2) for i
2,4 .. N
3) for i
(1 2 3)
4) M (2 4 6) for m
M
Dma x
Dmin
C
b