Отчёт по шестой лабораторной работе по численным методам.
Задание 6
Код программы:
ep = 1;
epp = ep;
n = 20;
[a,b] = demomatr(n,ep);
demoprog(n,ep)
for i=1:20,
epp = epp/2;
demoprog(n,epp)
end
Полученне резальтаты:
det(A) = 1, cond(A)=2.09159e+006 eps=0
det(A) = 0.5, cond(A)=4.18319e+006 eps=1.1547
det(A) = 0.25, cond(A)=8.36637e+006 eps=3.4641
det(A) = 0.125, cond(A)=1.67327e+007 eps=8.0829
det(A) = 0.0625, cond(A)=3.34655e+007 eps=17.3205
det(A) = 0.03125, cond(A)=6.6931e+007 eps=35.7957
det(A) = 0.015625, cond(A)=1.33862e+008 eps=72.7461
det(A) = 0.0078125, cond(A)=2.67724e+008 eps=146.647
det(A) = 0.00390625, cond(A)=5.35448e+008 eps=294.449
det(A) = 0.00195313, cond(A)=1.0709e+009 eps=590.052
det(A) = 0.000976563, cond(A)=2.14179e+009 eps=1181.26
det(A) = 0.000488281, cond(A)=4.28358e+009 eps=2363.67
det(A) = 0.000244141, cond(A)=8.56717e+009 eps=4728.5
det(A) = 0.00012207, cond(A)=1.71343e+010 eps=9458.15
det(A) = 6.10352e-005, cond(A)=3.42687e+010 eps=18917.5
det(A) = 3.05176e-005, cond(A)=6.85373e+010 eps=37836.1
det(A) = 1.52588e-005, cond(A)=1.37075e+011 eps=75673.3
det(A) = 7.62939e-006, cond(A)=2.74149e+011 eps=151348
det(A) = 3.8147e-006, cond(A)=5.48299e+011 eps=302697
det(A) = 1.90735e-006, cond(A)=1.0966e+012 eps=605394
det(A) = 9.53674e-007, cond(A)=2.19319e+012 eps=1.21079e+006
Каждый раз ep уменьшалось в два раза.
Задание 7
Несолько изменив функцию demoprog.m получаем функцию lab67.m :
function lab67(n,ep)
% выводит значениЯ det(A), cond(A), || Y - X ||
% длЯ заданных n и ep
%n=10;
%ep=1;
%n = input ('Введите n :');
%ep = input ('Введите ep :');
[A,B] = demomatr(n,ep);
Y=inv(A)*B;
X=(1:n)';
epsylon=norm(Y-X);
%s = sprintf('det(A) = %g, cond(A)=%g eps=%g',det(A),cond(A), epsylon);
epsylon
Таблица значений:
N EP Epsylon
20 10 1.0392
10 20 1.0970
15 30 1.1959
15 3 2.3094
35 3 2.3094
35 1 0.0000
35 0.1 0.5470
50 100 1.1547
50 1000 1.1637
Задание 8
N = 50
Ep = 0.1
[A,B] = demomatr(n,ep);
1)С помощью nnls
X1 = nnls(A,B);
2)С помощью pinv
X2 = pinv(A)*B;
3)С помощью inv
X3 = inv(A)*B
Решение:
1 2 3
0.6667 0.6667 0
2.1667 2.1667 0
2.9167 2.9167 0
4.0417 4.0417 8.0000
4.9792 4.9792 4.0000
6.0104 6.0104 6.0000
6.9948 6.9948 7.0000
8.0026 8.0026 8.0000
8.9987 8.9987 9.0000
10.0007 10.0007 10.0000
10.9997 10.9997 11.0000
12.0002 12.0002 12.0000
12.9999 12.9999 13.0000
14.0000 14.0000 14.0000
15.0000 15.0000 15.0000
16.0000 16.0000 16.0000
17.0000 17.0000 17.0000
18.0000 18.0000 18.0000
19.0000 19.0000 19.0000
20.0000 20.0000 20.0000
21.0000 21.0000 21.0000
22.0000 22.0000 22.0000
23.0000 23.0000 23.0000
24.0000 24.0000 24.0000
25.0000 25.0000 25.0000
26.0000 26.0000 26.0000
27.0000 27.0000 27.0000
28.0000 28.0000 28.0000
29.0000 29.0000 29.0000
30.0000 30.0000 30.0000
31.0000 31.0000 31.0000
32.0000 32.0000 32.0000
33.0000 33.0000 33.0000
34.0000 34.0000 34.0000
35.0000 35.0000 35.0000
36.0000 36.0000 36.0000
37.0000 37.0000 37.0000
38.0000 38.0000 38.0000
39.0000 39.0000 39.0000
40.0000 40.0000 40.0000
41.0000 41.0000 41.0000
42.0000 42.0000 42.0000
43.0000 43.0000 43.0000
44.0000 44.0000 44.0000
45.0000 45.0000 45.0000
46.0000 46.0000 46.0000
47.0000 47.0000 47.0000
48.0000 48.0000 48.0000
49.0000 49.0000 49.0000
50.0000 50.0000 50.0000
Задание 9
Adeform = A(1:49,:);
Bdeform = B(1:49);
Xdeform = nnls(Adeform,Bdeform);
Решение:
0
2.49999999999995
2.75000000000008
4.12500000000006
4.93750000000013
6.03125000000002
6.98437500000004
8.00781249999992
8.99609374999993
10.00195312499998
10.99902343750013
12.00048828124988
12.99975585937498
14.00012207031254
14.99993896484373
16.00003051757812
16.99998474121109
18.00000762939450
18.99999618530276
20.00000190734853
20.99999904632565
22.00000047683712
22.99999976158149
24.00000011920934
24.99999994039541
26.00000002980240
26.99999998509876
28.00000000745046
28.99999999627464
30.00000000186270
30.99999999906877
32.00000000046569
32.99999999976716
34.00000000011638
34.99999999994176
36.00000000002918
36.99999999998548
38.00000000000726
38.99999999999653
40.00000000000188
40.99999999999913
42.00000000000045
42.99999999999980
44.00000000000011
44.99999999999996
45.99999999999999
46.99999999999996
48.00000000000000
49.00000000000005
50.00000000000003