Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Решение основных задач линейной алгебры



При реализации многих задач, связанных с матричной алгеброй, полезными могут оказаться функции для оценок основных характеристик:

det(A)– определитель квадратной матрицы;

rank(A)– ранг матрицы;

trace(A)– след матрицы (сумма элементов главной диагонали);

Пример:

» A=[1 2 3; 5 4 3; 3 4 3]

A = 1 2 3

5 4 3

3 4 3

» det(A)

ans =12

» rank(A)

ans = 3

» trace(A)

ans = 8

Выше среди операций системы мы уже упоминали операцию транспонированияматрицы :

» A=[ 1 2 3 ; 23 11 0]

A =

1 2 3

23 11 0

» B=A’

B = 1 23

2 11

3 0

и возведения в степень (матричного умножения на себя или инверсии):

» A=[1 2 3; 5 4 3; 3 4 3]

A =

1 2 3

5 4 3

3 4 3

» D=A^(-1)

 

 

D =

-0.0000 0.5000 -0.5000

-0.5000 -0.5000 1.0000

0.6667 0.1667 -0.5000

» A^0

ans =

1 0 0

0 1 0

0 0 1

При решении многих задач (например, при оценке сходимости методов) используется понятие нормывектора (матрицы). В рассматриваемой системе для поиска нормы предлагается функции norm(A)и norm(A, k).

Если А – вектор, то норма определяется (по умолчанию k=2)

,

При k=inf и k=-inf соответственно и ;

» v=[3 4 -10]

v = 3 4 -10

» norm(v)

ans = 11.1803

» norm(v,2)

ans = 11.1803

» norm(v,inf)

ans = 10

» norm(v,-inf)

ans = 3

» norm(v,1)

ans = 17

» norm(v,-1)

ans = 1.4634

» norm(v,3)

ans = 10.2946

» norm(v,’fro’)

ans = 11.1803

Если А – матрица, то норма определяется только для k=1, 2, inf и fro (по умолчанию k=2):

, при k=1;

, при k=2 – максимальное из сингулярных чисел матрицы (значений квадратных корней из собственных чисел матрицы А′А);

, при k=inf ;

, при k='fro'.

Пример:

A = 1 2 3

5 4 3

3 4 3

» norm(A,1)

ans =10

» norm(A)

ans =9.6871

» norm(A, inf)

ans =12

» norm(A, ’fro’)

ans =9.8995

 

Для задачи решения системы линейных алгебраических уравнений, одной из популярнейших в вычислительной математике, предусмотрены даже “элементарные” операции. Так для решения системы A×X=B (A–матрица коэффициентов размерности m×n, B - матрица правых частей размерности n×k, Х – матрица из k векторов-столбцов решений) можно использовать команду обратного деления - \.

Например, для решения системы

x1+2 x2+3 x3 = 3 (или 3)

5 x1+4 x2+3 x3 = 9 (или 9)

3 x1+4 x2+3 x3 = 6 (или 7)

задаем (построчно) матрицу коэффициентов и векторов правой части

» A=[1 2 3; 5 4 3; 3 4 3]

A = 1 2 3

5 4 3

3 4 3

» B=[3 3; 9 9; 6 7]

B = 3 3

9 9

6 7

и выполнить

» X=A\B

X =1.5000 1.0000

0.0000 1.0000

0.5000 0

 

При решении системы XA=B можно воспользоваться операцией обычного деления. Так решение той же системы

»X=B’/A’

X = 1.5000 -0.0000 0.5000

1.0000 1.0000 0

(обратите внимание на строчное представление решений).

Под кажущейся простотой решения скрывается достаточно серьезный анализ структуры матрицы и использование лучшего по точности и быстродействию алгоритма (метод Гаусса, разложение Холецкого и др.)

Для прямоугольной матрицы А (m≠n) решение строится по минимуму квадрата ошибки (используется QR-разложение на основе преобразований Хаусхолдера) и не сопровождается сообщениями о множественности решений или переопределенности системы.

