
информатика / MathCad и MatLab / Расчеты и моделирование на ЭВМ
.pdfматриц поэлементно (для матриц слева направо и сверху вниз) и по ходу считывания преобразует числовые значения элементов в их символьные эквиваленты, использующие ASCII-коды цифр и символы, относящиеся к заданию чисел. Эти символьные значения и записываются в виде данных файлов.
Существует семь файловых операций, рассматриваемых ниже. Создаваемые или используемые ими файлы легко просмотреть любым текстовым редактором, воспринимающим тексты в виде ASCII-кодов. При считывании файлов система обеспечивает обратное преобразование символьных представлений значений элементов в их числовые значения. Начнем рассмотрение этих операций с операции считывания файла, содержащего данные векторы.
1. READ (Имя_файла).
Эта операция-функция считывает данные из файла с указанным именем Имя_файла и возвращает значение – вектор. Обычно она используется для присваивания значений векторам, например:
V: = READ (DATA).
Здесь элементы вектора V получают значения, считанные из файла с именем DATA. Естественно, что такой файл должен существовать на диске, иначе ситуация будет считаться ошибочной. Для указания полного имени файла (если он не в текущем каталоге системы) следует использовать общеупотребительные для MS-DOS составные имена, например D:\EXPER\DATA, если файл DATA расположен на диске D в каталоге EXPER.
2. WRITE (Имя_файла).
Эта операция записывает данные в файл и присваивает ему указанное имя. Данные могут порождаться математическим выражением, например:
WRITE (Имя_файла): = Выражение. Разумеется, выражение должно создавать данные векторного типа. 3. APPEND (Имя_файла).
Эта операция подобна операции WRITE, но она дописывает данные в конец уже существующего файла. Нельзя использовать другие функции для дописывания данных, поскольку эти функции уничтожают прежние данные в файле и заносят новые.
4. READPRN (Имя_файла).
Эта операция подобна READ, но считывает данные в виде двумерного массива – матрицы. Функция READPRN возвращает матрицу, значения
21
элементов которой однозначно связаны со значениями элементов файла. Точнее, каждая строка или столбец возвращаемой матрицы подобны соответствующим строкам или столбцам текстового представления файла.
5. WRITEPRN (Имя_файла).
Эта операция подобна WRITE, но применяется для записи матричного выражения (или матрицы) в файл с указанным именем. Структура файла подобна структуре матрицы.
6. APPENDPRN (Имя_фaйлa).
Другие функции: WRITEBMP(file), READBMP(file) – пишут/читают файлы растровых рисунков.
3.1.5.3 Функции решения уравнений root и polyroots
Функция root находит решение уравнения вида f(x)=0. Формы записи: root(f(x),x) или root(f(x),x,a,b)
Вторая форма записи позволяет найти решение в диапазоне (a…b). Функция polyroots возвращает вектор корней многочлена (полинома)
степени n, коэффициенты которого находятся в векторе V, имеющем длину n-1. Рассмотрим пример применения этих функций.
22

a3 := 1 |
a2 := -6 |
|
a1 := 21 |
a0 := -52 |
Коэффициенты |
||||||||
F(x) := a3 × x3 + a2 × x2 + a1 × x + a0 |
|
|
|
|
|
полинома |
|
||||||
|
|
|
|
|
|
|
|
||||||
Вычисление действительного корня |
|
|
|
|
|
|
|
||||||
x:= 0 |
x1:= root(F(x) , x) |
|
x1 = 4 |
|
|
|
|
||||||
Вычисление двух других корней |
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
æ F(x) |
ö |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
||||
i := -1 |
x:= 1 + |
1 × i |
x2:= rootè |
|
|
,xø |
x2 = 1 + 3.464i |
||||||
x - x1 |
|||||||||||||
é |
F(x) |
ù |
|
|
|
|
|
|
|
|
|||
x3:= rootë |
|
,xû |
|
x3 = 1 - 3.464i |
|
|
|
||||||
(x - x1) × (x - x2) |
|
|
|
|
|||||||||
Использование функции |
|
polyroots |
|
|
|
|
|||||||
V0 := a0 |
V1 := a1 |
V2 := a2 |
V3 := a3 |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
æ 1 + 3.464i ö |
||
|
|
|
|
|
|
|
|
polyroots (V) = ç |
1 - 3.464i |
÷ |
|||
|
|
|
|
|
|
|
|
|
|
|
ç |
4 |
÷ |
|
|
|
|
|
|
|
|
|
|
|
è |
ø |
3.1.6 Работа с графикой MathCAD
Для построения графиков используется встроенный в MathCAD графический процессор. Графики строятся на базе шаблонов, перечень которых содержится в меню Вставка в подменю График. MathCAD позволяет строить следующие графики:
∙X-Y Plot – двумерный график в декартовой системе координат;
∙Polar Plot – график в полярной системе координат;
∙Surface Plot – трехмерный график;
∙Contour Plot – контурный график трехмерной поверхности;
∙3D Scatter Plot – график в виде точек (фигур) в трехмерном пространстве;
∙Vector Field Plot – график векторного поля на плоскости;
∙3D Bar Chart – совокупность столбиков в трехмерном пространстве.
23

