36852

Численные методы решения задач линейной алгебры

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

Математика и математический анализ

Численные методы решения задач линейной алгебры specM вычисляет собственные значения и собственные векторы квадратной матрицы M. specM Собственные числа матрицы ns = 1. Х собственные векторы соответствующие собственным значениям из матрицы Y. Использование функции inv Пример вычисления обратной матрицы.

Русский

2013-09-23

44.5 KB

6 чел.

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

Численные методы решения задач линейной алгебры

spec(M) - вычисляет собственные значения и собственные векторы  квадратной матрицы M.

Листинг 3.34. Использование функции spec

-->M=[3 -2;-4 1]

M =

3. - 2.

- 4. 1.

-->spec(M) //Собственные числа матрицы

ans =

- 1.

5.

//Х - собственные векторы,

-->соответствующие собственным значениям из матрицы Y.

-->[X,Y]=spec(M)

Y =

! - 1. 0 !

! 0 5. !

X =

! 0.4472136 - 0.7071068 !

! 0.8944272 0.7071068 !

inv(A) - вычисляет матрицу, обратную к A;

Листинг 3.35. Использование функции inv

-->//Пример вычисления обратной матрицы.

-->A=[1 2 3 5;0 1 3 2;4 2 1 1;2 3 0 1];

-->inv(A)

ans =

! 0.0285714 - 0.1428571 0.3428571 - 0.2 !

! - 0.1428571 0.2142857 - 0.2142857 0.5 !

! - 0.2 0.5 0.1 - 0.1 !

! 0.3714286 - 0.3571429 - 0.0428571 - 0.1 !

-->//При умножении обратной матрицы на исходную,

-->//получилась матрица, близкая к единичной.

-->inv(A)*A

ans =

1. - 1.110D-16 0. 0.

0. 1. - 5.551D-17 5.551D-17

0. 0. 1. 1.388D-17

0. 0. 6.939D-17 1.

-->//При попытке обратить вырожденную матрицу

-->//(определитель равен или близок к нулю)

-->//пользователь получит сообщение об ошибке.

-->B=[1 2 3;1 4 5;1 6 7];

-->inv(B)

!--error 19

Problem is singular

pinv(A[,tol]) - вычисляет псевдообратную матрицу для матрицы A с точностью tol (необязательный параметр);

Листинг 3.36. Использование функции pinv

-->pinv(A)

ans =

0.0285714 - 0.1428571 0.3428571 - 0.2

- 0.1428571 0.2142857 - 0.2142857 0.5

- 0.2 0.5 0.1 - 0.1

0.3714286 - 0.3571429 - 0.0428571 - 0.1

linsolve(A,b) - решает систему линейных алгебраических уравнений вида

.

Листинг 3.37. Пример использования функции linsolve

-->//Решение системы линейных уравнений

-->//{x1+2x2-7=0; x1+x2-6=0}.

-->//Свободные коэффициенты вводятся как вектор-столбец

-->//и с учетом знаков.

-->A=[1 2;1 1];b=[-7;-6];

-->x=linsolve(A,b)

x =

5.

1.

-->//Результатом операции A*x+b является вектор, достаточно

-->//близкий к нулю, это значит, что система решена верно.

-->A*x+b

ans =

1.0D-14 *

- 0.6217249

0.0888178

-->//Решение системы {x1+x2-1=0; x1+x2-3=0}

-->A=[1 1;1 1]; b=[-1;-3];

-->//Система не имеет решений:

-->linsolve(A,b)

WARNING:Conflicting linear constraints!

ans =

[]

-->//Решение системы {3x1-x2-1=0; 6x1-2x2-2=0}.

-->//В случае, когда система имеет бесконечное

-->//множество решений, SCILAB выдаст одно из них.

-->A=[3 -1;6 -2];

-->b=[-1;-2];

-->x=linsolve(A,b)

x =

0.3

- 0.1

-->//Проверка неверна

-->A*x+b

ans =

1.0D-15 *

- 0.1110223

- 0.2220446

rref(A) - осуществляет приведение матрицы A к треугольной форме, используя метод исключения Гаусса;

Листинг 3.38. Пример использования функции rref

--> A=[3 -2 1 5;6 -4 2 7;9 -6 3 12]

A =

3 -2 1 5

6 -4 2 7

9 -6 3 12

--> rref(A)

ans =

1.0000 -0.6667 0.3333 0

0 0 0 1.0000

0 0 0 0

lu(М) - выполняет треугольное разложение матрицы M;

M = C · L · U, где L и U - соответственно нижняя и верхняя треугольные матрицы, все четыре матрицы квадратные и одного порядка. Такие вычисления называют LU-разложением.

Листинг 3.39. Использование функции lu

-->A=[2 -1 5;3 2 -5;1 1 -2]

A =

