Uploaded by Кирилл Дроздов

Программирование на MathCAD

advertisement
MathCAD
13.05.2015
MathCAD
MathCad - это математический редактор, позволяющий проводить
разнообразные научные и инженерные расчеты, начиная от элементарных
арифметических и заканчивая численными.
Простые арифметические вычисления
Чтобы набрать выражение (левая часть равенства) нужно щелкнуть в
любом пустом месте документа, при этом появится красный крестик . Он
обозначает место, с которого начнется ввод математического выражения. При
вводе выражения появится “рамочка” и вид курсора изменится:
Чтобы получить результат надо просто ввести знак равенства =:
10
7
100× 100× 2 = 1.024 ´ 10
Подобным образом можно проводить и более сложные и громоздкие
вычисления, пользуясь при этом всем арсеналом специальных функций,
которые встроены в MathCad. Легче всего вводить их имена с клавиатуры, но,
чтобы избежать возможных ошибок в их написании, лучше выбрать другой
путь.
Чтобы ввести встроенную функцию в выражение:
· Нажмите кнопку
с надписью f(x) на стандартной панели
инструментов (воспользуйтесь меню Вставка à Функция… , или используйте
“горячие” клавиши Ctrl + E):
· В списке Function
Category (Категория
функции)
появившегося диалогового окна Insert Function (Вставить функцию)
выберите категорию, к которой принадлежит функция. Например,
Trigonometric (Тригонометрические).
1
MathCAD
13.05.2015
· В списке Function Name (Имя функции) выберите имя встроенной
функции. В случае затруднения ориентируйтесь на подсказку, появляющуюся
при выборе функции в нижнем текстовом поле диалогового окна.
· Нажмите кнопку ОК.
Панели инструментов
Панели инструментов служат для быстрого (за один щелчок мыши)
выполнения наиболее часто применяемых команд. Все действия, которые
можно выполнить с помощью панелей инструментов, доступны также через
верхнее меню. На рисунке изображено окно MathCad (русифицированная
версия 13), содержащее три основные панели инструментов, расположенные
непосредственно под строкой верхнего меню:
Включаются и выключаются панели инструментов в меню Вид à Панели
инструментов:
2
MathCAD
13.05.2015
· Standard (Стандартная) - служит для выполнения большинства
операций, таких, как действия с файлами, редакторская правка, вставка
объектов и доступ к справочным системам;
· Formatting (Форматирование) - для форматирования (изменения
типа и размера шрифта, выравнивания и т. п.) текста и формул;
· Math (Математика) - для вставки математических символов и
операторов в документы.
Панель Math предназначена для вызова на экран еще девяти панелей, с
помощью которых, и происходит вставка математических операций в
документы. Чтобы показать какую-либо из них, нужно нажать
соответствующую кнопку на панели Math:
Перечислим назначение математических панелей:
· Calculator (Калькулятор) - служит для вставки основных
математических операций и некоторых функций;
· Graph (График) - для вставки графиков;
· Matrix (Матрица) - для вставки матриц и матричных операторов;
· Evaluation (Расчет) - для вставки операторов управления
вычислениями;
· Calculus (Исчисления) - для вставки операторов интегрирования,
дифференцирования, суммирования;
· Boolean (Двоичный) - для вставки логических (булевых)
операторов;
· Programming (Программирование) - для программирования
средствами MathCad;
· Greek (Греческие символы) - для вставки греческих символов;
· Symbolic (Символьные операторы) - для вставки символьных
операторов.
3
MathCAD
13.05.2015
Использование переменных и функций
Пример использования переменных в расчетах:
Для определения переменной после ее имени ставится символ := и
печатается присваиваемое значение.
Пример вычисления выражения с условием:
Для вычисления выражения с условием надо использовать функцию
if(▪,▪,▪) (ни в коем случае не использовать ▪ if ▪ из панели
Программирование). В скобках, через запятую указаны три позиции: в
первую вводится условие, во вторую - выражение, если условие истинно, в
третью – выражение, если условие ложно.
Пример: x := if (a>b, a+5, b-5)
П р и м е ч а н и е . Для ввода знаков = , ³ , £ , ¹ нужно использовать
панель Boolean (Двоичный):
Пример определения функции пользователя и расчета ее значения в точке х=1:
В MathCad имеет значение вертикальный уровень расположения данных.
Если имя переменной используется выше, чем оно было определено, то оно
будет неопознанным (Not defined).
4
MathCAD
13.05.2015
Построение графика функции
Чтобы построить график функции надо вызвать панель Graph
на панели инструментов Math
(График). Для этого надо нажать кнопку
(Математика). Затем выбрать нужный тип графика X-Y Plot (График X-Y):
Через верхнее меню: Insert (Вставка) à Graph (График) à X-Y Plot
(План X-Y).
Теперь надо ввести f(x) в соответствующее место возле оси OY и x
возле оси OX:
В режиме редактирования (щелкнув по области графика) можно изменять
размеры области построения и изменять границы изменения аргумента и
границы построения функции. Если необходимо добавить график еще одной
функции, то после имени функции (в примере - f(x)) нужно ввести запятую.
Табулирование функции одной переменной
З а д а н и е . Вычислить значения функции на заданном отрезке и
построить ее график:
bx + dx 2
f ( x) =
для x Î [0,8; 3,2]
x
d = 3,54 ; b = 6,9 с шагом dx = 0,2.
5
MathCAD
13.05.2015
1. Задаем значения переменной x на отрезке. Для этого используем кнопку
Range Variable (Ранжированная переменная) на панели Matrix
(Матрица). Например x := xn .. xk, если шаг изменения переменной равен
единице, и x := xn, xn+dx .. xk, если шаг не равен единице.
Распечатываем значения x (набираем ниже x=):
2. Задаем вид функции f(x) и распечатываем ее значения f(x)=:
3. Выполняем команду меню Insert (Вставка) à Graph (График) à X-Y Plot
(План X-Y). В открывшемся окне графика устанавливаем курсор в черный
прямоугольник под осью абсцисс и набираем x (если аргумент функции x),
затем устанавливаем курсор в черный прямоугольник у оси ординат и
набираем f(x) и щелкаем левой кнопкой мыши за пределами окна графика.
Векторы (одномерные массивы) и матрицы (двумерные массивы)
В MathCad имеются широкие возможности для работы с векторами и
матрицами. Для работы с ними используется панель Matrix (Матрица) - для
6
MathCAD
13.05.2015
вставки матриц и матричных операторов, которую можно вызвать из панели
инструментов Math (Математика):
à
Для создания вектора или матрицы надо на панели Matrix (Матрица)
нажать на первую кнопку Matrix or Vector (Матрица или вектор) или
использовать “горячие” клавиши Ctrl + M или же использовать меню
Вставка à Матрица…. В появившемся диалоговом окне надо ввести
количество строк в поле Rows (Рядов) и количество столбцов в поле Columns
(Столбцов):
à
Для вектора (одномерного массива) задаем количество столбцов = 1.
Пример. Найти количество отрицательных элементов в векторе
(одномерном массиве) размером 6 элементов.
4. Задаем переменную i , которая будет являться индексом массива. Для
этого вводим с клавиатуры i, затем знак равенства (он автоматически заменится
на :=), далее используем кнопку
Range Variable (Ранжированная
переменная) на панели Matrix (Матрица). Так как шаг индекса равен
единице, а в MathCad индексы отсчитываются с нуля, то i := 0 .. 5.
5. Создаем массив a и вводим элементы массива. Для этого вводим с
клавиатуры a, затем знак равенства (он автоматически заменится на :=). Далее
меню Вставка à Матрица…. В появившемся диалоговом окне вводим
количество строк в поле Rows (Рядов) = 6 и количество столбцов в поле
Columns (Столбцов) = 1:
Теперь вводим элементы массива, для перехода к следующей позиции
можно использовать клавишу Tab.
6. Используем ниже следующую запись:
7
MathCAD
13.05.2015
Для правильного ввода сначала нажимаем кнопку
Summation with
range variables (Сумма ранжированной переменной) на панели
Calculus (Исчисления) (быстрая клавиша $):
Ниже знака суммы вводим i, а справа ai < 0 (скобки будут вставлены
автоматически). Перед вводом i надо ввести символ [ (левая квадратная скобка),
при этом появится возможность ввести индекс (подстрочный символ):
После ввода записи
вводим знак равенства и получаем результат:
Чтобы начальное значение индекса массива было равно единице, а не
нулю, можно системной переменной ORIGIN присвоить значение 1:
Работа с двумерным массивом (матрицей) принципиально ничем не
отличается от работы с одномерным массивом (вектором), только появляется
8
MathCAD
13.05.2015
второй индекс - номер столбца, что требует введения второй интервальной
переменной.
Для демонстрации примеров зададим матрицу a(3*3) :
Пример использования стандартных функций:
Максимальный элемент в массиве:
Минимальный элемент в массиве:
Среднее значение элементов в массиве:
Пример. Вычислить количество отрицательных элементов в строке:
Затем набираем b= и получаем одномерный массив (вектор):
Пример. Вычислить сумму неотрицательных (больших или равных
нуля) элементов в строке:
П р и м е ч а н и е . Для ввода знаков = , ³ , £ , ¹ нужно использовать
панель Boolean (Двоичный):
9
MathCAD
13.05.2015
Пример. Вычислить сумму и произведение всех элементов матрицы:
Кнопки суммы и произведения находятся на панели Calculus
(Исчисления):
Пример. Заменить элементы матрицы, находящиеся на главной диагонали
на +1:
Лучше всего if вводить через меню (кнопка
с надписью f(x) на
стандартной панели инструментов, верхнее меню Вставка à Функция… ,
или “горячие” клавиши Ctrl + E). Знак равенства в логическом условии
ОБЯЗАТЕЛЬНО вводить с панели Boolean (Двоичный). Для записи
уравнений используйте “жирный” знак равенства между левой и правой
частью. Для его ввода надо одновременно нажать клавишу Ctrl и =
Решение уравнений и систем уравнений
Решение уравнения с одним неизвестным
Для решения одного уравнения с одним неизвестным используется
функция root. Аргументами этой функции являются выражение и переменная,
входящая в выражение. Функция возвращает значение переменной, которое
обращает выражение в ноль.
Пример. Решить уравнение x3 + 12x - 2 = 0 :
10
MathCAD
13.05.2015
Сначала записываем уравнение в виде F(x) := левая часть уравнения.
Затем задаем начальное приближение корня x := 0 (если уравнение имеет один
корень, то начальное приближение может быть любым). Далее вычисляем
корень уравнения, используя функцию root и, наконец, выводим значение
корня, набрав Y =.
Для ввода степени вводим символ ^ и не забываем ставить знак
умножения (символ *) между 12 и x.
Примечание. Функция root находит только одно значение, которое
зависит (если уравнение имеет несколько корней) от начального приближения.
Решение квадратного уравнения
Пример. Решить уравнение 10x2 - 3x - 17 = 0 .
Вводим уравнение:
Устанавливаем курсор на переменную x:
Верхнее меню Symbolics (Символика) à Variable (Переменная)
à Solve (Решить). После выполнения этой команды появятся формулы для
нахождения корней:
Чтобы получить решение просто введите знак равенства =:
Графическое решение уравнения
Пример. Решить уравнение 10x2 - 3x - 17 = 0 графически.
Сначала определяем функцию F(x) и строим ее график:
11
MathCAD
13.05.2015
Решением уравнения являются точки пересечения графика функции с
осью OX, поэтому чтобы получить более точный результат изменим границы
интервала изменения аргумента x:
Теперь щелкнем правой кнопкой мыши в любом месте графика и
выберем из контекстного меню команду Trace… (Трассировка…):
Галочка в пункте Track Data Points (Трасс. Точек данных)
должна быть установлена. В этом случае будут выбираться только точки с
текущего графика.
Теперь щелкаем левой кнопкой мыши в любом месте графика и, не
отпуская, перемещаем по графику так, чтобы вертикальная и горизонтальная
пунктирные линии пересеклись в точке, где функция равна нулю:
12
MathCAD
13.05.2015
В окне трассировки должно быть при этом наиболее близкое к нулю
значение Y-Value:
Значение X-Value и будет первым корнем уравнения. Это значение
можно скопировать в буфер обмена нажав кнопку Copy X и затем вставить,
например, в текстовую область на рабочем листе Insert (Вставка) à Text
Region (Текстовая область):
Аналогично можно решить уравнение вида f1(x) = f2(x). Для этого надо
построить графики обеих функций в одной области построения и найти
координаты точки (точек) пересечения:
Пример:
13
MathCAD
13.05.2015
Решение системы линейных уравнений
Векторные и матричные операторы и функции MathCad позволяют
решать широкий круг задач линейной алгебры. Если задана матрица
коэффициентов A и вектор свободных членов B, то в матричной форме система
линейных уравнений выглядит так:
AžX=B
Тогда вектор корней системы можно вычислить как:
X = A-1 ž B
Пример. Решить систему линейных уравнений:
ì 4 x1 + 0,24 x 2 - 0,08 x3 = 8
ï
í 0,09 x1 + 3 x 2 - 0,15 x3 = 9
ï 0,04 x - 0,08 x - 4 x = 20
î
1
2
3
Решение:
Также решение системы можно получить, используя функцию lsolve;
Решение системы нелинейных уравнений
Для решения системы нелинейных уравнений используется специальный
вычислительный блок, который начинается со служебного слова Given и
заканчивается функцией Find.
Пример. Решить систему нелинейных уравнений:
14
MathCAD
13.05.2015
ì2 y
ïx + 3 =3
íx 3 3
ï + =
î2 y 2
Решение:
Примечание. Для записи уравнений используйте “жирный” знак
равенства между левой и правой частью. Для его ввода надо одновременно
нажать клавишу Ctrl и = или же воспользоваться панелью Boolean
(Двоичный).
Программирование в среде MathCad
Основными инструментами работы в MathCad являются математические
выражения, переменные и функции. Нередко записать формулу,
использующую ту или иную внутреннюю логику (например, возвращение
различных значений в зависимости от условий), в одну строку не удается.
Назначение программных блоков как раз и заключается в определении
выражений, переменных и функций в несколько строк, часто с применением
специфических программных операторов.
Программный блок представляет собой группу операторов присваивания
и управляющих операторов. Необходимо обратить особое внимание, что все
ключевые слова (например, if) в этих операторах обязательно вводятся с
помощью панели Programming (Программирование). Их ввод с
клавиатуры - ошибка!
В целом правила работы с операторами те же, что и в языке Pascal,
отличия касаются только способа записи операторов.
Программный блок обозначается вертикальной чертой, справа от которой
последовательно записываются операторы языка программирования. Чтобы
начать создание программного модуля, следует нажать на панели
Programming (Программирование) кнопку Add Line (Добавить строку
программы). Затем, если приблизительно известно, сколько строк кода будет
содержать программа, можно создать нужное количество линий повторными
нажатиями кнопки Add Line (Добавить строку программы):
15
MathCAD
13.05.2015
Ниже
приведены
примеры
программных
распространенных алгоритмов вычислений.
блоков
некоторых
Вычисление выражения с условием
Вычисление суммы элементов одномерного массива с
использованием оператора цикла For
16
MathCAD
13.05.2015
Вычисление суммы бесконечного ряда с заданной точностью с
использованием цикла While
Функции линейной и сплайновой аппроксимации
При проведении научно-технических расчетов или обработке результатов
наблюдений и экспериментов часто используются зависимости вида у(х),
заданные в табличном виде, причем число точек таких зависимостей
ограничено.
При этом возникает задача приближенного вычисления значений
функции в промежутках между узловыми точками (интерполяция) и за их
пределами (экстраполяция). Эта задача решается аппроксимацией
исходной зависимости, то есть ее подменой какой-либо достаточно простой
функцией для дальнейшего анализа. В MathCad имеются встроенные функции,
обеспечивающие кусочно-линейную и сплайновую интерполяцию исходной
табличной зависимости.
Одномерная линейная аппроксимация
При линейной (кусочно-линейной) интерполяции узловые точки данных
соединяются отрезками прямых линий, образуя ломаную линию.
Интерполируемое значение для конкретного значения х есть ордината у
соответствующей точки ломаной.
Для этого в MathCad используется функция linterp(X, Y, x),
которая возвращает вычисленное значение для заданных векторов одинаковой
длины VX и VY (координаты узловых точек) и заданного аргумента x. Причем
вектор VX должен содержать вещественные значения, расположенные в
порядке возрастания.
17
MathCAD
13.05.2015
Пример:
Если значения первого столбца данных (значения x узловых точек)
расположены не в порядке возрастания, можно предварительно отсортировать
двумерный массив m по первому столбцу используя функцию csort:
Одномерная сплайн-аппроксимация
Как видно, при небольшом числе узловых точек линейная интерполяция
оказывается довольно грубой. Для целей экстраполяции функция linterp
вовсе не предназначена и за пределами области определения может вести себя
непредсказуемо.
Гораздо лучшие результаты дает сплайн-аппроксимация. В этом случае
исходная функция заменяется отрезками кубических полиномов, проходящих
через три смежные узловые точки. Коэффициенты полиномов рассчитываются
так, чтобы непрерывными были первая и вторая производные.
18
MathCAD
13.05.2015
Для осуществления сплайновой аппроксимации в MathCad имеются
четыре встроенные функции. Три из них служат для получения векторов
вторых производных сплайн-функций при различном виде интерполяции:
· cspline(VX, VY) - возвращает вектор VS вторых производных при
приближении в опорных точках к кубическому полиному;
· pspline(VX, VY) - возвращает вектор VS вторых производных при
приближении к опорным точкам параболической кривой;
· lspline(VX, VY) - возвращает вектор VS вторых производных при
приближении к опорным точкам прямой.
Наконец, четвертая функция:
· interp(VS, VX, VY, x)- возвращает значение у(х) для заданных
векторов VS, VX, VY и заданного значения x.
Пример (продолжение предыдущего примера):
19
Download