p align="center">X = A; X(4,5) = 17 X = 16 3 2 13 0 5 0 11 8 0 9 6 7 12 0 4 15 14 1 17 Двоеточие (Colon)Двоеточие, : , является одним из наиболее важных операторов MATLAB-а. Оно встречается в нескольких разных формах. Выражение 1:10 есть вектор-строка, содержащий целвые числа от 1 до 10:1 2 3 4 5 6 7 8 9 10Чтобы получить неединичное приращение, нужно задать приращение. Например,100 : -7 : 50есть100 93 86 79 72 65 58 51а0 : pi/4 : piесть0 0.7854 1.5708 2.3562 3.1416Индексы, содержащие двоеточия, допускают обращение к частям матриц. Так, выражение F (1:k, j)дает первые k элементов j-го столбца матрицы F. То есть, sum(F (1:4, 4))вычисляет, как и в примере выше, сумму элементов 4-го столбца. Но есть еще лучший путь. Двоеточие само по себе означает обращение ко всем элементам строки или столбца матрицы, а зарезервированное слово end есть обращение к последним строке или столбцу матрицы (в случае векторов-строк или столбцов слово end есть обращение к последнему элементу векто-ра). Значит,sum(F (:, end))вычисляет сумму элементов последнего столбца матрицы F . Ответ: ans = 34. Почему маги-ческая сумма для волшебного квадрата 4 х 4 равна 34 ? Дело в том, что если целые числа от 1 до 16 (число элементов матрицы размера 4 х 4) упорядочены в четыре группы с равными сум-мами элементов, эта сумма должна быть равнаsum(1:16)/4что, конечно, дает ans = 34.Единичная матрица, нулевая матрицы и матрица из единиц.Двумерные массивы случайных чиселЕдиничная матрица, то есть матрица имеющая единицы на главной диагонали и нулевые ос-тальные элементы, в MATLAB-е обозначается eye, причем eye(n) есть единичная квадратная матрица размера nxn, eye(m,n) - прямоугольная единичная матрица размера mxn, а eye(size(A)) есть единичная матрица, имеющая размерность матрицы A. Например,I = eye(3) I =1 0 00 1 00 0 1 I = eye (3,5) I =1 0 0 0 00 1 0 0 00 0 1 0 0I = eye (4,2) I =1 00 10 00 0Нулевая матрица, то есть матрица состоящая из нулей (массив нулей), в MATLAB-е обоз-начается zeros, причем zeros (n) есть нулевая квадратная матрица размера nxn, zeros (m,n) - прямоугольная нулевая матрица размера mxn, а zeros (size(A)) есть нулевая матрица имею-щая размерность матрицы A.Z = zeros(2,4) Z =0 0 0 00 0 0 0 Наконец, матрица состоящая из единиц (массив единиц), в MATLAB-е обозначается ones, причем ones (n) есть квадратный массив единиц размера nxn, ones (m,n) - прямоугольный массив единиц размера mxn, а ones (size(A)) есть массив единиц, имеющий размерность матрицы A. S = 5*ones(3, 3) S = 5 5 5 5 5 5 5 5 5 Аналогично, функция rand дает возможность сформировать соответствующие массивы слу-чайных чисел в диапазоне от 0 до 1, распределенных по равномерному закону, а функция randn - по нормальному закону. N = fix(10*rand(1,10)) N =4 9 4 4 8 5 2 6 8 0R = randn(4,4) R =1.0668 0.2944 -0.6918 -1.44100.0593 -1.3362 0.8580 0.5711-0.0956 0.7143 1.2540 -0.3999-0.8323 1.6236 -1.5937 0.6900Решение систем линейных уравненийОдной из важнейших задач в технических приложениях и расчетах является задача решения систем линейных уравнений. В матричных обозначениях, данная задача может быть сформу-лирована следующим образом. При заданных двух матрицах A and B, существует ли такая единственная матрица X, что AX = B или XA = B?Для наглядности рассмотрим одномерный пример. Имеет ли уравнение7x = 21единственное решение? Ответ, разумеется, да. Это уравнение имеет единственное решение x = 3. Решение может быть легко получено обычным делением. x = 21/7 = 3Решение при этом обычно не состоит в определении обратной величины от числа 7 (т.е. ве-личины 7-1 = 0.142857…), и последующим умножением числа 7-1 на число 21. Это было бы более трудоемко и, если число 7-1 представлено конечным числом цифр (разрядов), менее точно. Аналогичные рассуждения применимы и к системам линейных алгебраических уравнений с более чем одной неизвестной; MATLAB решает такие уравнения без вычисле-ния обратной матрицы. Хотя это и не является стандартным математическим обозначением, система MATLAB использует терминологию, связанную с обычным делением в одномерном случае, для описания общего случая решения совместной системы нескольких линейных уравнений. Два символа деления / (косая черта (по английски - slash)) и \ (обратная косая че-рта (backslash)) используются в двух случаях, когда неизвестная матрица появляется слева или справа от матрицы коэффициентов: X = A\B обозначает решение матричного уравнения AX = BX = B/A обозначает решение матричного уравнения XA = B.Вы можете представлять себе это как процесс «деления» обеих частей уравнения AX = B или XA = B на A. Матрица коэффициентов A всегда находится в «знаменателе».Условие сов-местимости размерностей для X = A\B требует чтобы две матрицы A и B имели одинаковое число строк. Решение X тогда имеет такое же число столбцов как и B, а число ее строк будет равно числу столбцов A. Для X = B/A, строки и столбцы меняются ролями. На практике, ли-нейные уравнения в виде AX = B встречаются более часто, чем в виде XA = B. Следователь-но, обратная наклонная черта \ используется более часто, чем прямая / . Поэтому, в остав-шейся части данного раздела мы ограничимся рассмотрением оператора \ ; соответствующие свойства оператора / можно вывести из тождества(B/A)' = (A'\B')В общем случае не требуется, чтобы матрица коэффициентов A была бы квадратной. Если A имеет размер mхn, то возможны три случая:1. m = n Квадратная система. Ищется точное решение.2. m > n Переопределенная система. Ищется решение методом наименьших квадратов.3. m < n Недоопределенная система. Находится базовое решение с самым большим числом m ненулевых компонент.Оператор \ использует различные алгоритмы для решения систем линейных уравнений с раз-ными типами матриц коэффициентов. Различные случаи, которые диагностируются автома-тически по типу матрицы коэффициентов, включают: * Перестановки треугольных матриц * Симметричные, положительно определенные матрицы * Квадратные невырожденные матрицы * Прямоугольные, переопределенные системы * Прямоугольные, недоопределенные системы Квадратные системыНаиболее часто встречающейся ситуацией является квадратная матрица коэффициентов A и одномерный вектор-столбец b справа, т.е. Ax = b. Решение x = A\b имеет при этом тот же ра-змер, что и вектор b. Например,x = A\u x =10-125где матрица А есть приведенная выше матрица Паскаля. Легко удостовериться, что A*x в точности равно вектору u (численные значения этого вектора даны выше).Если A и B являются квадратными и имеют одинаковый размер, то X = A\B имеет тот же ра-змер, напримерX = A\B X =19 -3 -1-17 4 13 6 0 -6Легко убедиться, что A*X в точности равно B.Оба этих примера имеют точное решение в виде целых чисел. Это связано с тем, что в каче-стве матрицы коэффициентов была выбрана матрица Паскаля pascal(3), чей детерминант равен единице. Далее будут рассмотрены примеры влияния ошибок округления, возникаю-щих в более реальных системах. Квадратная матрица A является сингулярной, если ее столбцы не являются линейно незави-симыми. Если A - сингулярна, то решение AX = B или не существует, или не является един-ственным. Оператор \ , A\B, выдает предупреждающее сообщение, если матрица A близка к сингулярной и сообщение об ошибке, если определено равенство нулю детерминанта матри-цы А.Переопределенные системыПереопределенные системы совместных линейных уравнений часто встречаются в задачах аппроксимации экспериментальных данных при помощи различных эмпирических кривых. Рассмотрим следующий гипотетический пример. Величина y измеряется при различных зна-чениях времени t, что дает следующие результатыt y0.0 0.820.3 0.720.8 0.631.1 0.601.6 0.552.3 0.50Эти данные могут быть введены в MATLAB при помощи выражений:t = [0 .3 .8 1.1 1.6 2.3]';y = [0.82 0.72 0.63 0.60 0.55 0.50]';Данные могут быть аппроксимированы при помощи убывающей экспоненциальной функ-ции. y(t) = c1 + c2 e-t Это уравнение показывает, что вектор y может быть представлен в виде линейной комбина-ции двух векторов, один из которых является постоянным вектором, содержащим все едини-цы, а второй вектор имеет компоненты e-t. Неизвестные коэффициенты c1 и c2 могут быть найдены подгонкой кривых по методу наименьших квадратов, которая основана на миними-зации суммы квадратов отклонений экспериментальных данных от модели. Мы имеем шесть уравнений с двумя неизвестными, представленными 6х2 матрицей E = [ones(size(t)) exp(-t)] E = 1.0000 1.0000 1.0000 0.7408 1.0000 0.4493 1.0000 0.3329 1.0000 0.2019 1.0000 0.1003 Решение методом наименьших квадратов находится при помощи оператора \ : c = E\y c = 0.4760 0.3413 Иными словами, подгонка методом наименьших квадратов дает y(t) = 0.476 + 0.3413 e-t Следующие выражения оценивают модель при равномерно распределенных моментах време-ни (с шагом 0.1), а затем строят график вместе с результатами экспериментальных данных. T = (0 : 0.1 : 2.5)'; Y = [ones(size(T)) exp(-T)]*c; plot(T, Y, '-', t, y, 'o')
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28
|