Примеры:

одно уравнение с 3 неизвестными :

» a=[1 2 3];

» b=6;

» x=a\b

x = 0

три уравнения с 2 неизвестными:

» c=[1 2; 3 7; 2 5];

» d=[3; 10 ; 9];

» x=c\d

x = -5.00000000000002

3.66666666666667

Естественно, что квадратная матрица коэффициентов должна быть невырожденной (определитель отличен от нуля) и в противном случае выдается сообщение Matrix is singular to working precision и элементы решения принимают значения inf (не определено).

Особого упоминания заслуживает обращение (инверсия) матрицы, для которого предусмотрена операция возведения в степень –1 и функция inv(A):

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

A =

1 2 3

5 4 3

3 4 3

» C=inv(A)

C =

-0.0000 0.5000 -0.5000

-0.5000 -0.5000 1.0000

0.6667 0.1667 -0.5000

 

» D=A^(-1)

D =

-0.0000 0.5000 -0.5000

-0.5000 -0.5000 1.0000

0.6667 0.1667 -0.5000

Напомним, что обращение матрицы может оказаться полезным при решении системы AX=B в виде :

» B=[3 3; 9 9; 6 7]

B = 3 3

9 9

6 7

» X=inv(A)*B

X = 1.5000 1.0000

0 1.0000

0.5000 0.0000

 

 

Двухмерная графика

Для построения графика в линейном масштабе используются

plot (y)- построение графика одномерного массива в зависимости от номера элемента (для двумерного массива строятся графики для столбцов);

plot (x,y) -построение графика функции y=y(x) ; при двумерном х строятся графики х=х(у); если оба массива двумерные, строятся зависимости для соответствующих столбцов;

plot (x,y, LineSpec)– заданием строки LineSpec (до 3 символов) определяет стиль линий , форму маркера точек и цвет линий и маркера:

Символ стиля линии Цвет Цвет
Непрерывная - Желтый y Зеленый g
Штриховая -- Фиолетовый m Синий b
Двойной пунктир : Голубой c Белый w
Штрихпунктирная -. Красный r Черный k

Маркер может определяться символами :

. + *° × s(квадрат) d(ромб) р(пятиугольник) h(шестиугольник) v ^ < >(стрелки).

По умолчанию выбирается непрерывная линия с точечным маркером и чередованием цветов с желтого по синий.

