I am supposed to plot the size k of a Hilbert matrix and condition number . I am supposed to plot k = 5, 10, 15, 20, 25, 30 vs condition # wrt to 1-norm, cond inf-norm, cond 2-norm

2 Ansichten (letzte 30 Tage)
I have the code below which outputs the respective matrices and condition numbers but I am confused on how I am supposed to plot the actual matrix vs the norms. code below;
k = [ 5 10 15 20 25 30];
for k = 1:5
hilbert = hilb(k)
cond(hilbert,2)
end
for n = 1:5
hilbert = hilb(k)
cond(hilbert,1)
end
for n = 1:5
hilbert = hilb(k)
cond(hilbert, inf)
end
%k = (5, 10, 15, 20, 25, 30);
%condNum = (1, 2, inf)
%plot(
Is there a better way to write the loop instead of repeating loops? Additionally, how would I plot the size versus the cond numbers ? Would it be better to do each separately for the three norms then record the values and then plot them? I am stuck on how to proceed and wonder if I am even writing this code correctly according to the instructions. Any pointers in the right direction would be greatly appreciated

Antworten (1)

Dohyun Kim
Dohyun Kim am 27 Dez. 2017
Bearbeitet: Dohyun Kim am 27 Dez. 2017
k = [5,10,15, 20, 25, 30];
cond1 = zeros(1,length(k));
cond2 = zeros(1,length(k));
condinf = zeros(1,length(k));
for i = 1 : length(k)
H = hilb(k(i));
cond1(i) = cond(H,1);
cond2(i) = cond(H,2);
condinf(i) = cond(H,inf);
end
plot(k,cond1,k,cond2,k,condinf)
I suggest you to use
semilogy(k,cond1,k,cond2,k,condinf)
instead of just plot. Since condition number grows fast, it is better to use log scale for y-axis
Also, you may get warning while get condition number for large k.
In my case, from k = 15, I get warning when we get condition number in 1-norm and inf-norm.
Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND = 2.765788e-19.
I think we cannot trust the result for k>=15.
In wikipedia, we can see that the condition number should grow as we e increase k.
However, result shows that they are bounded by 10^19 which appears to similar in the warning message.
FYI, RCOND is reciprocal of condition number (= 1/cond(A))

Kategorien

Mehr zu Linear Algebra finden Sie in Help Center und File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by