- •§ 2.2. Командное окно системы matlab
- •§ 2.3. Рабочее пространство системы matlab
- •§ 2.4. Скаляры и массивы. Индексированные переменные
- •§ 2.5. Форматы представления вещественных чисел
- •§ 2.6. Арифметические выражения
- •2.6.1. Некоторая специфика использования вещественных данных
- •2.6.2. Некоторая специфика использования комплексных данных
- •2.6.3. Некоторые приемы работы с матрицами и векторами
- •2.6.4. Некоторые специфика выполнения арифметических и логических операций.
- •§ 2.7. Элементарные математические функции
- •Часть 2. Визуализация результатов вычислений
- •§ 2.8. Особенности графической подсистемы matlab
- •§ 2.9. Построение графиков функций одной переменной
- •2.9.1. Простые графики в декартовой системе координат.
- •2.9.2. Визуализация нескольких графиков.
- •2.9.3. Функция fplot.
- •2.9.4. Построение графиков в логарифмическом и полулогарифмическом масштабах.
- •2.9.5. Построение графиков в полярных координатах.
- •§ 2.10. Оформление графиков и графических окон
- •2.10.1. Выбор свойств линий.
- •2.10.2. Оформление осей координат.
- •2.10.3. Добавление надписей, заголовков и координатной сетки.
- •§ 2.11. Средства управления в графическом окне
- •§ 2.12. Общее знакомство с трехмерной графикой в matlab
- •2.12.1. Общий алгоритм визуализации функций двух переменных.
- •2.12.2. Построение трехмерных линий.
- •2.12.3. Построение поверхностей.
- •2.12.4. Задание дополнительных параметров трехмерных графиков.
- •2.12.5. Построение линий уровня.
- •2.12.6. Построение траектории точки, движущейся в пространстве.
- •2.12.7. Интерактивное редактирование графиков.
- •Часть 3. Вычисления с действительными и комплексными массивами чисел
- •§ 2.13. Операции отношения и логические операции над числами
- •2.13.1. Операции отношения.
- •2.13.2. Логические операции.
- •2.13.3. Приоритет операций.
- •§ 2.14. Формирование одномерных числовых массивов
- •2.14.1. Задание одномерных массивов и доступ к их элементам.
- •2.14.2. Об ускорении операций задания массива.
- •2.14.3. Об использовании операции формирования диапазона.
- •§ 2.15. Матрицы и векторы. Двумерные массивы чисел
- •2.15.1. Создание матриц и векторов.
- •2.15.2. Доступ к отдельным фрагментам матриц.
- •2.15.3. Удаление строк и столбцов матрицы.
- •2.15.4. Использование функций перестановки частей матриц.
- •2.15.5. Определение размеров и размерностей массивов.
- •2.15.6. Использование операций индексации.
- •2.15.7. Изменение размеров массива.
- •2.15.8. Специальные функции формирования массивов.
- •§ 2.16. Вычисления с массивами
- •2.16.1. Поэлементные и групповые операции над массивами.
- •2.16.2. Решение некоторых типовых задач линейной алгебры и аналитической геометрии.
- •2.16.3. Применение операций отношения и логических операций к массивам.
- •2.16.4. Некоторые функции для работы с массивами.
- •Часть 4. Стандартные средства решения некоторых типовых задач линейной алгебры и математического анализа
- •§ 2.17. Решение систем линейных алгебраических уравнений
- •§ 2.18. Решение некоторых задач линейной алгебры. Матричные функции
- •§ 2.19. Разреженные матрицы
- •§ 2.20. Решение нелинейных уравнений
- •§ 2.21. Поиск минимального значения функции
- •§ 2.22. Численное интегрирование
- •2.22.1. Использование метода трапеций.
- •2.22.2. Использование методов Симпсона и Гаусса-Лобатто.
- •2.22.3. Вычисление двойных интегралов.
- •§ 2.23. Операции над полиномами
- •2.23.1. Вычисление значения полинома.
- •2.23.2. Вычисление корней полинома.
- •2.23.3. Умножение и деление полиномов.
- •2.23.4. Дифференцирование и интегрирование полиномов.
- •§ 2.24. Интерполяция и аппроксимация данных
- •2.24.1. Полиномиальная аппроксимация.
- •2.24.2. Интерполяция сплайнами.
- •Часть 5. Символьные вычисления
- •§ 2.25. Создание символьных переменных, выражений и матриц
- •2.25.1. Создание символьных переменных.
- •2.25.2. Создание символьных выражений.
- •2.25.3. Создание символьных матриц.
- •§ 2.26. Символьные вычисления
- •2.26.1. Символьное дифференцирование.
- •2.26.2. Вычисление пределов.
- •2.26.3. Символьное интегрирование.
- •2.26.3. Вычисление суммы ряда. Разложение функций в ряды.
- •2.26.4. Упрощение выражений. Подстановки.
- •2.26.5. Управление точностью вычислений.
- •2.26.6. Операции над векторами. Операции над матрицами. Некоторые операции линейной алгебры.
- •2.26.7. Решение уравнений и систем уравнений.
- •§ 2.27. Визуализация результатов символьных вычислений
- •2.27.1. Построение двумерных графиков.
- •2.27.2. Построение трехмерных графиков.
- •Часть 6. Основы программирования на m-языке
- •§ 2.28. Основные понятия программирования в системе matlab
- •2.28.1. Назначение языка программирования matlab.
- •2.28.2. Основные средства программирования.
- •2.28.3. Основные типы данных.
- •2.28.4. Виды программирования.
- •2.28.5. Двойственность операторов, команд и функций.
- •2.28.6. Некоторые ограничения.
- •§ 2.29. Создание и использование m-файлов
- •2.29.1. Понятие об m-файлах.
- •2.29.2. Типы m-файлов.
- •2.29.3. Создание файл-программ.
- •2.29.4. Создание файл-функций.
- •2.29.5. Глобализация переменных и функций.
- •2.29.6. Синтаксический контроль программ.
- •§ 2.30. Управляющие структуры
- •2.30.1. Понятие об управляющих структурах.
- •2.30.2. Операторы цикла.
- •2.30.3. Операторы ветвления.
- •2.30.4. Прочие операторы.
- •§ 2.31. Работа с файлами
- •2.31.1. Общие замечания.
- •2.31.2. Подготовка файла к работе.
- •2.31.3. Завершение работы с файлами.
- •2.31.4. Контроль за исчерпанием данных.
- •2.31.5. Чтение из текстового файла.
- •2.31.6. Анализ ошибок в файловых операциях.
- •§ 2.32. Форматный ввод-вывод данных
- •2.32.1. Форматные преобразования (sprintf, sscanf).
- •2.32.2. Форматные преобразования при работе с файлами (fprintf, fscanf).
- •§ 2.33. Рекурсивные файл-функции. Производительность файл-функций
- •2.33.1. Понятие о рекурсивных файл-функциях.
- •2.33.2. Оценка производительности файл-функции.
- •§ 2.34. Файл-функции с переменным числом входных параметров и выходных значений
- •§ 2.35. Диалоговые программы
- •2.35.1. Ввод числовых и символьных данных.
- •2.35.2. Вывод результатов вычислений.
- •§ 2.36. Анимационные эффекты
- •§ 2.37. Контроль входных и выходных параметров файл-функции
- •§ 2.38. Отладка программы
- •2.38.1. Понятие о способах отладки программы.
- •2.38.2. Рекомендации по созданию и отладке программ.
- •Часть 7. Создание программ с визуальным интерфейсом
- •§ 2.39. Понятие о графическом интерфейсе пользователя (gui)
- •2.39.1. Предварительные замечания.
- •2.39.2. Основные команды для создания gui.
- •§ 2.40. Общие сведения о визуальной среде guide
- •§ 2.41. Программирование событий в matlab
- •§ 2.42. Свойства основных компонентов в matlab
- •§ 2.43. Диалоговые окна в matlab
- •§ 2.44. Динамическое создание компонентов
- •§ 2.45. Создание меню
- •§ 2.46. Некоторые рекомендации по созданию приложений с графическим интерфейсом пользователя
Часть 4. Стандартные средства решения некоторых типовых задач линейной алгебры и математического анализа
§ 2.17. Решение систем линейных алгебраических уравнений
Как уже отмечалось, в MATLAB для решения систем линейных алгебраических уравнений (СЛАУ) предусмотрены знаки операций «/» и «\». Второй из этих знаков уже использовался в предыдущем параграфе именно для решения СЛАУ.
В общем случае операция «\» называется «левым делением матриц» и, будучи примененная к матрицам A и B в виде A\B, подобна вычислению выражения inv(A)*B, где под inv(A) понимается вычисление матрицы, обратной к матрице A.
Операция «/» называется «правым делением матриц». Выражение A/B подобно вычислению выражения B*inv(A), т.е. данная операция позволяет, в частности, решать СЛАУ вида Y*A=B.
§ 2.18. Решение некоторых задач линейной алгебры. Матричные функции
При решении СЛАУ целесообразно оценить обусловленность матрицы коэффициентов системы, определяющую чувствительность численного решения к небольшим изменениям исходных данных.
В MATLAB имеются следующие функции для оценки числа обусловленности матрицы:
cond(A) – возвращает число обусловленности матрицы как отношение наибольшего сингулярного числа матрицы A к наименьшему (если соответствующий результат близок к единице, то матрица хорошо обусловлена);
condeig(A) – возвращает вектор, содержащий числа обусловленности собственных значений матрицы A;
rcond(A) – возвращает обратную величину числа обусловленности матрицы A (значения, близкие к единице, свидетельствуют о хорошей обусловленности, а близкие к нулю – о плохой);
det(A) – возвращает значение определителя (детерминанта) матрицы A;
rank(A) – возвращает значение ранга матрицы A;
norm(A) – возвращает норму матрицы A (наибольшее по абсолютной
величине сингулярное число);
trace(A) – возвращает след матрицы, который равен сумме значений элементов матрицы, расположенных на главной диагонали;
orth(A) – возвращает ортонормированный базис для разложения матрицы A [20,21,27,40,45,46,51,95,96,117-120,134,135,238];
rref(A) – приводит расширенную матрицу СЛАУ n-го порядка к виду [E v], где E – единичная матрица n-го порядка, v – вектор-столбец, содержащий решение СЛАУ;
rrefmovie(A) – результат аналогичен результату, возвращаемому функцией rref, но при этом выводится информация о каждой выполняемой операции и получаемом при этом результате;
inv(A)
– возвращает обратную матрицу (для
квадратной невырожденной матрицы
(определитель такой матрицы не равен
нулю); матрица
называется обратной для матрицы A,
если при умножении матрицы
на матрицу A
справа и слева получаем единичную
матрицу);
pinv(A)
– возвращает псевдообратную матрицу
(для заданной матрицы A
псевдообратная матрица P
имеет размеры
(транспонированной матрицы A)
и удовлетворяет условиям A*P*A=A
и P*A*P=P
(заметим, что псевдообратная матрица
строится на основе сингулярного
разложения));
chol(A) – возвращает разложение (разложение матрицы – это в общем случае представление матрицы в виде суммы или произведения нескольких матриц определенного вида) Холецкого для симметричной положительно определенной матрицы A, т.е. верхнюю треугольную матрицу T такую, что T’*T=A;
lu(A) – возвращает результат LU-разложения матрицы A (разложение на нижнюю треугольную и верхнюю треугольную матрицы; если к этой же функции обратиться в виде [L,U]=lu(A), то она вернет верхнюю треугольную матрицу (U), нижнюю треугольную матрицу (L), причем будет справедливо равенство A=L*U; обращение вида [L,U,P]=lu(A) позволит также получить матрицу перестановки строк, такую что P*A=L*U);
qr(A) – возвращает QR-разложение матрицы A (разложение на унитарную и верхнетреугольную матрицы);
d=eig(A) – возвращает вектор d, координаты (элементы) которого есть собственные значения (собственные числа) матрицы A;
[V,D]=eig(A) – возвращает матрицу собственных векторов V (собственные векторы расположены по столбцам) и диагональную матрицу D собственных значений (матрица Жордана (элементы, расположенные на ее главной диагонали есть собственные значения матрицы A); каноническая форма матрицы A), т.е., по сути, определяется разложение Жордана (но при условия отсутствия в матрице Жордана жордановых клеток порядка, большего единицы) и справедливо равенство A*V=V*D;
s=svd(A) – возвращает вектор, элементы которого являются искомыми сингулярными числами (сингулярными значениями);
[U,S,V]=svd(A) – возвращает диагональную матрицу S (элементами матрицы S являются и унитарные матрицы U (элементами матрицы U являются ортонормированные собственные векторы, соответствующие наибольшим собственным значениям матрицы A*A') и V (элементами матрицы V являются ортонормированные собственные векторы, соответствующие наибольшим собственным значениям матрицы A*A'), такие, что имеет место равенство A=U*S*V;
[U,T]=shur(A) – возвращает ортогональную (унитарную) матрицу U и верхнюю треугольную матрицу T (по диагонали матрицы T расположены собственные значения матрицы A), такие, что имеет место равенство A=U*T*U';
[V,J]=jordan(A) – возвращает жорданово разложение матрицы A, где J – жорданова форма матрицы A; V – матрица, столбцы которой образуют жорданов базис.
В системе MATLAB также имеются функции cdf2rdf, hess, qz и rsf2csf осуществляющие приведение матриц к некоторым специальным формам. Для вычисления функций от матриц используются функции с суффиксом m, например, expm, logm и sqrtm, которые в отличие от функций exp, log, sqrt, вычисляющих значения функций поэлементно, выполняют вычисления с квадратными матрицами по правилам линейной алгебры, используя разложения математических функций в степенные ряды.
Рассмотрим пример решения некоторых задач линейной алгебры:
>> A=[2 -3 1; 1 2 -6; 5 1 1];
>> cond(A)
ans =
2.4374
>> det(A)
ans =
100
>> rank(A)
ans =
3
>> [V,D]=eig(A)
V =
-0.6085 + 0.0000i 0.1224 + 0.3873i 0.1224 - 0.3873i
0.6172 + 0.0000i 0.7355 + 0.0000i 0.7355 + 0.0000i
-0.4988 + 0.0000i 0.3184 - 0.4390i 0.3184 + 0.4390i
D =
5.8626 + 0.0000i 0.0000 + 0.0000i 0.0000 + 0.0000i
0.0000 + 0.0000i -0.4313 + 4.1075i 0.0000 + 0.0000i
0.0000 + 0.0000i 0.0000 + 0.0000i -0.4313 - 4.1075i
Пусть решается однородная СЛАУ (Ax=0). Тогда, как известно, такая СЛАУ может иметь нетривиальные (ненулевые) решения тогда и только тогда, когда определитель матрицы равен нулю. Заметим, что, если решение такой системы существует, то это некоторое пространство решений. В линейном пространстве множество решений однородной СЛАУ образует подпространство размерности n-r. Базис этого подпространства можно найти посредством применения функции null, которая допускает несколько вариантов обращения:
Z=null(A) – выполняется вычисление матрицы Z, столбцы которой представляют собой ортонормированный базис пространства решений;
Z=null(A,’r’) – выполняется вычисление матрицы Z, столбцы которой представляют собой некоторый рациональный базис пространства решений;
В обоих рассмотренных случаях справедливо равенство Az=0.