plot (x1,y1, LineSpec1, x1,y1, LineSpec2,...)– строит на одном графике несколько линий (диапазон по аргументу - объединение х1 и х2;

plot (...,’PropertyName’, PropertyValue,...)–задает значения свойств графического объекта Line (толщину линий LineWidth, размер маркера MarcerSize, цвет маркера MarcerFaceColor и др.).

 

» y=besselj(0,x); % функция J0(x)

» x1=0:0.4:8;

» y1=besselj(1,x1); % функция J1(x)

» plot(x, y, '-sk', x1, y1,'-pk','LineWidth',1 ) % рис. 2.1

 

fplot( <имя функции>, limits)строит график функции (функций) в интервале limits=[xmin, xmax]. В качестве имени функции может использоваться М-файл или строка типа ‘sin(x)’, ‘[sin(x) cos(x) ]’, ‘[sin(x), myfun1(x), myfun2(x)]’. Можно установить размеры графика по оси значений функции limits=[xmin,xmax ymin ymax].

fplot( <имя функции>,limits, eps)строит график c относительной погрешностью ерs (по умолчанию 0.002) и максимальное число шагов (1/eps)+1. Эту конструкцию можно дополнить четвертым параметром n(n+1 – минимальное число точек) и параметром LineSpec:

» fplot( '[besselj(0,x) besselj(1,x) 0]',[0 10],[],20) % рис.2.2

ezplot('f(x)')строит график f(x), заданной символьным выражением (например, ezplot('x^2-2*x+1') ), на интервале [-2π 2π] с выводом выражения в качестве заголовка графика.

ezplot('f(x)', limits)и ezplot('f(x)', limits, fig)строят график f(x) на указанном интервале и в заданном окне.

 

 

 


Рис. 2.1. Рис. 2.2.

 

График в полярных координатахопределяется функциями

polar(f,r)и polar(f,r, LineSpec),

где f– массив значений угла и r– соответствующие значения радиуса: , .

 

» f=0:0.01:2*pi; » r=sin(2.*f).*cos(2.*f); » hp=polar(f,r), hold on » set(hp,'LineWidth',4) % рис.2.3 »f=0:0.01:12*pi; » r=exp(-0.1*f); » hp=polar(f,r), hold on » set(hp,'LineWidth', 2) % рис.2.4
Рис. 2.3. Рис. 2.4.

График в логарифмическом масштабезадается функцией loglogc тем же набором параметров, что и plot, с той лишь разницей, что проводится масштабирование десятичным логарифмированием по обеим координатам.

График в полулогарифмическом масштабезадается функциями semilogxи semilogyc тем же набором параметров, что и plot(проводится масштабирование логарифмированием по одной из координат).

График с двумя осями ординат(одна отображается слева, другая справа) реализуется функцией plotyy(x1,y1,x2,y2)и той же функцией с добавлением параметров масштабирования ‘f1’ или ‘f1’,’f2’, в роли которых могут выступать plot, semilogx, semilogx, loglog:

» x=0:0.01:12*pi;

» plotyy(x,sin(x).*exp(-0.1.*x),x, 10*exp(-0.1.*x)) % Рис.2.5

Рис. 2.5. График с двумя координатными осями по Y

Трехмерная графика

В трехмерной графике выполняются представления функции z=z(x,y), отличающиеся способом соединения точек: линия, сечения, сетчатая или сплошная поверхность.

plot3(x,y,z)в тех же вариациях, что и plot, предполагает задание одномерных и двумерных массивов (строятся точки с координатами x(i,:),y(i,:),z(i,:) для каждого столбца и соединяются прямыми линиями. Если используется [x,y]=meshgrid(...), то строятся сечения.

» t=0:pi/50:10*pi; » [x, y]=meshgrid([-2:0.1:2],[-2:0.01:2]);

» plot3(sin(t),cos(t),t) %Рис. 2.6 » z=exp(-x.^2-y.^2);

» plot3(x, y, z) %Рис.2.7

 

Рис. 2.6. Рис. 2.7.

mesh(x,y,z,c), mesh(z,c), mesh(z)определяют задание сетчатой поверхности (массив сопределяет цвета узлов поверхности; если x,yне указаны, то x=1:n, y=1:m, где [m,n]=size(z).

» [x,y]=meshgrid(-8:0.5:8);

» t=sqrt(x.^2+y.^2)+0.001;

» z=sin(t)./t;

» mesh(x,y,z) %Рис.2.8

Аналогичная функция meshсв дополнение к поверхности строит проекции линий уровня, а meshzделает срез поверхности до нулевого уровня (своеобразный пьедестал).

Рис. 2.8.

Рис. 2.9. meshc(x,y,z) Рис. 2.10. meshz(x,y,z)

 

surf(x,y,z,c), surf(z,c), surf(z)определяют задание сплошной поверхности, отличаясь от mesh системой окраски; аналогичная функция surfс(...)задает проекции линий уровня. Реализация трехмерной графики может сопровождаться множеством вспомогательных команд, например:

hidden on/offвключает или выключает режим удаления невидимых линий (по умолчанию on);

shading faceted/ flat/ interpустанавливает затенение поверхностей (по умолчанию faceted дает равномерную окраску ячеек с черными гранями, flat – цветами узлов сетки, interp – интерполяцией цветов.

 

 




Поиск по сайту:

©2015-2020 studopedya.ru Все права принадлежат авторам размещенных материалов.