Говорухин В., Цибулин Б. Компьютер в математическом исследовании (1185927), страница 57
Текст из файла (страница 57)
нагл!по. 5оЬвсг!рС тпбтсев мовС Ье тпСерег та)оев. дпв = 4.бОООе-007 Данный пример показывает, что числа хранятся по столбцам и при обращении к данному двумерному массиву элемент А(2) есть то же самое, что и А(2, 1). Чтобы изменить элемент матрицы, ему нужно присвоить новое значение: » А(2,3)=юп(1) $ Третий влеиект второй строки А- 1.0000 2.0000 + 5.ОООО! 0 0.0000 3.0000 0.8415 Заметим, что изначально матрица А состояла из двух строк и столбцов. Расширение матрицы (добавление третьего элемента во вторую строку) не потребовало никаких дополнительных действий, при этом третий элемент в первой строке был обнулен автоматически.
Если обратиться к отсутствующему элементу матрицы, то будет выведено сообщение об ошибке: » А(3. 1)"2 т У иатриыы только лве строки! 1пбех ехсеебв еатгтх Шмеле!она. Размер матрицы можно уточнить по команде юге, а результат команды 5(ве можно использовать для организации новой матрицы. Например, нулевая матрица того же порядка, что и матрица А, будет сформирована по команде » А2-СЕГОВ(а!СЕ(А)) А2 0 0 0 0 0 0 Для преобразования матрицы в матрицу с другим числом строк и столбцов служит команда геапаре Синтаксис и данные 307 » АЗ"ге»Наре(А2.3.2) АЗ 0 0 0 0 0 0 С помощью двоеточия легко выделить часть матрицы.
Например, вектор из первых двух элементов третьего столбца матрицы А задается выражением » А(1:2,3) вов 0 0.0415 Двоеточие само по себе означает строку или столбец целиком. Работа с индексами в МАТ[.АВ очень удобна Например, чтобы выделить несколько столбцов массива, достаточно организовать вектор из номеров столбцов. Это можно сделать явным перечислением, а можно указать нужный диапазон. Для выделения матрицы, составленной из нечетных столбцов матрицы А, используем команду » А(:,1;2:3) аов- 1.0000 0 0.0000 0.0415 Здесь конструкция 1: 2: 3 означает изменение второго индекса от единицы до трех с шагом два.
Двоеточие применяется также для замещения злементов матрицы. Следующая команда позволяет переставить первую и вторую строки матрицы А: » А([1,2],: )=А([2,1],;) А" 0.0000 3.0000 0. 8415 1.0000 2.0000 » 5.00001 0 Здесь в качестве индекса выступают векторы [1,2] и [2.1], а для их оформления использованы равносильные разделители: запятая и пробел. Для удаления элемента вектора достаточно присвоить ему пустой массив — пару квадратных скобок []. Чтобы вычеркнуть одну или несколько строк [столбцов) матрицы нужно указать диапазон удаляемых строк (столбцов) для одной размерности и поставить двоеточие для другой размерности.
Например, для удаления двух последних столбцов матрицы А достаточно ввести команду » А(:.2:еоо) П Г взрезанна строк А" 0.0000 1.0000 Обратим внимание, что вместо числового значения индекса указано зарезервированное нмя ерс — максимальное значение индекса. В списке аргументов 3(ге второй параметр позволяет определить соответствующую размерность матрицы, например найти число столбцов матрицы. Для нахождения длины вектора можно воспользоваться также командой )ендг)). Число столбцов матрицы А1 равно 3, не зависимо от того, каким способом пользоваться: » [в(ге(А1.2). )еодгь(А1(1.:))] 308 Глава 12.
Элементы языка МАТСАВ апз- 3 3 Вместо двоеточия можно также использовать функцию-синоним со)оп. Арифметические операции Набор арифметических операций в МАТьАВ состоит из стандартных операций сложения-вычитания, умножения-деления, операции возведения в степень и дополнен специальными матричными операциями. Запись операций сложения (вычитания) и умножения матриц естественна. Если операция применяется к матрицам, размеры которых не согласованы, то будет выведено сообщение об ошибке. Для поэлементного выполнения операций умножения, деления и возведения в степень применяются комбинированные знаки (точка и знак операции), Например, если за матрицей стоит знак ("), то она возводится в степень, а комбинация (. ) означает возведение в степень каждого элемента матрицы.
При умножении (сложении, вычитании, делении) матрицы на число соответствующая операция всегда производится поэлементно, Таблица 12.гг.Знаки операций Символ Назначение Символы плюс и минус обозначают знак числа или операцию сложения и вычитания матриц, причем иатрицы должны быть одной размерности Знак умножения обозначает матричное умножение; для позлементного умножения матрицы применяется комбинированный знак (.*) Апостроф обозначает операцию транспонирования (вместе с комплексным сопряжением); транспонирование без вычисления сопряжения обозначается при помощи комбинированного знака (.') Левое деление Правое деление Оператор возведения в степень; для позлементного возведения в степень применяется комбинированный знак (.") Проиллюстрируем различие обычного и поэлементного умножений при помощи следующего примера. Введем матрицу Н размера 2х2 и матрицу О из единиц той же размерности: » Н-(О 1; 2 31.
О-опеызтзе1Н)) Н = О 1 2 3 О- 1 1 1 1 Перемножим матрицы, используя обычное умножение: » Н"О апз- Синтаксис и данные 309 1 1 5 5 Теперь применим поэлементную операцию: »Н. О ап5 о 2 3 Понятно, что при поэлементном умножении вектора Ь-П,2,3] на себя (Ь.*Ь) или при поэлементном возведении в квадрат (Ь. "2) результат получается одинаковым; (1491 Образуем матрицу умножением вектора-столбца, полученного транспонированием нз строки, на исходный вектор-строку: » С=Ь'*Ь С 1 2 3 Прибавим к матрице С единичную матрицу той же размерности, умноженную на комплексное число и+1, и вычтем из полученного результата число 2: » 0-С -(р(+!)»еуе(а!ге(С))-2 О 2.1416 + 1.0000! 0 1.0000 0 5.1416 + 1.0000! 4.0000 1.0000 4.0000 И .1416 » 1.0000! Для вычитания числа из матрицы оно заменяется матрицей нужного размера, все элементы которой равны данному числу, а уже затем вычисляется разность матриц.
Операция транспонирования для матрицы О дает следующий результат: » 0' апа- 2.1416 - 1.0000! 0 1.0000 0 5.1416 - 1.0000! 4.0000 1.0000 4.0000 10.1416 - 1.0000! Если при сложении и умножении размеры матриц не соответствуют, то будет выведено сообщение об ошибке. Например: » опеа(2)*еуе(3) ??? Еггог оа!пд — * 1ппег имг)х 0(еепиопа еоат адгее. Матричное левое деление может быть пояснено на примере системы линейных алгебраических уравнений Ах=Ь.
Для ее решения достаточно набрать х А)ь Соответственно для системы хА-Ь будет получено решение (если оно есть) при помощи операции правого деления х-Ь?А 310 Глава 12. Элементы языка МАТСАВ При левом делении в случае квадратной матрицы используется метод Гаусса. Если матрица А не квадратная, то применяется факторизация Хаусхолдера с обнулением столбцов, а решение для недоопределенных или переопределенных систем находится методом наименьших квадратов.
Правое деление может быть оформлено в терминах левого деления: ыА (А'ть')' Представим пример для введенных ранее матрицы С и вектора Ь: » ЬГС апз- 1.0000 2.0000 3.0000 Логические операции Операторы отношения и логические операторы, а также соответствующие им ко- манды позволяют проводить сравнения массивов одинакового размера, Результа- том таких операций являются матрицы из нулей и единиц, причем единица озна- чает истинность, а нуль — ложь. Таблица 12.Б. Операции отношения Символ Назначение Имл функции Меньше Больше или равно Больше Меньше или равно Равно 9е 9т 1е Не равно пе Операции (-, -) проводят сравнение вещественных и мнимых частей комплекс- ных чисел, а операции (>, <, »-. <=) — только вещественных частей.
Таблица 12.6. Логические операции Символ Назначение Имл команды Логическое «и» апс Логическое «или» ог Отрицание пос Исключительное «или» ког Прн попытке сравнения векторов или матриц различной размерности будет выве- дено сообщение об ошибке. При сравнении скаляра с матрицей сначала из скаляр- ной переменной создается матрица нужного размера, и уже затем происходит срав- нение. Синтаксис и данные 311 д ввод схаляра т результат сравнения - патрика таблица 12.7. Команды проверки и сравнения Имя Назначение Поиск значений согласно заданноиу условию; определение индексов Проверка того, что все элементы не равны нулю Проверка того, что хотя бы один элемент не равен нулю Выявление пустого массива Проверка равенства матриц Проверка матрицы на разреженность Вывод ненулевых элементов массива Выявление ограниченных элементов массива Проверка, является ли массив числовым Выявление бесконечных элементов массива Выявление элементов нечислового типа Проверка на символ Проверка на строковую переменную Проверка на глобальную переменную Сравнение двух строк т1пц апу ь зююсу ьзецца1 1эзрагзе попзегоз т1п11е 15пыьюг1с 151пт 1зпап 1з!ЕЬЬЕг 1эзтг 15д1ЬЬа1 эс гсир Для логических операций ненулевое число отождествляется с единицей.
Приведем примеры: » а-11 2; 3 4] т ввод натрицн а- 1 2 з »Ь2: » с-а>Ь со о 1 1 » а-с т сравнение матриц - натрица апэ- 1 1 1 1 Логические операции можно записывать в виде функций. Так, последнее сравнение представимо в виде: » пе(а.с) т функция сравнения яатрнц Необходимость логических операций возникает, например, в условных операторах языка МАТЮКАВ. При этом арифметические операции всегда имеют приоритет по отношению к логическим.