Автор работы: Пользователь скрыл имя, 24 Июля 2013 в 11:53, курсовая работа
Данная курсовая работа состоит из трех заданий. Первые два задания в курсовой включают в себя работы на вычисление абсолютной и относительной погрешностей и определение числа верных знаков.
Погрешность вычисления — оценка отклонения вычисленного значения величины от её истинного значения. Погрешность вычисления является характеристикой (мерой) точности вычисления. Относительная погрешность — погрешность вычисления, выраженная отношением абсолютной погрешности вычисления к действительному или вычисленному значению вычисления величины, а абсолютная погрешность — является оценкой абсолютной ошибки вычисления.
1. Введение………………………………………………………………………………….3
2. Задание 1...….………………………………………………………….…………………4
3. Задание 2………………………...……………………………………….……………….5
4. Задание 3………………...………………………………………………………………..6
5. Заключение……………………………………………………………………………...13
6. Список использованных источников …………………………………………………14
Министерство образования и науки Российской Федерации
Федеральное
государственное бюджетное
«Новосибирский
Государственный Технический
Кафедра экономической информатики
Курсовая работа
По дисциплине «Численные методы»
Вариант-8
Факультет Бизнеса
Группа: ФБИ- 01
Студентка: Гаврилова О.П.
Преподаватель: д.ф-м.н., профессор
Соболева О.Н.
Новосибирск 2012
5.
Заключение……………………………………………………
6. Список использованных источников …………………………………………………14
Введение:
Данная курсовая работа состоит из трех заданий. Первые два задания в курсовой включают в себя работы на вычисление абсолютной и относительной погрешностей и определение числа верных знаков.
Погрешность вычисления — оценка отклонения вычисленного значения величины от её истинного значения. Погрешность вычисления является характеристикой (мерой) точности вычисления. Относительная погрешность — погрешность вычисления, выраженная отношением абсолютной погрешности вычисления к действительному или вычисленному значению вычисления величины, а абсолютная погрешность — является оценкой абсолютной ошибки вычисления.
Абсолютные и относительные погрешности для приближенных вещественных чисел тесно связаны с очень важным понятием верных цифр. Верными могут быть только значащие цифры - все цифры числа, начиная с первой отличной от нуля слева. Говорят, что число х имеет m верных значащих цифр, если для абсолютной погрешности числа справедливо неравенство
Последнее задание курсовой заключается в изучении предложенного метода или алгоритма, в моем случае – QL алгоритм для определения собственных значений и собственных векторов трехдиагональных симметричных матриц.
Большое число научно-
Если число λ и вектор x≠0 удовлетворяют уравнению Ax= λx, то λ называется собственным значением матрицы A, а x – собственным вектором, соответствующим λ.
Собственные значения
матрицы определяются из
Задание 1.
Находим значение функции
при a=0.2456
b=0.20078
c=0.008
Далее найдем абсолютную погрешность по формуле
Подставив в нее =0.0005
=0.00003
=0.0002
Теперь найдем относительную погрешность по формуле
Рассчитаем число верных знаков
n=-5
m=2
Таким образом, число верных знаков равно двум:
f = 0,0000050587
Задание 2.
Значение функции было рассчитано в прошлом задании, и оно равно
Нам дано, что m=3
И из прошлой задачи мы нашли, что n=-5
Подставим данные в уравнение
откуда получим
Абсолютная погрешность
Рассчитаем относительную
Задание 3.
Описание метода
Основная идея алгоритма QL заключается в том, что любая действительная матрица может быть представлена в форме A = QL, где Q ортогональная, а L - верхняя треугольная матрицы.
Это разложение строится применением алгоритма преобразования Хаусхолдера с целью уничтожения элементов столбцов матрицы A выше диагонали.
Преобразование Хаусхолдера
где E - единичная матрица, vvT- квадратная матрица того же размера.
Элементы вектора v на k-ой итерации определяется следующим образом:
(v1,..vk-1,vk,..vn), где элементы v1..vk-1 равны соответственно элементам k-ого столбца матрицы А, vk=akk+sign(akk)|| ajk ||, vk+1.. vn=0
Алгоритм QL состоит из цепочки ортогональных преобразований.
Выбираем изначально
A(0)=A
И представляем в форме
A(0)=Q(0)L(0)
Переходим к новой матрице посредством перемножения:
A(1)=L(0)Q(0)
…
A(k)=Q(k)L(k)
A(k+1)=L(k)Q(k)
Таким образом, на (k+1)-ой итерации на диагонали матрицы A в порядке возрастания располагаются ее собственные значения.
Если в ходе итераций прослеживаются комплексно-сопряженная пара собственных значений, соответствующая блоку (2х2), образуемому элементами j-ого и (j+1)-го столбцов,
собственные значения, соответствующие данному блоку определяются из решения квадратного уравнения
Решение задачи с помощью программы
Матрица задается в виде функции, что обеспечивает универсальность программы:
function[A]=matr
A=[1 2 0;2 1 3;0 3 4];
Реализация алгоритма на MATLAB:
function[A,R,e]=SobZn(matr) % фунция, вычисляющая собственные значения, вектора,
% расчетную погрешность симметричной трехдиагональной матрицы
[R,D]=eig(matr); % вычисляем точные собственные значения матрицы
n=size(matr,1); % размерность матрицы
A=matr; % присваеваем рабочей переменной исходную матрицу
An=matr;
for i=1:10 % цикл, в котором вычисляются собственные значения
k=n; % присваиваем размер матрицы рабочей переменной
while k>1 % находим нижнюю треугольную матрицу
ak=A(1:k,k);
vk=ak; vk(k)=vk(k)+sign(ak(k))*norm(
vk=vk/norm(vk);
A(1:k,1:k)=A(1:k,1:k)-2*vk*(
k=k-1;
end
L=A; % присваиваем полученное значение переменной L
Q=An/L; %A*inv(L); % находим Q - ортогональную
A=L*Q; % переходи к последующей итерации
An=A; % присваиваем рабочей переменной значение А
end
for I=1:(n-1) % если есть комплексно-сопряженные значения
for J=1:n % избавляемся от них
if J-I==1
if A(I,J) ~= 0
C=A(I:J,I:J);
K=eig(C);
K=sort(K);
A(I:J,I:J)=diag(K); % присваиваем А матрицу, на главной дагонали
%которой находятся собственные значения
end
end
end
end
e=norm(A-D); % выводим погрешность
Вызываем матрицу в головной программе как одну из стандартных функций MATLAB:
>> [A,R,e]=SobZn(matr)
Где A – матрица, на главной диагонали которой находятся собственные значения. R – матрица, столбцы которой содержат собственные вектора. e – погрешность, с которой рассчитаны собственные значения.
Протестируем программу для различных матриц:
function[A]=matr
A=[1 2 0;2 1 3;0 3 4];
Известны ее собственные значения:
-1.9027
1.8121
6.0906
Получаем результат:
>> [A,R,e]=SobZn(matr)
A =
-1.9027 0 0.0000
0 1.8121 0
0.0000 0 6.0906
R =
0.5234 -0.8234 0.2192
-0.7596 -0.3343 0.5578
0.3861 0.4584 0.8005
e =
2.7231e-010
function[A]=matr
A=[1 2 0 0 0 ;2 4 8 0 0; 0 8 3 4 0; 0 0 4 1 6; 0 0 0 6 8];
Известны ее собственные значения:
-6.5456
-1.4764
1.3406
10.4669
13.2144
Получаем результат:
>> [A,R,e]=SobZn(matr)
A =
-6.5456 0 0 0 0
0 -1.4764 0 0 0
0 0 1.3406 0 0
0 0 0 10.4669 0
0 0 0 0 13.2144
R =
-0.1363 0.3659 0.9108 -0.1054 0.0830
0.5144 -0.4531 0.1551 -0.4988 0.5072
-0.6440 0.2187 -0.2793 -0.3769 0.5634
0.5080 0.6615 -0.1944 0.2941 0.4244
-0.2096 -0.4188 0.1751 0.7153 0.4883
e =
6.6613e-015
Как видно из примера, погрешность мала, и с точностью до четырех знаков после запятой ее не видно.
function[A]=matr
A=[0.1 0.1 0; 0.1 0.11 0.12; 0 0.12 0.111];
Известны ее собственные значения:
-0.0481
0.1045
0.2646
Получаем результат:
>> [A,R,e]=SobZn(matr)
A =
-0.0481 0 0
0 0.1045 0
0 0 0.2646
R =
0.4746 -0.7670 0.4319
-0.7027 -0.0346 0.7107
0.5301 0.6407 0.5554
e =
1.6653e-016
function[A]=matr
A=[0 1 0 0 0 0;1 2 0 0 0 0;0 0 0 1 0 0;0 0 1 1 0 0;0 0 0 0 2 0;0 0 0 0 0 1];
Известны ее собственные значения:
-0.6180
-0.4142
1.0000
1.6180
2.0000
2.4142
Получаем результат:
>> [A,R,e]=SobZn(matr)
A =
-0.6180 0 0 0 0 0
0 -0.4142 0 0 0 0
0 0 1.0000 0 0 0
0 0 0 1.6180 0 0
0 0 0 0 2.0000 0
0 0 0 0 0 2.4142
R =
0 -0.9239 0 0 0 0.3827
0 0.3827 0 0 0 0.9239
-0.8507 0 0 0.5257 0 0
0.5257 0 0 0.8507 0 0
0 0 0 0 1.0000 0
0 0 1.0000 0 0 0
e =
8.8818e-016
function[A]=matr
A=[1 100 0 0 0 0 0;
100 23 15 0 0 0 0;
0 15 43 10 0 0 0;
0 0 10 11 93 0 0;
0 0 0 93 32 14 0;
0 0 0 0 14 28 33;
0 0 0 0 0 33 18];
Известны ее собственные значения:
-89.3848
-73.5182
-10.1722
41.8099
55.8294
114.0294
117.4064
Получаем результат:
>> [A,R,e]=SobZn(matr)
A =
Columns 1 through 6
-89.3817 0 0 0 0 0
0 -73.5216 0 0 0 0
0 0 -10.1722 0 0 0
0 0 0 41.8099 0 0
0 0 0 0 55.8298 0
0 0 0 0 0 114.0294
0 0 0 0 0 0
Column 7
0
0
0
0
0
0
117.4064
R =
Columns 1 through 6
0.7392 0.0321 -0.0031 0.1584 -0.0160 -0.6233
-0.6681 -0.0239 0.0003 0.0647 -0.0087 -0.7045
0.0778 -0.0602 0.0201 -0.9752 0.0872 -0.1201
-0.0277 0.7368 -0.1072 0.0191 0.1250 0.2038
0.0216 -0.6631 0.0223 0.1112 0.0509 0.2387
-0.0028 0.1036 0.6452 -0.0488 -0.7437 0.0447
0.0009 -0.0374 -0.7558 -0.0676 -0.6487 0.0154
Column 7
-0.1968
-0.2291
-0.1298
-0.6224
-0.6981
-0.1246
-0.0414
e =
0.0035
6)Пример нахождения собственных чисел и векторов симметричной трехдиагональной плохо обусловленной матрицы размерности 3х3.
Плохо обусловленной называется матрица, определитель которой не равен нулю, но число обусловленности очень велико.
Числом обусловленности матрицы А называется число
Возьмем матрицу А
function[A]=matr
A=[1/100001 1/100001 0; 1/100001 1/100002 0;0 0 1/100001];
Найдем ее число обусловленности:
>> cond(А) //функция MatLab для нахождения числа обусловленности
ans =
4.0001e+005 //число обусловленности матрицы порядка 105
Матрица А является плохо обусловленной.
Проверим функцию, реализующую QL алгоритм на данной матрице:
Известны собственные значения матрицы:
1.0e-004 *
-0.0000
0.1000
0.2000
Результат, полученный с помощью функции:
>> [A,R,e]=SobZn(matr)
A =
1.0e-004 *
-0.0000 0 0
0 0.1000 0
0 0 0.2000
R =
0.7071 0 -0.7071
-0.7071 0 -0.7071
0 1.0000 0
e =
6.7763e-006
Собственные значения рассчитаны с погрешностью более высокой, чем для хорошо обусловленной матрицы.
Информация о работе QL алгоритм для вычисления симметричных трехдиагональных матриц