"MATLAB 7 (Наиболее полное руководство в подлиннике)" - читать интересную книгу автора (Ануфриев И.Е., Смирнов А.Б., Смирнова Е.Н.)

22 55 -2 -28 -6 9
Проверьте полученный результат, умножив матрицу на саму себя.
Убедитесь, что вы освоили простейшие операции с матрицами в MATLAB. Найдите значение следующего выражения
(л + с)я3<л-от.
Учтите приоритет операций, сначала выполняется транспонирование, потом возведение в степень, затем умножение, а сложение и вычитание производятся в последнюю очередь.
» (А + С)*ВЛ3*(А - С)'
ans = 1848 1914 10290 3612
86
Часть I. Основы работы в MATLAB
Перемножение матрицы и вектора
Поскольку вектор-столбец или вектор-строка в MATLAB являются матрицами, у которых один из размеров равен единице, то все вышеописанные операции применимы и для умножения матрицы на вектор, или вектор-строки на матрицу. Например, вычисление выражения
г 2 0 П -4 8-1 v° 9 2J "-8" 3 4
можно осуществить следующим образом: » а = [1 3 -2] ;
» В = [2 0 1; -4 8 -1; 0 9 2]; » с = [-8;3;4]; » а*В*с ans =
14
В математике не определена операция деления для матриц и векторов, однако в MATLAB символ \ используется для решения систем линейных уравнений.
Решение систем линейных уравнений
Решите небольшую систему, состоящую из трех уравнений с тремя неизвестными:
'1.2*!+0.3jc2-0.2*з = 1.3; ^ 0.5дг, +2.1*2+1.3*3=3.9; -0.9*,+0.7*2+5.6*з =5.4.
Введите матрицу системы в массив а, для вектора правой части используйте массив ь. Решите систему при помощи символа \
» х = А\Ь х =
1.0000 1.0000 1.0000
Проверьте, правильный ли получился ответ, умножив а на х.
Глава 2 Работа с массивами
87
^~ Примечание ^
Алгоритм решения систем линейных уравнений при помощи оператора \ определяется структурой матрицы коэффициентов системы. В частности, MATLAB исследует, является ли матрица треугольной, или может быть приведена перестановками строк и столбцов к треугольному виду, симметричная матрица или нет, квадратная или прямоугольная (MATLAB умеет решать системы с прямоугольными матрицами — переопределенные . или недоопределенпые). Поэтому решать системы при помощи \ разумно, когда выбор алгоритма решения поручается MATLAB. Если же имеется информация о свойствах матрицы системы, то следует использовать специальные методы (подробнее о решении систем линейных уравнений сказано в главе 6).
Решение систем небольшой размерности можно выполнить, введя матрицу системы и вектор правой части непосредственно из командной строки. Однако часто требуется найти решение системы, состоящей из большого числа линейных уравнений. Для ввода данных можно воспользоваться редактором массивов, который предоставляет удобный способ ввода и дает возможность легко проверить введенные данные на наличие ошибок. Вот один из возможных способов. Создайте в рабочей среде два пустых массива размера ноль на ноль при помощи квадратных скобок:
» А = [ ];
» Ь = [ ] ;
Откройте в редакторе массив д. и определите нужный размер в строках ввода Size:. Затем введите элементы матрицы в ячейки таблицы. Обратите внимание, что при нажатии происходит переход к ячейке, расположенной под текущей. Это хорошо, если матрица вводится по столбцам. Если предпочтительнее заносить значения элементов по строкам, то следует выбрать пункт Preferences... в меню File редактора массивов и в появившемся окне Array Editor Preferences задать желаемое направление перехода в раскрывающемся списке Direction. Флаг Move selection after Enter должен быть включен. Аналогичным способом вводится вектор правой части системы.
Матрица и вектор правой части системы могут .храниться в файлах. В следующем разделе на примере решения системы показано, как считать данные из текстового файла, получить результат и записать его в файл.
Считывание и запись данных
Перед нами стоит задача — решить систему линейных уравнений, матрица и вектор правой части которой хранятся в текстовых файлах matr.txt,
88
Часть I. Основы работы в MA TLAB
rside.txt, и записать результат в файл sol.txt. Матрица записана в файле построчно. элементы в строке отделены пробелом, вектор правой части записан в столбик, как показано на рис. 2,8.
файл malr txt
3.45 0.11 •¦ ¦ -0.25
1.08 5.97 - • 0.С9
-0.41 1.06 5.84
файл rside.&t
7.25
0.91
4.23
Рис. 2.8. Файлы с матрицей и вектором правой части системы
Подготовьте файлы с данными, например, в стандартной программе Windows Блокнот (Notepad). Скопируйте файлы matr.txt, rside.txt в подкаталог work основного каталога MATLAB, Для считывания из файла используйте команду load, для записи — save, Примение load и save для сохранения и считывания переменных рабочей среды описано в главе!, однако при работе с файлами данных используется функциональный способ вызова этих команд с выходными аргументами:
>> А = load('matr.txt'..); » Ь = load('rside.txt'); » -ж я А\Ь; » save 'sol.txt' x -ascii
Параметр -ascii означает запись в текстовом формате. После выполнения данных команд в каталоге work создастся файл sol.txt, в котором в столбик будет записано решение системы. Посмотреть содержимое файла можно, используя любой текстовый редактор. Для записи результата в файл с двойной точностью следует использовать команду save 'sol.txt' x -ascii -double. На рис. 2.9 приведено содержимое файла sol.txt в случае использования команды save с параметром -double и без него.
3.5756116=+000 -14288319е+000