From 5ba863cfd613668c82c9e774a5508d751abdc328 Mon Sep 17 00:00:00 2001 From: mehmet Date: Mon, 14 Mar 2016 16:01:58 +0200 Subject: [PATCH 1/3] 16.01 --- formQx.m | 8 ++++++++ house.m | 16 ++++++++++++++++ hw3_10_4.m | 20 ++++++++++++++++++++ hw3_11_3.m | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ hw3_9_3.m | 36 ++++++++++++++++++++++++++++++++++++ mgs.m | 15 +++++++++++++++ 6 files changed, 147 insertions(+) create mode 100644 formQx.m create mode 100644 house.m create mode 100644 hw3_10_4.m create mode 100644 hw3_11_3.m create mode 100644 hw3_9_3.m create mode 100644 mgs.m diff --git a/formQx.m b/formQx.m new file mode 100644 index 0000000..80e1758 --- /dev/null +++ b/formQx.m @@ -0,0 +1,8 @@ +function a=formQx(W,vect) + m=size(W,1); + n=size(W,2); + for k=n:-1:1 + vect(k:m)=vect(k:m)-2*W(k:m,k)*((W(k:m,k))'*vect(k:m)); + end; + a=vect; +end \ No newline at end of file diff --git a/house.m b/house.m new file mode 100644 index 0000000..c9b544c --- /dev/null +++ b/house.m @@ -0,0 +1,16 @@ +function [W,R]=house(A) + m=size(A,1); + n=size(A,2); + W=zeros(m,n); + for k=1:n + x=A(k:m,k); + e1=eye(m-k+1,1); + if (x(1)==0) coef=1; + else coef=sign(x(1)); + end; + W(k:m,k)=coef*norm(x,2)*e1+x; + W(k:m,k)=W(k:m,k)/norm(W(k:m,k),2); + A(k:m,k:n)=A(k:m,k:n)-2*W(k:m,k)*((W(k:m,k))'*A(k:m,k:n)); + end; + R=triu(A,0); +end \ No newline at end of file diff --git a/hw3_10_4.m b/hw3_10_4.m new file mode 100644 index 0000000..faf42f2 --- /dev/null +++ b/hw3_10_4.m @@ -0,0 +1,20 @@ +%a------------ + +teta = pi/3; +F = [-cos(teta) sin(teta); sin(teta) cos(teta)]; +J = [cos(teta) sin(teta); -sin(teta) cos(teta)]; +v = [2;1]; +fRes = F*v +jRes = J*v + +atan2(fRes(2),fRes(1)) +atan2(v(2),v(1)) +figure; +plotv(F*v,'-'); +hold +plotv(v,'-'); +plotv(J*v,'-'); + % J rotates plane by the angle teta in the clockwise direction + % F takes the symmetric of v according to y axis, then rotates plane by teta + % degree in the counter clockwise direction. +%------------- \ No newline at end of file diff --git a/hw3_11_3.m b/hw3_11_3.m new file mode 100644 index 0000000..774577e --- /dev/null +++ b/hw3_11_3.m @@ -0,0 +1,52 @@ + +m = 50; +n = 12; + +t = linspace(0,1,m); + +tmp = fliplr(vander(t)); +A = tmp(:,1:n); +b = cos(4*t); + +%a------------------- +x1 = (A'*A) \ (A'*b'); +%-------------------- + +%b------------------- +[Q, R] = mgs(A); +v = Q' * b'; +x2 = R\v; +%-------------------- + +%c------------------- + +[W, R] = house(A); +Q = zeros(m, m); +for i = 1:m + e = zeros(m,1); + e(i) = 1; + Q(:,i) = formQx(W,e); +end + +vec = b'; +for i = 1:n + vec(i:m)=vec(i:m)-2*W(i:m,i)*((W(i:m,i))'*vec(i:m)); +end +x3 = R\vec; + +%-------------------- + +%d------------------- +[Q, R] = qr(A); +v = Q' * b'; +x4 = R\v; +%-------------------- + +%e------------------- +x5 = A\b'; +%-------------------- + +%f------------------- +[U,S,V] = svd(A); +x6 = V*(S\(U'*b')) +%-------------------- \ No newline at end of file diff --git a/hw3_9_3.m b/hw3_9_3.m new file mode 100644 index 0000000..80bd52c --- /dev/null +++ b/hw3_9_3.m @@ -0,0 +1,36 @@ +A = zeros(15,40); +%a----------- +vertical = [2 2; 2 3; 2 6; 2 7; 3 10; 3 11; 4 18; 4 19; 5 26; 5 27; 6 34; 6 35; 6 38; 6 39]; +horizontal = [5 2; 6 2;3 10;4 10; 6 10; 7 10;9 10;10 10;10 18; 11 18;11 26;12 26;6 34; 7 34; 12 34; 13 34]; + + +for i = 1:length(vertical) + A(vertical(i,1):vertical(i,1)+7,vertical(i,2)) = 1; +end + +for i = 1:length(horizontal) + A(horizontal(i,1),horizontal(i,2):horizontal(i,2)+5) = 1; +end +%spy(A); +%a------------ + +%b------------ +S = svd(A) +figure +plot(S) +title('plot'); +figure +semilogy(S) +title('semilogy'); +rank(A) +%b------------ + +%c------------ +[U, S, V] = svd(A); +figure +for i = 1:rank(A) + B = U(:,1:i) * S(1:i, 1:i) * V(:,1:i)' + pcolor(B) + colormap(gray) +end +%c------------ \ No newline at end of file diff --git a/mgs.m b/mgs.m new file mode 100644 index 0000000..da6666b --- /dev/null +++ b/mgs.m @@ -0,0 +1,15 @@ +function [Q, R] = mgs(A) + n = size(A,2); + V = A; + Q = zeros(size(A,1), size(A,2)); + R = zeros(n,n); + + for i = 1:n + R(i,i) = norm(V(:,i)); + Q(:,i) = V(:,i)/R(i,i); + for j = i+1:n + R(i,j) = Q(:,i)' * V(:,j); + V(:,j) = V(:,j) - R(i,j) * Q(:,i); + end + end +end \ No newline at end of file From 1f367454769ef464f1e5ebd695b1cc1e2cd78e04 Mon Sep 17 00:00:00 2001 From: mehmet Date: Mon, 14 Mar 2016 16:21:42 +0200 Subject: [PATCH 2/3] 9.3 10.4.a 11.3 --- hw3_11_3.m | 146 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 95 insertions(+), 51 deletions(-) diff --git a/hw3_11_3.m b/hw3_11_3.m index 774577e..d52ff50 100644 --- a/hw3_11_3.m +++ b/hw3_11_3.m @@ -1,52 +1,96 @@ +function hw3_11_3 + m = 50; + n = 12; -m = 50; -n = 12; - -t = linspace(0,1,m); - -tmp = fliplr(vander(t)); -A = tmp(:,1:n); -b = cos(4*t); - -%a------------------- -x1 = (A'*A) \ (A'*b'); -%-------------------- - -%b------------------- -[Q, R] = mgs(A); -v = Q' * b'; -x2 = R\v; -%-------------------- - -%c------------------- - -[W, R] = house(A); -Q = zeros(m, m); -for i = 1:m - e = zeros(m,1); - e(i) = 1; - Q(:,i) = formQx(W,e); -end - -vec = b'; -for i = 1:n - vec(i:m)=vec(i:m)-2*W(i:m,i)*((W(i:m,i))'*vec(i:m)); -end -x3 = R\vec; - -%-------------------- - -%d------------------- -[Q, R] = qr(A); -v = Q' * b'; -x4 = R\v; -%-------------------- - -%e------------------- -x5 = A\b'; -%-------------------- - -%f------------------- -[U,S,V] = svd(A); -x6 = V*(S\(U'*b')) -%-------------------- \ No newline at end of file + t = linspace(0,1,m); + + tmp = fliplr(vander(t)); + A = tmp(:,1:n); + b = cos(4*t); + + %a------------------- + x1 = (A'*A) \ (A'*b'); + %-------------------- + + %b------------------- + [Q, R] = mgs(A); + v = Q' * b'; + x2 = R\v; + %-------------------- + + %c------------------- + + [W, R] = house(A); + Q = zeros(m, m); + for i = 1:m + e = zeros(m,1); + e(i) = 1; + Q(:,i) = formQx(W,e); + end + + vec = b'; + for i = 1:n + vec(i:m)=vec(i:m)-2*W(i:m,i)*((W(i:m,i))'*vec(i:m)); + end + x3 = R\vec; + + %-------------------- + + %d------------------- + [Q, R] = qr(A); + v = Q' * b'; + x4 = R\v; + %-------------------- + + %e------------------- + x5 = A\b'; + %-------------------- + + %f------------------- + [U,S,V] = svd(A); + x6 = V*(S\(U'*b')); + %-------------------- + + [x1 x2 x3 x4 x5 x6] + + function [Q, R] = mgs(A) + n = size(A,2); + V = A; + Q = zeros(size(A,1), size(A,2)); + R = zeros(n,n); + + for k = 1:n + R(k,k) = norm(V(:,k)); + Q(:,k) = V(:,k)/R(k,k); + for j = k+1:n + R(k,j) = Q(:,k)' * V(:,j); + V(:,j) = V(:,j) - R(k,j) * Q(:,k); + end + end + end + function [W,R]=house(A) + m=size(A,1); + n=size(A,2); + W=zeros(m,n); + for k=1:n + x=A(k:m,k); + e1=eye(m-k+1,1); + if (x(1)==0) coef=1; + else coef=sign(x(1)); + end; + W(k:m,k)=coef*norm(x,2)*e1+x; + W(k:m,k)=W(k:m,k)/norm(W(k:m,k),2); + A(k:m,k:n)=A(k:m,k:n)-2*W(k:m,k)*((W(k:m,k))'*A(k:m,k:n)); + end; + R=triu(A,0); + end + + function a=formQx(W,vect) + m=size(W,1); + n=size(W,2); + for k=n:-1:1 + vect(k:m)=vect(k:m)-2*W(k:m,k)*((W(k:m,k))'*vect(k:m)); + end; + a=vect; + end +end \ No newline at end of file From 64f299f326fc67aa917c7c1d4885db658febd261 Mon Sep 17 00:00:00 2001 From: mehmet Date: Mon, 14 Mar 2016 16:25:09 +0200 Subject: [PATCH 3/3] last --- formQx.m | 8 -------- house.m | 16 ---------------- mgs.m | 15 --------------- 3 files changed, 39 deletions(-) delete mode 100644 formQx.m delete mode 100644 house.m delete mode 100644 mgs.m diff --git a/formQx.m b/formQx.m deleted file mode 100644 index 80e1758..0000000 --- a/formQx.m +++ /dev/null @@ -1,8 +0,0 @@ -function a=formQx(W,vect) - m=size(W,1); - n=size(W,2); - for k=n:-1:1 - vect(k:m)=vect(k:m)-2*W(k:m,k)*((W(k:m,k))'*vect(k:m)); - end; - a=vect; -end \ No newline at end of file diff --git a/house.m b/house.m deleted file mode 100644 index c9b544c..0000000 --- a/house.m +++ /dev/null @@ -1,16 +0,0 @@ -function [W,R]=house(A) - m=size(A,1); - n=size(A,2); - W=zeros(m,n); - for k=1:n - x=A(k:m,k); - e1=eye(m-k+1,1); - if (x(1)==0) coef=1; - else coef=sign(x(1)); - end; - W(k:m,k)=coef*norm(x,2)*e1+x; - W(k:m,k)=W(k:m,k)/norm(W(k:m,k),2); - A(k:m,k:n)=A(k:m,k:n)-2*W(k:m,k)*((W(k:m,k))'*A(k:m,k:n)); - end; - R=triu(A,0); -end \ No newline at end of file diff --git a/mgs.m b/mgs.m deleted file mode 100644 index da6666b..0000000 --- a/mgs.m +++ /dev/null @@ -1,15 +0,0 @@ -function [Q, R] = mgs(A) - n = size(A,2); - V = A; - Q = zeros(size(A,1), size(A,2)); - R = zeros(n,n); - - for i = 1:n - R(i,i) = norm(V(:,i)); - Q(:,i) = V(:,i)/R(i,i); - for j = i+1:n - R(i,j) = Q(:,i)' * V(:,j); - V(:,j) = V(:,j) - R(i,j) * Q(:,i); - end - end -end \ No newline at end of file