2. - 1. 5.

3. 2. - 5.

1. 1. - 2.

-->[L,U]=lu(A)

U =

3. 2. - 5.

0. - 2.3333333 8.3333333 !

0. 0. 0.8571429 !

L =

0.6666667 1. 0.

1. 0. 0.

0.3333333 - 0.1428571 1.

-->LU=L*U

LU =

2. - 1. 5.

3. 2. - 5.

1. 1. - 2.

qr(М) - выполняет разложение матрицы М на ортогональную и верхнюю треугольную матрицы;

M = Q · R, где Q - ортогональная матрица, а R - верхняя треугольная матрица. Этот

процесс называют QR-разложением.

Листинг 3.40. Использование функции qr

-->[Q,R]=qr(A)

R =

- 3.7416574 - 1.3363062 1.8708287

0. - 2.0528726 7.0632734

0. 0. 0.7811335

Q =

- 0.5345225 0.8350668 0.1301889

- 0.8017837 - 0.4523279 - 0.3905667

0.2672612 - 0.3131501 0.9113224

-->Q*R

ans =

2. - 1. 5.

3. 2. - 5.

1. 1. - 2.

svd(М) - выполняет сингулярное разложение размером n×m; результатом работы функции может быть либо сингулярное разложение, либо вектор, содержащий сингулярные значения матрицы.

M = U · S · VT, где U и V-ортогональные матрицы размером m × m и n × n соответственно, а S-диагональная матрица, на диагонали которой расположены сингулярные числа матрицы M

Листинг 3.41. Использование функции svd

-->[U,S,V]=svd(A)

V =

- 0.1725618 0.9641403 - 0.2016333

- 0.3059444 0.1421160 0.9413825

0.9362801 0.2241352 0.2704496

S =

7.8003308 0. 0.

0. 3.6207331 0.

0. 0. 0.2124427

U =

0.5951314 0.8028320 0.0357682

- 0.7449652 0.5678344 - 0.3501300

- 0.3014060 0.1817273 0.9360180

-->U*S*V’

ans =

2. - 1. 5.

3. 2. - 5.

1. 1. - 2.

-->s=svd(A)

s =

7.8003308

3.6207331

0.2124427

kernel(М[,tol[,fl]]) - определение ядра матрицы М, параметры tol и fl являются необязательными. Первый задает точность вычислений, второйиспользуемый при вычислении алгоритм и принимает значения ’qr’ или ’svd’.

Ядро матрицы - это множество векторов X. Поиск ядра матрицы сводится к решению однородной системы линейных уравнений AX = 0. Если при вызове функции X=kernel(A) матрица X окажется непустой, то действительно AX = 0.

Листинг 3.42. Использование функции kernel

-->A=[4 1 -3 -1;2 3 1 -5;1 -2 -2 3]

A =

4. 1. - 3. - 1.

2. 3. 1. - 5.

1. - 2. - 2. 3.

-->X=kernel(A)

X =

0.3464102

0.5773503

0.4618802

0.5773503


 

А также другие работы, которые могут Вас заинтересовать

65175. Математик, которого я знаю – Ньютон Исаак 235 KB
  Исаак Ньютон появился на свет в небольшой деревушке в семье мелкого фермера, умершего за три месяца до рождения сына. Младенец был недоношенным, бытует легенда, что он был так мал, что его поместили в овчинную рукавицу, лежавшую на лавке, из которой он однажды выпал и сильно ударился головкой об пол.
65176. Математик, которого я знаю – Франсуа Виет 77.7 KB
  Франсуа Виет 1540-1603 Родился в 1540 году на юге Франции в небольшом городке Фантенеле Конт французской провинции Пуату Шарант в 60 км от Ла Рошели. Его отец Этьен Виет прокурор. Благодаря связям матери Маргариты Дюпон и браку своей ученицы с принцем...
65178. Математик, которого я знаю – Фалес Милетский 214.65 KB
  Фалес Милетский жил в самом конце 7 первой половине 6 в до н. Фалес Милетский был уроженцем греческого торгового города Милета расположенного в Малой Азии на берегу Эгейского моря.
65179. Математик, которого я знаю – Карл Гаусс 54 KB
  Сам того не подозревая Гаусс переоткрыл формулу для определения суммы членов арифметической прогрессии. Талант юного математика не остался без внимания герцога Брауншвейгского и в 1788 при его поддержке Гаусс поступил в закрытую школу Коллегиум...
65181. Математик, которого я знаю – Леонард Эйлер 38.96 KB
  Леонард Эйлер родился 15 апреля 1707 года в швейцарском городе Базеле. Его отец Павел Эйлер был пастором в Рихене близ Базеля и имел некоторые познания в математике. В 1725 году Эйлер узнает что для него есть место в качестве физиолога при медицинском...