Специальные функции формирования массивов

Если требуется сформировать матрицу, у которой элементы, расположенные по главной диагонали, равны единице, а остальные элементы равны нулю, можно воспользоваться функцией eye:

>> C=eye (3, 4)

C =

1 0 0 0

0 1 0 0

0 0 1 0

Чтобы заполнить матрицу случайными числами, можно обратиться к функциям rand и randn. Функция rand позволяет сформировать матрицу из случайных чисел, равномерно распределённых на интервале от 0 до 1:

>> C=rand (2, 3)

C =

0.2785 0.9575 0.1575

0.5469 0.9649 0.9706

Функция radn формирует матрицу из случайных чисел, распределённых по нормальному закону:

>> C=randn (2, 3)

C =

0.7254 0.7147 -0.1241

-0.0631 -0.2050 1.4897

Функция magic формирует так называемую «магическую матрицу», у которой сумма элементов каждого столбца, строки и диагонали равна одному и тому же числу. Эта функция имеет единственный аргумент, определяющий размер создаваемой квадратной матрицы (магический квадрат):

>> C=magic (3)

C =

8 1 6

3 5 7

4 9 2

Заметим, что простые преобразования (транспортирование, переворачивание строк и столбцов, поворот) сохраняют свойство матрицы быть кубическим квадратом.

С помощью функции pascal можно задать матрицу Паскаля (матрица Паскаля — это матрица, элементами которой являются биномиальные коэффициенты), структура которой соответствует треугольнику Паскаля:

>> C=pascal (3)

C =

1 1 1

1 2 3

1 3 6

Для отображения диагональных элементов матрицы служит функция diag. Так, например, для того, чтобы извлечь главную диагональ приведённой выше матрицы Паскаля, следует ввести команду

>> c=diag (C)

c =

Аналогичным образом можно извлечь, например, любую диагональ матрицы — для этого следует лишь указать её номер в качестве второго аргумента функции diag (при этом диагонали отсчитываются вверх и вниз от главной, которая по умолчанию имеет номер 0).

>> C=magic (3)

C =

8 1 6

3 5 7

4 9 2

>> c1=diag (C, 1)

c1 =

>> c2=diag (C, -1)

c2 =

Функция diag также позволяет сформировать такие матрицы, у которых элементы, расположенные по диагонали, соответствуют элементам некоторого вектора, а остальные элементы равны нулю. В качестве примера сформируем диагональную матрицу из вектор-строки a:

>> a=[4 1 -1]

a =

4 1 -1

>> D=diag (a)

D =

4 0 0

0 1 0

0 0 -1

Если элементами вектора требуется заполнить не главную диагональ, а какую-либо другую, следует указать её номер во втором аргументе функции diag:

>> D1=diag (a, 1)

D1 =

0 4 0 0

0 0 1 0

0 0 0 -1

0 0 0 0

>> D2=diag (a, -1)

D2 =

0 0 0 0

4 0 0 0

0 1 0 0

0 0 -1 0

ВЫЧИСЛЕНИЕ СОБСТВЕННЫХ ЗНАЧЕНИЙ И СОБСТВЕННЫХ ВЕКТОРОВ МАТРИЦЫ

Пусть даны квадратная матрица А и ненулевой вектор-столбец х:

Специальные функции формирования массивов - student2.ru , Специальные функции формирования массивов - student2.ru

Умножив матрицу А на вектор-столбец х, получим вектор-столбец y

Специальные функции формирования массивов - student2.ru ,

т.е.

.

Если окажется, что координаты Специальные функции формирования массивов - student2.ru вектора yпропорциональны координатам Специальные функции формирования массивов - student2.ru данного вектора хс коэффициентом пропорциональности Специальные функции формирования массивов - student2.ru ( Специальные функции формирования массивов - student2.ru ), и, следовательно,

Специальные функции формирования массивов - student2.ru ,

то ненулевой столбец х называется собственным вектором матрицы А, а коэффициент пропорциональности Специальные функции формирования массивов - student2.ru - собственным значением матрицы А.

Так как Специальные функции формирования массивов - student2.ruи Специальные функции формирования массивов - student2.ru , то Специальные функции формирования массивов - student2.ru.

Последнее соотношение можно переписать так:

Специальные функции формирования массивов - student2.ru,

где

Специальные функции формирования массивов - student2.ru , Специальные функции формирования массивов - student2.ru

Соотношение Специальные функции формирования массивов - student2.ruпредставляет собой линейную, однородную систему уравнений, которая имеет ненулевые решения тогда и только тогда, когда ее определитель равен нулю

Специальные функции формирования массивов - student2.ru ,

или в развернутом виде

Специальные функции формирования массивов - student2.ru

