Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы вычислений в MathCAD. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]