- •Основы работы и программирования, компьютерная математика Учебный курс
- •Isbn ооо «Харвест», 2008
- •Предисловие
- •Введение
- •Глава 1 знакомство с matlab и простейшие вычисления
- •1.1. Рабочая средаMatlab
- •1.2. Арифметические вычисления
- •1.3. Вещественные числа
- •1.4. Форматы вывода результата вычислений
- •1.5 Комплексные числа
- •1.6 Векторы и матрицы
- •1.7 Встроенные функции. Функции, задаваемые пользователем
- •1.8 Сообщения об ошибках и их исправление
- •1.9 Просмотр и сохранение переменных
- •1.10 Матричные и поэлементные операции над векторами и матрицами
- •1.11 Решение систем линейных уравнений
- •Вопросы для самопроверки
- •Глава 2 работа с массивами
- •2.1 Создание векторов и матриц
- •2.2 Применение команд обработки данных к векторам и матрицам
- •2.3 Создание специальных матриц
- •2.4 Создание новых массивов на основе существующих
- •2.5 Вычисление собственных значений и собственных векторов. Решение типовых задач линейной алгебры
- •Вопросы для самопроверки
- •Глава 3 м-файлы
- •3.1 Файл-программы
- •3.2 Файл-функции
- •Вопросы для самопроверки
- •Глава 4 программирование
- •4.1 Операторы отношения и логические операторы
- •4.2 Операторы цикла
- •4.3 Операторы ветвления
- •4.4 Оператор переключения switch
- •4.5 Оператор прерывания цикла break
- •4.6 Пример сравнения быстродействия матричных и скалярных операций
- •Вопросы для самопроверки
- •Глава 5 высокоуровневая графика
- •5.1 2D графика
- •5.1.1 Графики в линейном масштабе
- •5.2 Специальные виды 2d - графиков
- •5.2.1 Представление функции в виде дискретных отсчетов
- •5.2.2 Лестничные графики
- •5.2.3 Графики с указанием погрешности
- •5.2.4 Графики в логарифмическом и полулогарифмическом масштабах
- •5.2.5 Графики параметрических функций
- •5.3 3D графика
- •5.3.1 Линейчатые поверхности
- •5.3.2 Каркасные поверхности
- •5.3.3 Контурные графики
- •5.3.4 Сплошная освещенная поверхность
- •5.4 Оформление, экспорт и анимация
- •5.4.1 Оформление графиков
- •5.4.2 Сохранение и экспорт графиков
- •5.4.3 Анимация
- •Вопросы для самопроверки
- •Глава 6 прикладная численная математика
- •6.1 Операции с полиномами
- •6.2 Решение уравнений и их систем
- •6.3 Минимизация функции одной переменной
- •6.4 Минимизация функции нескольких переменных
- •6.5 Вычисление определенных интегралов
- •6.6 Решение дифференциальных уравнений
- •6.7 Аппроксимация и интерполяция данных
- •6.8 Интерполяция двумерных и многомерных данных
- •Вопросы для самопроверки
- •Глава 7 символьные вычисления
- •7.1 Символьные переменные, константы и выражения
- •7.2 Вычисления с использованием арифметики произвольной точности
- •7.3 Команды упрощения выражений – simplify, simple
- •7.4 Команда расширения выражений – expand
- •7.5 Разложение выражений на простые множители – команда factor
- •7.6 Приведение подобных членов – команда collect
- •7.7 Обеспечение подстановок – команда subs
- •7.8 Вычисление пределов – команда limit
- •7.9 Вычисление производных – команда diff
- •7.10 Вычисление интегралов – команда int
- •7.11 Разложение в ряд Тейлора – команда taylor
- •7.12 Вычисление суммы ряда – команда symsum
- •7.13 Решение уравнений и их систем – команда solve
- •7.14 Решение дифференциальных уравнений – команда dsolve
- •7.15 Прямое и обратное преобразования Лапласа – команды laplace,ilaplace
- •7.16 Графики символьных функций – команды ezplot, ezpolar
- •7.17 Прямой доступ к ядру системы Maple – командаmaple
- •7.18 Разложение рациональной дроби на сумму простейших дробей
- •7.19 Интерполяционный полином Лагранжа
- •7.20 Решение неравенств и систем неравенств
- •7.21 Разложение в ряд Тейлора функции нескольких переменных
- •7.22 Решение дифференциальных уравнений с помощью степенных рядов
- •7.23 Решение тригонометрических уравнений
- •Вопросы для самопроверки
- •Приложения Приложение 1. Справочная система matlab
- •Приложение 2. Знакомство с пакетами расширения системыMatlab
- •Приложение 3. Задания для самостоятельной работы
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Литература
2.5 Вычисление собственных значений и собственных векторов. Решение типовых задач линейной алгебры
Важной задачей линейной алгебры является задача на собственные значения.
Собственные числа (значения) λi и собственные векторы (ui ≠ 0) квадратной матрицы А удовлетворяют равенствам
Aui = λiui.
Собственные значения λ квадратной матрицы А являются корнями ее характеристического уравнения│A - λE│ = 0, где E – единичная матрица того же порядка n, что и А. Многочлен │A - λE│называется характеристическим полиномом матрицы А. В общем случае имеется n различных комплексных или вещественных корней характеристического уравнения. Их количество будет меньше в случае кратных корней.
Пример:
Дана квадратная матрица второго порядка
A =
Решить задачу на собственные значения вручную и средствами MATLAB.
Решение:
Находим характеристический полином матрицы A.
E = , │A - λE│ = = (3 - λ)(2 - λ) - 20 = λ2 - 5λ - 14.
В MATLAB массив коэффициентов характеристического полинома матрицы А возвращает команда poly:
>> poly(A)
ans =
1 -5 -14
Характеристическим уравненим является квадратное уравнение
λ2 - 5λ - 14 = 0.
Вычисляем корни этого уравнения.
λ1,2 = = = = = .
Корни уравнения λ1 = -2 и λ2 = 7 являются собственными значениями матрицы А.
Найдем теперь собственные векторы, соответствующие этим собственным значениям. Собственный вектор
U = ,
соответствующий собственному значению λ1 = -2, определяется уравнениями
т. е. 5u1 + 4u2 = 0. Из этого равенства следует, что собственный вектор U определяется с точностью до числового множителя, поэтому одну из координат собственного вектора можно зафиксировать. Полагая u1 = -4, найдем u2 = 5 и получим
U = .
Аналогично, собственный вектор
V = ,
соответствующий собственному значению λ2 = 7, определяется уравнениями
т. е. v1 – v2 = 0. Полагая v1 = 1, найдем v2 = 1 и получим
V = .
Следовательно, собственным значениям λ1 = -2 и λ2 = 7 соответствуют собственные векторы
U = и V = .
На рассмотренном примере мы убедились, что задача на собственные значения оказалась достаточно сложной и трудоемкой даже для матрицы минимального (второго) порядка.
В MATLAB собственные значения матрицы A вычисляет команда eig(A):
>> A=[3 4;5 2];
>> Lambda=eig(A)
Lambda =
7
-2
Команда [R,Lam]=eig(A) вычисляет как собственные значения, так и собственные векторы:
>> [R,Lam]=eig(A)
R =
0.7071 -0.6247
0.7071 0.7809
Lam =
7 0
0 -2
Собственные значения являются диагональными элементами диагональной матрицы Lam, а столбцы матрицы R являются собственными векторами. Итак, собственным значениям λ1 = -2 и λ2 = 7 соответствуют собственные векторы
R1 = и R2 = .
Как указывалось выше, собственные векторы определяются с точностью до числового множителя. Команда eig вычисляет единичные или нормированными по евклидовой норме собственные векторы.
Существуют различные типы векторных норм. Норма ||R||p вектора R длины n определяется следующим образом:
||R||p = (p = 1, 2, …).
Если p=2 – норма называется евклидовой.
В MATLAB норму ||R||p вектора R вычисляет команда norm(R,p). Команда norm(R) вычисляет евклидову норму вектора R по умолчанию. Если norm(R) = 1, вектор R называется единичным или нормированным.
Вектор R нормируется следующим образом:
Rnorm = .
Пронормируем найденные вручную собственные векторы
U = и V = :
>> U=[-4;5];V=[1;1];
>> disp(U/norm(U))
-0.6247
0.7809
>> disp(V/norm(V))
0.7071
0.7071
Результы совпали с собственными векторами R1 и R2, вычисленными командой eig.
Для получения вычисленных в символьной форме пар собственных значений и собственных векторов, введем следующую команду:
>> [R,Lam]=eig(sym(A))
R =
[ 1, 1]
[ 1, -5/4]
Lam =
[ 7, 0]
[ 0, -2]
Некоторые команды линейной алгебры MATLAB мы рассматривали ранее. К ним относятся, в частности, команды вычисления определителя и обратной матрицы det и inv.(см. разд. 1.10).
В MATLAB cуществует и другие команды решения типовых задач линейной алгебры.
Так, команда norm вычисляет различные виды норм векторов и матриц. Справку по этой команде можно получить, набрав в командной строке doc norm.
Команда rank(B)возвращает ранг прямоугольной матрицыB.
Ранг матрицы B есть такое число r = rB, что по крайней мере один из определителей r - го порядка, получаемый из этой матрицы при удалении строк и/или столбцов, отличен от нуля, а все определители (r+1) - го порядка равны нулю. Ранг матрицы равен наибольшему числу линейно независимых строк (или столбцов). Квадратная матрица B порядка n является невырожденной в том и только в тот случае, когда ее ранг rB = n, т. е. det(B) ≠ 0.
Найдем ранг рассмотренной выше матрицы
A = :
>> disp(rank(A))
2
Поскольку ранг и порядок квадратной матрицы А совпадают, ее определитель должен быть ненулевым. Проверка:
>> det(A)
ans =
-14
Перечислим некоторые из команд линейной алгебры:
cond – число обусловленности матрицы;
lu – разложение на треугольные матрицы;
svd – сингулярное разложение матрицы и т. д.
Справочная информация по командам линейной алгебры находится в разделе matfunсправочной системы MATLAB.