Определитель и ранг матрицы
Для нахождения определителя (детерминанта) и ранга матриц в MATLAB имеются следующие функции:
· det(X) — возвращает определитель квадратной матрицы X. Если X содержит только целые элементы, то результат — тоже целое число. Использование det(X)=0 как теста на вырожденность матрицы действительно только для матрицы малого порядка с целыми элементами.
Пример:
» А=[2,3,6:1.8.4;3.6,7]
А =
» det(A)
ans =
-29 Детерминант матрицы вычисляется на основе треугольного разложения методом исключения Гаусса:
[L.U>lu(A): s=det(L): d=s*prod(diag(U)).
Ранг матрицы определяется количеством сингулярных чисел, превышающих порог
tol=max(size(A))*nprm(A)*eps.
При этом используется следующий алгоритм:
s=svd(A);tol=max(size(A))*npnri(A)*eps;r=sum(s>tol);
Для вычисления ранга используется функция rank:
· rank (А) — возвращает количество сингулярных чисел, которые являются большими, чем заданный по умолчанию допуск;
· rank(A.tol) — возвращает количество сингулярных чисел, которые превышают tol. Пример:
» rank(hilbdl))
ans =
Вычисление следа матрицы
След матрицы А — это сумма ее диагональных элементов. Он вычисляется функцией trace:
· trace(A) — возвращает след матрицы. Пример:
» а=[2.3.4:5.6,7;8.9,1]
а =
2 3 4
5 6 7
8 9 1
» trace(a)
ans =
- Урок 13. Многомерные массивы
- Понятие о многомерных массивах
- Применение оператора ":" в многомерных массивах
- Доступ к отдельному элементу многомерного массива
- Удаление размерности в многомерном массиве
- Создание страниц, заполненных константами и случайными числами
- Использование функций ones, zeros, rand и randn
- Объединение массивов
- Работа с размерностями
- Вычисление числа размерностей массива
- Вычисление размера размерности массива
- Перестановки размерностей массивов
- Сдвиг размерностей массивов
- Удаление единичных размерностей
- Что нового мы узнали?
Урок №13.
Многомерные массивы
· Понятие о многомерных массивах
· Применение оператора «:» в многомерных массивах
· Доступ к отдельному элементу многомерного массива
· Удаление размерности в многомерном массиве
· Создание страниц, заполненных константами и случайными числами
· Объединение массивов
· Вычисление числа размерностей массива и определение размера размерностей
· Перестановки размерностей массивов
· Сдвиг размерностей массивов
· Удаление единичных размерностей
В этом уроке мы коснемся вопросов, связанных с более сложными типами данных, к которым относятся многомерные массивы.
Понятие о многомерных массивах
В MATLAB двумерный массив является частным случаем многомерного массива. Многомерные массивы характеризуются размерностью более двух. Таким массивам можно дать наглядную интерпретацию. Так, матрицу (двумерный массив) можно записать на одном листе бумаги в виде строк и столбцов, состоящих из элементов матрицы. Тогда блокнот с такими листками можно считать трехмерным массивом, полку в шкафу с блокнотами — четырехмерным массивом, шкаф со множеством полок — пятимерным массивом и т. д. В этой книге практически нигде, кроме этого раздела, мы не будем иметь дело с массивами, размерность которых выше двух, но знать о возможностях MATLAB в части задания и применения многомерных массивов все же полезно.
В нашей литературе понятия «размер» и «размерность» массивов являются почти синонимами. Однако они имеют явно разный смысл в данной книге, как и в документации и литературе по системе MATLAB. Под размерностью массивов понимается число измерений в пространственном представлении массивов, а под размером — число строк и столбцов (mxn) в каждой размерности массива.
Применение оператора «:» в многомерных массивах
При обычном задании массивов (с помощью символа точки с запятой «;») число рядов (строк) массива получается на 1 больше, чем число символов «:», но массив остается двумерным. Оператор «:» (двоеточие) позволяет легко выполнять операции по увеличению размерности массивов. Приведем пример формирования трехмерного массива путем добавления новой страницы. Пусть у нас задан исходный двумерный массив М размером 3x3:
» М=[1 2 3; 4 5 6; 7 8 9]
М =
1 2 3
4 5 6
7 8 9
Для добавления новой страницы с тем же размером можно расширить М следующим образом:
» М(:.:.2)=[10 11 12; 13 14 15; 16 17 18]
M(:.:.l) =
1 2 3
4 5 6
7 8 9
М(:.:.2) =
10 11 12
13 14 15
16 17 18
Посмотрим, что теперь содержит массив М при явном его указании:
» М
М(:,:.1)=
1 2 3
4 5 6
7 8 9
М(:.:.2) =
10 11 12
13 14 15
16 17 18
Как можно заметить, числа в выражениях М(:.:, 1) и М(:,: ,2) означают номер страницы.
Доступ к отдельному элементу многомерного массива
Чтобы вызвать центральный элемент сначала первой, а затем второй страницы, надо записать следующие выражения:
» М(2.2,1)
ans =
» МС2.2.2)
ans =
Таким образом, в многомерных массивах используется то же правило индексации, что и в одномерных и двумерных. Произвольный элемент, например, трехмерного массива задается как М(1 .j.k), где 1 — номер строки, j — номер столбца и k — номер страницы. Этот элемент можно вывести, а можно присвоить ему заданное значение х: М(1 ,j,k)=x.
Удаление размерности в многомерном массиве
Мы уже отмечали возможность удаления отдельных столбцов присвоением им значений пустого вектора-столбца [ ]. Этот прием нетрудно распространить на страницы и вообще размерности многомерного массива. Например, первую страницу полученного массива М можно удалить следующим образом:
» М(:.:.1)=[ ]
М =
10 11 12
13 14 15
16 17 18
Нетрудно заметить, что в этом массиве осталась только вторая страница и что размерность массива уменьшилась на 1 — он стал двумерным.
Создание страниц, заполненных константами и случайными числами
Если после знака присваивания стоит численная константа, то соответствующая часть массива будет содержать элементы, содержащие данную константу. Например, создадим из массива М (см. пример выше) массив, у которого вторая страница содержит единицы:
»M(:.:..2)=1
М(:.:,1) =
10 11 12
13 14 15
16 17 18
М(:.:.2) =
1 1 1
1 1 1
1 1 1
А теперь заменим первую страницу массива на страницу с нулевыми элементами:
»M(:.:.1)=0
M(:.:.1)=
0 0 0
0 0 0
0 0 0
М(:.:,2) =
1 1 1
1 1 1
1 1 1
Использование функций ones, zeros, rand и randn
Функции ones (создание массивов с единичными элементами), zeros (создание массивов с нулевыми элементами) и rand или randn (создание массивов с элементами — случайными числами с соответственно равномерным и нормальным распределением) могут также использоваться для создания многомерных массивов. Примеры приводятся ниже:
» E=ones(3.3.2)
E(:.:.1)=
1 1 1
1 1 1
1 1 1
E(:.:,2) =
1 1 1
1 1 1
1 1 1
» Z=zeros(2,2,3) Z(:,:.l) =
0 0
0 0
Z(:.:.2) =
0 0
0 0
Z(:.:,3) =
0 0
0 0
» R=randn(3,2.2) R(:.:.l) =
-1.6656-1.1465
0.1253 1.1909
0.2877 1.1892
R(:.:,2) =
-0.0376-0.1867
0.3273 0.7258
0.1746 -0.5883
Эти примеры достаточно очевидны и не требуют особых комментариев. Обратите, однако, внимание на легкость задания размеров массивов для каждой размерности. Кроме того, следует отметить, что если хотя бы одна размерность массива равна нулю, то массив будет пустым:
» A=randn(3,3,3,0)
А =
Empty array: 3-bу-3-bу-3-by-0
Как видно из данного примера, пустой массив возвращается с соответствующим комментарием.
Объединение массивов
Для создания многомерных массивов служит описанная ранее для матриц специальная функция конкатенации cat:
· cat(DIM,A,B) — возвращает результат объединения двух массивов А и В вдоль размерности DIM;
· cat(2.A.B) — возвращает массив [А.В], в котором объединены ряды (горизонтальная конкатенация);
· cat(1, А.В) — возвращает массив [А:В], в котором объединены столбцы (вертикальная конкатенация);
· B=cat(DIM.Al,A2,...) — объединяет множество входных массивов Al, A2,... вдоль размерности DIM.
Функции cat(DIM,C{:}) и cat(DIM.C.FIELD) обеспечивают соответственно конкатенацию (объединение) ячеек массива ячеек (см урок 15) или структур массива структур (см. урок 14), содержащих числовые матрицы, в единую матрицу. Ниже приводятся примеры применения функции cat:
» М1=[1 2:3 4]
M1=
1 2
3 4
» М2=[5 6:78]
М2 =
5 6
7 8
» catd.Ml.M2)
ans =
1 2
3 4
5 б
7 8
» cat(2.Ml.M2)
ans=
1 2 5 6
3 4 7 8
» M-cat(3.Ml.M2) M(:,:.l) =
1 2
3 4
М(:,:,2) =
5 6
7 8
- Урок 16. Численные методы
- Элементарные средства решения СЛУ
- Функции для решения систем линейных уравнений с ограничениями
- Решение СЛУ с разреженными матрицами
- Точное решение, метод наименьших квадратов и сопряженных градиентов
- Двунаправленный метод сопряженных градиентов
- Устойчивый двунаправленный метод
- Метод сопряженных градиентов
- Квадратичный метод сопряженных градиентов
- Метод минимизации обобщенной невязки
- Квазиминимизация невязки - функция qmr
- Вычисление нулей функции одной переменной
- Минимизация функции одной переменной
- Минимизация функции нескольких переменных
- Аппроксимация производных
- Аппроксимация Лапласиана
- Аппроксимация производных конечными разностями
- Вычисление градиента функции
- Численное интегрирование
- Метод трапеций
- Численное интегрирование методом квадратур
- Работа с полиномами
- Умножение и деление полиномов
- Вычисление полиномов
- Вычисление производной полинома
- Решение полиномиальных матричных уравнений
- Разложение на простые дроби
- Решение обыкновенных дифференциальных уравнений
- Решатели ОДУ
- Использование решателей систем ОДУ
- Описание системы ОДУ
- Дескрипторная поддержка параметров решателя
- Пакет Partial Differential Equations Toolbox
- Что нового мы узнали?
Урок №16.
Численные методы
· Средства решения систем линейных уравнений (СЛУ)
· Вычисление нулей функции одной переменной
· Минимизация функции одной и нескольких переменных
· Аппроксимация Лапласиана
· Аппроксимация производных конечными разностями
· Вычисление градиента функции
· Численное интегрирование
· Операции с полиномами
· Решение полиномиальных матричных уравнений
· Разложение на простые дроби
· Решение обыкновенных дифференциальных уравнений
· Информация о пакете для решения уравнений с частными производными
В этом большом уроке описываются функции системы MATLAB, предназначенные для реализации алгоритмов типовых численных методов решения прикладных задач и обработки данных. Наряду с базовыми операциями решения систем линейных и нелинейных уравнений рассмотрены функции вычисления конечных разностей, численного дифференцирования, численного интегрирования, триангуляции, аппроксимации Лапласиана и, наконец, прямого и обратного преобразования Фурье. Отдельные разделы посвящены работе с полиномами и численным методам решения обыкновенных дифференциальных уравнений. Этот большой урок стоит разбить на две-три части или изучать выборочно.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|