Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Основы вычислений в MathCAD. Учебное пособие.pdf
X
- •Редактор Р.К. Мангутова
- •Ctrl+\, y
- •Корректор С.В. Макушина
- •Введение
- •1. Основы работы с документом
- •Клавиши
- •Экран
- •Индекс
- •Сумма
- •Деление
- •2. Матричные операции
- •Операция
- •Клавиатура
- •A1*A2
- •V1*V2
- •A, Ctrl+!
- •Ctrl+$, V
- •M, ^, n
- •M, Ctrl+^, n
- •M[i,j
- •3. Численное решение алгебраических уравнений и их систем
- •ПРАКТИКУМ
- •Тема 1. Основы работы с пакетом
- •Для всех вариантов задания выполнить следующие действия.
- •Пример выполнения задания
- •1. Назовите алфавит пакета.
- •Тема 2. Матричные операции
- •Для всех вариантов задания выполнить следующие действия.
- •Пример выполнения задания
- •Тема 5. Обработка данных

ic, jc). Ее аргументы определяют диапазон и порядок включения строк –
от ir до jr – и столбцов – от ic до jc – в подматрицу. Если ir > jr, то
строки переписываются в обратном порядке (аналогич-но – по столб-
цам). Имеется возможность присоединения массивов последовательно
друг к другу справа функцией augment(a1, a2, a3, ...), при этом массивы
должны иметь одинаковое количество строк. Последовательно распола-
гает массивы один под другим, если в них одинаковое число столбцов,
функция stack(a1, a2, a3, ...). Ниже показаны примеры выполнения не-
которых действий. Из них видно, что при построении выражений можно
включать функции друг в друга. Операция векторизация, представлен-
ная в последней строке, позволяет упростить запись действий и приведет к перемножению соответствующих элементов матриц nm и M, а не
к перемножению самих этих массивов (что было бы выполнено, если бы
отсутствовал символ векторизации).
Файлы данных
21

Пакет MathCAD содержит функции для работы с файлами данных
(бинарными, в формате ASCII и Excel), файлами изображений и звуко-
выми файлами. MathCAD способен считывать как структурированные,
так и неструктурированные файлы в формате ASCII (американского
стандартного кода для обмена информацией). Числа в таких файлах
должны быть отделены пробелами или символами табуляции, или сим-
волами перевода строки, или запятыми, как показано на рисунке.
Содержимое файла считывается в документ с помощью функции
READPRN(“file”), где file – полное имя файла с указанием пути к нему
(если файл не находится в рабочем каталоге). MathCAD позволяет
вставлять также в документ рисунки в форматах bmp, jpeg, gif, tga, pcx.
С этой целью используется инструмент "Рисунок" (Ctrl+T) панели
Матрица (или, что то же самое, – одноименная команда секции Встав-
ка главного меню), который вставляет в документ шаблон с одной пози-
цией ввода. В ней набирают <"> и вводят имя файла с рисунком. В при-
мере файл по имени файл.bmp был заранее подготовлен, а файл file1.txt
был создан в блокноте. Запись данных из документа в файл осуществляет функция WRITEPRN(“file”). Наконец, можно дописывать данные в конец файла с помощью функции APPENDPRN(“file”). Очевид-
но, что количество столбцов в файле и в дописываемом массиве должно
быть одинаковым, так как функция размещает дописываемую структуру
под уже существующей. Еще раз подчеркнем, что читается из файла всё
его содержимое, а пишется целиком структура, необходимая для решения поставленной задачи. Функция WRITEPRN позволяет писать и
одно значение, но тогда файл получится состоящим из одного столбца,
22

в который с помощью APPENDPRN можно дописывать только вектор
(в общем случае – матрицу), состоящий даже из одного элемента. Рабо-
ту с таким файлом вряд ли можно назвать эффективной. Ниже показано,
как применяют эти функции.
Форматом записи в файл управляют системные переменные
PRNCOLWIDTH и PRNPRECISION. В примерах они имеют значения
по умолчанию (8 позиций на всё число и 4 – на дробную часть, включая
точку, отделяющую целую часть от дробной).
3. Численное решение алгебраических уравнений и их систем
Численное решение алгебраических уравнений используется го-
раздо чаще аналитического способа получения результата в силу непри-
менимости символьного способа решения к большинству задач.
Решение одного уравнения
Как известно, решением уравнения f(x)=0 является такое значение
неизвестной величины x, которое сводит это уравнение к тождеству.
Функция f(x) может представлять собой весьма сложное выражение,
имеющее не один корень. Целесообразно начать поиск корней с этапа
их отделения (локализации), который предполагает установление отрезков изменения аргумента x, на которых функция f(x) имеет только один
корень. На втором этапе можно осуществить уточнение каждого из кор-
ней с заданной погрешностью. Её величина определяется значением
предопределенной переменной TOL, равным по умолчанию 0.001.
23