3.1.6.1 График в декартовой системе координат
Первый способ: задать функцию f(x), вставить графическую область (Вставка→График→XY→зависимость; или @). По оси абсцисс ввести x, по оси ординат f(x).
Второй способ: задать ранжированную переменную x:=b_x,b_x+h..e_x, записать функцию f(x), вставить графическую область. По оси абсцисс ввести x, по оси ординат f(x).
Для изменения параметров графика щелкните на нем дважды ЛКМ. Появится окно (рисунок 12).
Рисунок 12 – Окно настройки параметров двухмерного графика (закладка Оси X-Y)
Переключая закладки в окне Formatting Currently Selected X-Y Plot
(Форматировать текущий двухмерный график), можно изменять цвет и стиль линий графика, стиль осей, писать надписи на осях и над графиком
(рисунки 12–14).

Рисунок 13 – Окно настройки параметров двухмерного графика (закладка След)
Рисунок 14 – Окно настройки параметров двухмерного графика (закладка Метки)
3.1.6.2 График в полярной системе координат
Первый способ: задать функцию f(x), вставить графическую область (Вставка-График- Полярные координаты; или Ctrl+7). По оси абсцисс ввести x, по оси ординат f(x).
25

Второй способ: задать ранжированную переменную x:=b_x, b_x+h..e_x, записать функцию f(x), вставить графическую область. По оси абсцисс ввести x, по оси ординат f(x).
По умолчанию аргумент изменяется от 0 до 2π.
Для изменения параметров графика щелкните на нем дважды ЛКМ. Появится окно (рисунок 15).
Переключая закладки в окне Formatting Currently Selected Polar Plot
(Форматировать текущий график в полярных координатах), можно изменять цвет и стиль линий графика, стиль осей, писать надписи на осях и над графиком (рисунки 12, 14, 15).
Рисунок 15 – Окно настройки параметров двухмерного графика (закладка Оси X-Y)
В шаблоне справа вверху указывается Rmax – верхний предел изменения длины радиус-вектора, справа внизу указывается Rmin – нижний предел.
Начиная с MathCAD 7.0 появилась новая возможность построения
полярных |
графиков |
– без |
задания диапазона |
изменения |
|
переменных. |
Пример |
такого |
графика приведен |
на рисунке 16. |
Рисунок 16 – Пример графика в полярных координатах
(функция f(x) = sin x + cos x)
3.1.7 Работа с матрицами и векторами
3.1.7.1 Основные понятия и определения
Нулевая матрица (вектор) – это очищенный массив, все элементы которого Mi,j (Vi) равны нулю.
Единичная матрица – это матрица, все элементы которой Mi,j равны единице при i=j.
Диагональная матрица – это матрица, все элементы которой Mi,j ненулевые при i=j, а остальные равны нулю.
Транспонированная матрица – это матрица, у которой столбцы соответствуют строкам.
|
æ |
1 |
2 |
3 |
ö |
|
|
æ |
1 |
4 |
7 |
ö |
A := |
ç |
4 |
5 |
6 |
÷ |
T |
= |
ç |
2 |
5 |
8 |
÷ |
ç |
÷ |
A |
ç |
÷ |
||||||||
|
è |
7 |
8 |
9 |
ø |
|
|
è |
3 |
6 |
9 |
ø |
Обратная матрица – это матрица, произведение которой на исходную дает единичную матрицу.
|
æ |
4 |
8 |
0 |
ö |
|
æ |
0.083 |
−0.083 |
0.667 |
ö |
A := |
ç |
|
|
|
÷ |
|
|||||
8 |
8 |
8 |
|
− 1 = ç |
|
|
−0.333 |
÷ |
|||
ç |
÷ |
A |
0.083 |
0.042 |
|||||||
|
è |
2 |
0 |
1 |
ø |
|
ç |
−0.167 |
|
−0.333 |
÷ |
|
|
è |
0.167 |
ø |
|||||||
|
|
|
|
|
|
|
27