Если раскрыть этот определитель, то получим многочлен n-ой степени относительно Специальные функции формирования массивов - student2.ru , решая это уравнение, найдем n собственных значений Специальные функции формирования массивов - student2.ru .

Ручной счет.

Будем определять одно собственное значение методом итераций.

В качестве начального приближения возьмем

Специальные функции формирования массивов - student2.ru

Нулевой шаг

Специальные функции формирования массивов - student2.ru , Специальные функции формирования массивов - student2.ru ,

Специальные функции формирования массивов - student2.ru

1-й шаг

Специальные функции формирования массивов - student2.ru , Специальные функции формирования массивов - student2.ru ,

Специальные функции формирования массивов - student2.ru

Специальные функции формирования массивов - student2.ru

2-й шаг

Специальные функции формирования массивов - student2.ru , Специальные функции формирования массивов - student2.ru ,

Специальные функции формирования массивов - student2.ru

Специальные функции формирования массивов - student2.ru

n-й шаг

Специальные функции формирования массивов - student2.ru , Специальные функции формирования массивов - student2.ru ,

Оценка погрешности: Специальные функции формирования массивов - student2.ru

Пример

Специальные функции формирования массивов - student2.ru

Ручной счет

Начальное приближение: Специальные функции формирования массивов - student2.ru

0-й шаг

Специальные функции формирования массивов - student2.ru , Специальные функции формирования массивов - student2.ru , Специальные функции формирования массивов - student2.ru

1-й шаг

Специальные функции формирования массивов - student2.ru , Специальные функции формирования массивов - student2.ru ,

Специальные функции формирования массивов - student2.ru

Специальные функции формирования массивов - student2.ru

2-й шаг

Специальные функции формирования массивов - student2.ru ,

Специальные функции формирования массивов - student2.ru ,

Специальные функции формирования массивов - student2.ru

Специальные функции формирования массивов - student2.ru

3-й шаг

Специальные функции формирования массивов - student2.ru ,

Специальные функции формирования массивов - student2.ru

Оценка погрешности: Специальные функции формирования массивов - student2.ru

Ответ:

Специальные функции формирования массивов - student2.ru , Специальные функции формирования массивов - student2.ru

Лабораторная работа 3.

Вычисление собственных значений и собственных векторов

симметричной матрицы

Задание.

Вычислить собственные значения и собственные векторы симметричной матрицы на ЭВМ (требуется составить программу в системе MATLAB (на M-языке)) и определить максимальное по модулю собственное число и соответствующий ему собственный вектор степенным методом

Варианты задания.

Специальные функции формирования массивов - student2.ru

Специальные функции формирования массивов - student2.ru

где K– номер факультета (института); G –

номер группы; S – номер студента по журналу.

Выполнение работы на ЭВМ.

Для выполнения создается М-файл. Ниже приведен текст М-файла.

A=input('Введите матрицу A=');

A=A/6;

n=size(A);

fprintf('\n Исходная матрица (Матрица A) \n');

for i=1:n

fprintf('%6.2f',A(i,:));

fprintf('\n');

end

[T,J]=eig(A);

x=diag(J);

fprintf('\n Вектор собственных чисел \n');

fprintf('%6.2f \n',x);

fprintf('\n Матрица собственных векторов \n');

for i=1:n

fprintf('%12.4g',T(i,:));

fprintf('\n');

end

Результаты расчета в командном окне:

Исходная матрица (Матрица A)

5.00 -3.00 4.00

-3.00 12.00 -3.00

4.00 -3.00 5.00

Вектор собственных чисел

1.00

6.00

15.00

Матрица собственных векторов

0.7071 0.5774 0.4082

0 0.5774 -0.8165

-0.7071 0.5774 0.4082

Ниже приведены пояснения к приведенному тексту программы.

1. Заметим, что в представленной программе (а также в последующих программах, относящихся к данной лабораторной работе), при задании значений элементов матрицы множитель 1/6 учитывать не надо – деление на 6 уже предусмотрено в тексте программы. Это сделано для упрощения ввода исходных данных и исключения соответствующих погрешностей.

После запуска программы в ответ на запрос о вводе матрицы A следует задать: [30 -18 24; -18 72 -18; 24 -18 30].

2. Функция [V,D]=eig(A) в системе MATLAB возвращает матрицу

собственных векторов V (собственные векторы расположены по столбцам) и диагональную матрицу D собственных значений (матрица Жордана (элементы, расположенные на ее главной диагонали есть собственные значения матрицы A); каноническая форма матрицы A), т.е., по сути, определяется разложение Жордана (но при условия отсутствия в матрице Жордана жордановых клеток порядка, большего единицы) и справедливо равенство A*V=V*D. В частном случае, при обращении типа d=eig(A) возвращается

вектор d, координаты (элементы) которого есть собственные значения (собственные числа) матрицы A.

Наши рекомендации