Удобно реализовать первый этап графически. В системе MathCAD вто-
рой этап можно осуществить несколькими инструментальными средст-вами. Функция root(f(x), x) использует для отыскания решения уравнения f(x)=0 метод секущих и требует начального приближения. Функция root(f(x), x, xl, xr) ищет корень по методу дихотомии (бисекции, деления отрезка, на котором f(x) меняет знак, пополам). Она использует
левую (xl) и правую (xr) границы интервала, на котором f(x) имеет
единственный корень. Полученные значения корней необходимо прове-
рить. Даже мощная система MathCAD не всегда правильно решает задачу, но это скорее исключение из правила. Например, функция root(f(x),
x) неправильно решает уравнение
при начальном приближении x = –1. Кстати, для этого же уравнения
правильное решение находит функция root(f(x), x, -1, 0), так как исполь-
зует не такой быстрый, как метод секущих, но зато надежный метод ди-
хотомии. Ниже показан пример решения конкретного уравнения.
24

Поиск корней полиномов можно производить как с помощью
названных функций (локализуя и уточняя с заданной погрешностью
каждый из корней в отдельности, как было показано в примере выше),
так и с использованием специально для этого предназначенной функции
polyroots(v), в которой v представляет собой вектор коэффициентов при
степенях неизвестной, начиная со свободного члена. Ниже показано, как
использовать функцию polyroots для решения уравнения, рассмот-
рен-ного в предыдущем примере. Она не требует задания начального
приближения. Количество корней определяется порядком полинома,
корни могут быть вещественными и комплексно-сопряженными.
До-
вольно часто
решение уравнения зависит от некоторого параметра. Рассмотрим
конкретный пример отыскания максимума функции. Предварительное
25

исследование позволило выявить границы поиска положения максимума для функции root.
Решение систем уравнений
MathCAD предоставляет пользователю различные возможности
численного решения систем алгебраических уравнений. Число уравне-
ний в системе, начиная с восьмой версии пакета, достигает 200.
При решении систем линейных алгебраических уравнений ис-
пользуют прямой метод Крамера. Его можно реализовать с помощью
правил линейной алгебры как непосредственно, так и встроенной функ-
ции. В первом случае переписывают систему уравнений в матричном
виде, а затем ее решают известным образом: вектор неизвестных X находят как произведение обратной матрицы A-1 коэффициентов системы
на вектор B правых частей уравнений. Ниже приведен конкретный при-
мер решения системы из трех уравнений.
Исходная система:
2 x⋅2 y⋅+1
x−y+0.5 z⋅−0
y 3 z⋅−2
или в матричном виде
-
A
2
1
−
0
2
1
1
0
0.5
−
3
−
: =
B
1
0
2
: =
A X⋅B
Отсюда
X A
1
−
B
⋅: =
X
0.409
0.091
0.636
−
=
Метод Крамера для этой же системы уравнений, но реализован-
ный с помощью встроенной функции lsolve(A, B), приобретает следую-
щий вид:
x
y
z
lsolve A B
,
( )
: =
x
y
z
0.409
0.091
0.636
−
=
Axy
z
⋅
1
0
2
=
Решая систему линейных уравнений, следует помнить о том, что
MathCAD не всегда сможет найти обратную матрицу коэффициентов.
Вывод сообщения "Matrix is singular" ("Матрица сингулярная") свиде-
26

тельствует либо о линейной зависимости уравнений в системе, либо о
сильном различии (на несколько порядков) коэффициентов уравнений.
При численном решении систем нелинейных алгебраических
уравнений используют итерационные методы, реализованные в системе
в блоке Given – Find. Ниже приведен пример использования блока.
Функция Find реализует решение на основе одного из методов с
погрешностью CTOL. Метод выбирается в контекстном меню, которое
вызывается щелчком правой кнопки мыши по имени функции. По умол-
чанию действует пункт меню Автовыбор (рисунок ниже).
Сам блок должен предваряться заданием начальных приближений
для всех неизвестных. Затем следует служебное слово Given, после ко-
27

