Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
179
Добавлен:
18.12.2017
Размер:
446.67 Кб
Скачать

Погрешность правой части

Рассмотрим систему линейных алгебраических уравнений A·x=b, гдеdetA ≠ 0,b≠ 0. Система, очевидно, имеет единственное ненулевое решениеx.

На практике при решении систем линейных алгебраических уравнений любым методом, в том числе и методом Гаусса, вычисления проводятся с округлением, то есть неточно. Решение систем линейных уравнений или обращение матрицы «точными» методами не всегда гарантирует достаточную точность полученных результатов. Заранее трудно предсказать, сколь существенно скажутся на конечном результате ошибки промежуточных округлений.

Погрешность вычислений часто можно интерпретировать как погрешность правой части.

Наряду с A·x=bрассмотрим систему, где– погрешность решения- вектор ошибки (выше обозначали «e»).

db≠ 0 – погрешность (возмущение ) правой части (выше обозначали «ε»).

.

В силу свойств нормы матриц (см. Л.1 стр.68 и стр. 91) имеем, что

и

Перемножив левые и правые части неравенств, получим

.

Разделим обе части неравенства на . Получим

. Если число A– невырожденная матрица, то числоназывается числом обусловленности матрицыA.

Отношение - относительная погрешность правого столбцаb.

db- вектор невязки

- относительная погрешность решения системы

- вектор ошибки – абсолютная погрешность решения системы

Таким образом, - относительная погрешность решения системы связана с числом обусловленности и вектором невязки

Число обусловленности зависит от используемой нормы. Мы будем использовать стандартную норму norm(A,2), которую научимся высчитывать самостоятельно по формулам:

.

Через иобозначены собственные значения матрицыAи.

В случае , то есть когдаA– симметричная, все ее собственные значения действительны, число обусловленности вычисляется по формуле

.

Если матрица Aне является симметричной, то можно рассмотреть симметричную матрицу. Норма матрицыAв этом случае находится по формуле. Для числа обусловленности справедлива формула, где- число обусловленности симметричной матрицы.

Команда eig(B) позволяет найти все собственные значения матрицы.

Собственные значения можно найти с помощью команды [D]=eig(B).

Они будут стоять на главной диагонали матрицы D.

Команды max() и min() позволяют найти максимальный и минимальный элементы массива.

Упражнение 11. Число обусловленности и относительная погрешность решения систем

Найти число обусловленности и оценить - относительную погрешность решения систем, подобрав какой-нибудь векторdb≠ 0 – погрешность (возмущение ) правой части.

; ;;;;.

Выявить хорошо и плохо обусловленные системы. Самостоятельно вычислить число обусловленности, проверить его cond(A). Также вычислитеrcond(A), если число близко к 1, то система хорошо обусловлена. Если cond(A)>>0 илиrcond(A) ≈ 0, то матрица A плохо обусловлена.

План решения

% рассмотрим систему -

- система не очень плохо обусловлена

A=[7 2 3;5 -3 2;10 -11 5];

b=[15;15;36];

cond(A)

% cond(A)= 55.2690

rcond(A)

%ans = 0.0113 близко к 0

% найдем число обусловленности матрицы и

% так как A матрица невырожденная найдем число обусловленности

% обозначим число обусловленности cA

% cA = norm(A,p)*norm(inv(A,p), см help.

% находим все нормы матрицы A (нужная нам – вторая)

n1=norm(A,1),n2=norm(A,2),n_fro=norm(A,'fro'),n_inf=norm(A,inf)

%n1 = 22 %n2 = 17.3981 %n_fro = 18.6011 %n_inf = 26

% находим все нормы обратной матрицы

Ai=inv(A);

n1i=norm(Ai,1),n2i=norm(Ai,2),ni_fro=norm(Ai,'fro'),ni_inf=norm(Ai,inf)

% n1i = 4.0278 n2i = 3.1767 ni_fro = 3.1809 ni_inf = 4.2500

% перемножаем найденные нормы - получаем число обусловленности

c1=n1*n1i, c2=n2*n2i, c_fro=n_fro*ni_fro, c_inf=n_inf*ni_inf

% c1 = 88.6111, c2 = 55.2690, c_fro = 59.1680, c_inf = 110.5000

% видим наше число c2

%cond(A)= 55.2690

% найдем число cA «самостоятельно»

% матрица А несимметричная,

% поэтому вводим симметричную B=A'*A;

% сс- число обусловленности матрицы B

cc=max(eig(B))/min(eig(B))

cA=sqrt(cc) % наше число обусловленности

% cc = 3.0547e+003

% cA = 55.2690 % получили вторую норму % cond(A)= 55.2690

%оценим относительную погрешность

% решения системы A*(x+dx)=b+db

% db~=0 – вектор погрешности(возмущение) правой части

«~=» значит ≠

% dx - погрешность решения

db=[0.1;0.1;0.1];

nb=norm(b)

ndb=norm(db)

% nb = 41.7852; ndb = 0.1732

% ndx/nx<=cA*ndb/nb

ndb/nb % относит погрешность правого столбца

% = = 0.0041

%относит погрешность правого столбца 4%

pogr=cA*ndb/nb %

%pogr =0.2291 ,

% значит относительная погрешность решения ≤0.2291

% возьмем другой вектор погрешности

db=[0.001;0.001;0.001];

nb=norm(b);ndb=norm(db);

ndb/nb % относит погрешность правого столбца

% = 4.1451e-005

%относит погрешность правого столбца мала 0,0041%

pogr=cA*ndb/nb %

%pogr = 0.0023

% значит относительная погрешность решения ≤0.0023

% относит погрешность решения ближе к нулю

% возьмем другой вектор погрешности

db=[0;0;0.0001];

nb=norm(b);ndb=norm(db);

ndb/nb % относит погрешность правого столбца

% = 2.3932e-006

%относит погрешность правого столбца мала 0,0002%

pogr=cA*ndb/nb %

%pogr =1.3227e-004

% значит относительная погрешность решения ≤1.3227e-004

% относит погрешность решения еще ближе к нулю

% возьмем другой вектор погрешности

%если за первый вектор приближения брать сам b, то метод итераций с данной матрицей A не сходится

% по крайней мере, я этого не дождалась.

db=Ab-b

%db=[228;87;129];

nb=norm(b);ndb=norm(db);

ndb/nb % относит погрешность правого столбца

% = 6.6060

% относит погрешность правого столбца велика - 660%

pogr=cA*ndb/nb %

% pogr = cA*ndb/nb = 55.2690 * 6.6060

%pogr = 365.1066 %

% значит относительная погрешность решения ≤365.1066

относительная погрешность решения велика, при сильных возмущениях , при малых возмущениях относительная погрешность мала.

Соседние файлы в папке Лабораторные работы