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

6 ビュー (過去 30 日間)
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

回答 (1 件)

Dohyun Kim
Dohyun Kim 2017 年 12 月 27 日
編集済み: Dohyun Kim 2017 年 12 月 27 日
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))

カテゴリ

Help Center および File ExchangeHilbert and Walsh-Hadamard Transforms についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by