торого записываются уравнения системы с использованием логического
знака равенства (Ctrl =) между их левыми и правыми частями. До использования функции Find получения результата в блоке могут быть
представлены ограничительные условия, сужающие диапазон поиска
решения системы. Условия задаются с помощью панели логических
операций Булева алгебра. Аргументами функции Find являются неиз-
вестные. Она возвращает вектор решения, в котором значения неизвест-
ных следуют в том же порядке, что и ее аргументы. Одному служебному слову Given может соответствовать только одна функция Find. Бло-
ки решения нельзя вкладывать друг в друга, но можно определять результат с помощью Find в одном блоке, а использовать его в другом.
Если уравнения системы зависят от параметра, то используют прием,
рассмотренный при решении одного уравнения, – определяют ре-
зультат, зависящий от этого параметра, как показано ниже.
x 10
: =
y 10
−: =
m 1 5
. .: =
given
x
2
y
2
+
6 m
⋅
x y+m
x 0>y 0
<∧
- Ограничительное условие
res m( ) find x y
,
( )
: =
res m( )
0
2.158
3.236
4.098
4.828
5.458
=
res m( )
1
-1.158
-1.236
-1.098
-0.828
-0.458
=
Результат зависит от
параметра m и состоит
из двух столбцов - x(m), y(m):
Кроме рассмотренной функции Find, MathCAD позволяет использовать для решения системы уравнений другую функцию – Minerr, которая реализует тот же итерационный алгоритм, но, в отличие от Find,
всегда возвращает результат. Полученное с ее помощью решение следует проверять на предмет его истинности, так как Minerr возвращает результат, даже если он не удовлетворяет погрешности CTOL. Функция
Find выводит в такой ситуации сообщение об отсутствии сходимости.
28

Кроме рассмотренных выше пяти функций численного решения
алгебраических уравнений, MathCAD содержит еще две функции – min-
imize(f, x) и maximize(f, x) – для отыскания положения локальных экс-
тремумов (соответственно минимума и максимума) выражения f(x) в
окрестности начального приближения. Названные функции могут быть
использованы аналогично функциям root или Find. Ниже дан конкрет-
ный пример применения функций.
f x( ) e
x
x
3
−: =
x 0.1 0.2,4.8
. .: =
0 1.2 2.4 3.6 4.8 6
20
12
4
4
12
20
f x( )
0
x
x 2
: =
maximize f x
,
( ) 0.91
=
f maximize f x
,
( )( ) 1.731
=
minimize f x
,
( ) 3.733
=
f minimize f x
,
( )( ) 10.216
−=
4. Решение дифференциальных уравнений
Для численного решения обыкновенных дифференциальных урав-
нений (ОДУ или ode – ordinary differential equation) система располагает
различными средствами. Можно также реализовать алгоритмы извест-
ных методов решения средствами MathCAD самостоятельно. Встроен-
ные средства пакета позволяют решать ОДУ в форме задачи Коши, кра-
евые задачи, ДУ в частных производных.
Решение ОДУ первого порядка и их систем
ОДУ в форме задачи Коши могут быть решены в системе двумя
способами: с помощью вычислительного блока Given – Odesolve и с ис-
пользованием встроенных функций. Начиная с версии 2001i, MathCAD
позволяет решать с помощью блока и системы ОДУ.
Для решения ОДУ с помощью блока необходимо произвести следующие действия. Записывают служебное слово Given, ниже которого
определяют ОДУ. При этом уравнения должны быть строго линейными
29

(высшие производные не должны иметь сомножителей и степенных по-
казателей). Производную допустимо представлять в любой из двух ис-
пользуемых в математике форм [dy/dx или y'(x)]. Символ <штрих>
производной набирается сочетанием клавиш Ctrl+F7. Затем внутри бло-
ка задают начальные условия – значения искомых функций и их произ-
водных по n-1 включительно (n – порядок ОДУ) в исходной (левой) точ-
ке интегрирования. Уравнение и начальные условия записывают с логи-
ческим знаком равенства. Можно задавать ограничительные условия в
форме алгебраических уравнений и неравенств. После этого для получе-
ния значений искомых функций в узловых точках в блоке используют
функцию odesolve([v], x, r, [step]). На рисунке показан пример примене-
ния описанного блока для решения системы из двух ОДУ.
Поясним аргументы функции odesolve. Первый параметр v пред-
ставляет собой вектор имен искомых функций (без указания их аргу-
ментов). Если уравнение одно, то параметр опускается. Число точек
определяется границами изменения аргумента x: левой, заданной при
описании начальных условий, и правой – r, а также шагом step. Шаг
30
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