3.1.7.2 Основные операции с векторами или матрицами
Используется палитра "Матрицы":
– создать матрицу (вектор); Xn – нижний индекс;
X-1 – обращение матрицы;
X – вычисление модуля вектора (определителя матрицы);
→
f (M) – задание вектора (векторизация); M<> – вычисление столбца матрицы;
MT – транспонирование матрицы;
m..n – задание диапазона (ранжированной переменной);
→ →
X×Y – скалярное произведение векторов;
→ →
X× Y – векторное произведение векторов; åV – сумма элементов вектора;
– вставка изображения.
Кроме того, над векторами и матрицами возможны действия: V1+V2 – сумма векторов;
V1-V2 – разность векторов;
-V – смена знака у элементов вектора;
-M – смена знака у элементов матрицы;
V*Z – умножение вектора на константу;
M*Z – умножение матрицы на константу; M*V – умножение матрицы на вектор; M1*M2 – произведение матриц;
VZ – деление вектора на константу;
MZ – деление матрицы на константу;
Mn – возведение матрицы в степень;
Mm,n – выделение элемента с индексом m, n из матрицы М;
_
V – получение комплексно-сопряженного вектора;
_
M – получение комплексно-сопряженной матрицы.
При выполнении матричных операций нужно соблюдать размерности векторов и матриц. Они должны быть совместимыми.
28
3.1.7.3 Операция векторизации
Векторизация – это одновременная скалярная операция над всеми элементами вектора или матрицы.
Например, пусть V – вектор, M – матрица.
Просто выражения cos(V) и sin(M) строго математически недопустимы. Однако с применением векторизации их можно рассчитать. Результат расчета – вектор (матрица), над каждым элементом которого произведена указанная операция.
→
Если А и В – векторы, произведение А*В дает число, но А × В- это вектор, каждый элемент которого – произведение одноименных элементов векторов А и В.
3.1.7.4 Специальные векторные и матричные функции
К специальным функциям относятся такие, которые позволяют определять параметры матрицы (вектора), а также манипулировать с ее (его) содержимым:
length(V) – длина вектора; max(V) – максимальный элемент; min(V) –минимальный элемент;
Re(V), Re(М) – вещественная часть элементов вектора (матрицы); Im(V), Im(M) – мнимая часть элементов вектора (матрицы); augment(M1,M2) – стыковка матриц (слева направо);
identity(n) – создает единичную квадратную матрицу размером n x n; stack(M1,M2) – стыковка матриц (сверху вниз);
submatrix(A,ir,jr,ic,ic) – выделение субматрицы из элементов, содержащихся в строках от ir до jr и столбцах от ic до jc;
diag(V) – создает диагональную квадратную матрицу, элементы главной диагонали которого совпадают с элементами вектора V;
matrix(m,n,f) –матрица, в которой (i,j) элемент равен f(i,j), где i=0,1,…m, j=0,1,…n ,f(i,j) – некоторая функция;
cols(M) – число столбцов матрицы М; rows(M) – число строк матрицы М; rank(M) – ранг матрицы М;
sort(V) – сортирует вектор;
reverse(V) – обращает сортировку (располагает в обратном порядке); csort(M,n) – перестановка строк матрицы М таким образом, чтобы
29
отсортированным оказался n-й столбец;
rsort(M,n) – перестановка строк матрицы М таким образом, чтобы отсортированной оказалась n-я строка.
Примеры матричных операций
æ |
4 |
2 |
-1 |
ö |
rank(A) = 3 |
A := ç |
1 |
3 |
1 |
÷ |
|
ç |
|
|
|
÷ |
|
è |
0.5 |
0.36 |
-3 |
ø |
min(A) = -3 |
3.1.8 Решение систем линейных уравнений
В MathCAD возможно решение систем линейных алгебраических уравнений (СЛАУ) двумя способами: с использование обратной матрицы и с использованием функции lsolve. В приведенном ниже примере показаны оба способа. В матрицу A занесены коэффициенты правой части, а в вектор B – левой части СЛАУ.
ì4x + 2y - z = 0.256 ïíx + 3y + z = 0.34
ïî0.5x + 0.36y - 3z = -4.6
æ |
4 |
2 |
-1 |
ö |
æ |
0.256 ö |
|
A := ç |
1 |
3 |
1 |
÷ |
B := ç |
0.34 |
÷ |
ç |
|
|
|
÷ |
ç |
|
÷ |
è |
0.5 |
0.36 |
-3 |
ø |
è |
-4.6 |
ø |
|
æ |
0.801 |
ö |
|
æ |
0.801 |
ö |
X := A− 1 × B |
X = ç |
-0.682 |
÷ |
Y := lsolve(A ,B) |
Y = ç |
-0.682 |
÷ |
|
ç |
|
÷ |
|
ç |
|
÷ |
|
è |
1.585 |
ø |
|
è |
1.585 |
ø |
Кроме того, решение СЛАУ можно найти с использованием вычислительного блока MathCAD (функций Given и Find). Пример приведен ниже. Для получения решения необходимо задать начальные значения переменных.
30