octave:2> A=randn(5,4) A = -0.694678 2.026652 -0.932785 0.240421 0.515782 -0.822675 0.468086 0.093058 1.764408 1.388348 -0.231169 -0.339936 0.920088 0.457385 2.974492 -0.569852 -1.319261 0.020113 0.021203 1.242342 octave:3> rand(5,4) ans = 0.977795 0.663570 0.197773 0.256307 0.958739 0.106331 0.450307 0.060559 0.126940 0.501019 0.543925 0.123226 0.907088 0.136772 0.409359 0.294670 0.591118 0.781790 0.986879 0.205060 octave:4> [Q,R]=qr(A) Q = -0.2735557 0.8212470 -0.0144733 0.1395960 -0.4806497 0.2031086 -0.3474718 -0.0067509 -0.3975765 -0.8245590 0.6948019 0.4274350 -0.2900639 -0.4533020 0.2119667 0.3623193 0.1203763 0.9210417 0.0766850 -0.0059949 -0.5195086 0.0873248 0.2594033 -0.7817178 0.2100296 R = 2.53944 0.39840 1.25632 -1.13493 0.00000 2.60048 -0.66759 0.05970 0.00000 0.00000 2.82253 -0.10810 0.00000 0.00000 0.00000 -0.86420 0.00000 0.00000 0.00000 0.00000 octave:5> Q'*Q ans = 1.0000e+00 1.3129e-16 4.5846e-17 4.7661e-17 -9.0373e-17 1.3129e-16 1.0000e+00 2.0548e-18 -3.0934e-16 -3.9113e-16 4.5846e-17 2.0548e-18 1.0000e+00 -1.3546e-16 -7.1426e-17 4.7661e-17 -3.0934e-16 -1.3546e-16 1.0000e+00 -3.9980e-16 -9.0373e-17 -3.9113e-16 -7.1426e-17 -3.9980e-16 1.0000e+00 octave:6> Q*R ans = -0.694678 2.026652 -0.932785 0.240421 0.515782 -0.822675 0.468086 0.093058 1.764408 1.388348 -0.231169 -0.339936 0.920088 0.457385 2.974492 -0.569852 -1.319261 0.020113 0.021203 1.242342 octave:7> A A = -0.694678 2.026652 -0.932785 0.240421 0.515782 -0.822675 0.468086 0.093058 1.764408 1.388348 -0.231169 -0.339936 0.920088 0.457385 2.974492 -0.569852 -1.319261 0.020113 0.021203 1.242342 octave:8> Q*R-A ans = 1.1102e-16 -4.4409e-16 6.6613e-16 -4.1633e-16 -1.1102e-16 2.2204e-16 -2.7756e-16 -2.4980e-16 -4.4409e-16 2.2204e-16 -1.9429e-16 3.8858e-16 0.0000e+00 1.6653e-16 0.0000e+00 2.2204e-16 2.2204e-16 4.1633e-17 4.2327e-16 -4.4409e-16 octave:9> R R = 2.53944 0.39840 1.25632 -1.13493 0.00000 2.60048 -0.66759 0.05970 0.00000 0.00000 2.82253 -0.10810 0.00000 0.00000 0.00000 -0.86420 0.00000 0.00000 0.00000 0.00000 octave:10> [Q,R,P]=qr(A) Q = -0.2951101 0.7346556 0.3502570 0.1395960 -0.4806497 0.1480908 -0.2939656 -0.2317082 -0.3975765 -0.8245590 -0.0731361 0.5226586 -0.6863429 -0.4533020 0.2119667 0.9410554 0.3172018 0.0887763 0.0766850 -0.0059949 0.0067083 0.0087388 0.5870976 -0.7817178 0.2100296 R = 3.16080 -0.39089 1.00935 -0.56024 0.00000 2.60162 0.54054 -0.19830 0.00000 0.00000 -2.26667 0.97475 0.00000 0.00000 0.00000 -0.86420 0.00000 0.00000 0.00000 0.00000 P = Permutation Matrix 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 octave:11> Q*R-A*P ans = -6.6613e-16 4.4409e-16 -4.4409e-16 1.9429e-16 5.5511e-17 1.1102e-16 1.1102e-16 -1.5266e-16 -2.7756e-17 0.0000e+00 -2.2204e-16 3.3307e-16 4.4409e-16 -9.9920e-16 1.1102e-16 0.0000e+00 3.4694e-18 -3.4694e-18 -2.2204e-16 2.2204e-16 octave:12> w=[1;2] w = 1 2 octave:13> w*w' ans = 1 2 2 4 octave:14> v=[4,5,6] v = 4 5 6 octave:15> w*v ans = 4 5 6 8 10 12 octave:16> A A = -0.694678 2.026652 -0.932785 0.240421 0.515782 -0.822675 0.468086 0.093058 1.764408 1.388348 -0.231169 -0.339936 0.920088 0.457385 2.974492 -0.569852 -1.319261 0.020113 0.021203 1.242342 octave:17> x=A(:,1) x = -0.69468 0.51578 1.76441 0.92009 -1.31926 octave:18> w1=x w1 = -0.69468 0.51578 1.76441 0.92009 -1.31926 octave:19> w1(1)=w1(1)-norm(x); octave:20> Qw1=(eye(size(A,1))-2*(w1*w1')/(w1'*w1)) Qw1 = -0.273556 0.203109 0.694802 0.362319 -0.519509 0.203109 0.967608 -0.110808 -0.057783 0.082852 0.694802 -0.110808 0.620943 -0.197667 0.283423 0.362319 -0.057783 -0.197667 0.896922 0.147797 -0.519509 0.082852 0.283423 0.147797 0.788082 octave:21> Qw1*A ans = 2.5394e+00 3.9840e-01 1.2563e+00 -1.1349e+00 6.0647e-18 -5.6300e-01 1.1896e-01 3.1240e-01 -2.5378e-17 2.2767e+00 -1.4255e+00 4.1040e-01 -7.5375e-17 9.2061e-01 2.3517e+00 -1.7857e-01 5.4242e-18 -6.4408e-01 9.1418e-01 6.8131e-01 octave:22> A1=Qw1*A A1 = 2.5394e+00 3.9840e-01 1.2563e+00 -1.1349e+00 6.0647e-18 -5.6300e-01 1.1896e-01 3.1240e-01 -2.5378e-17 2.2767e+00 -1.4255e+00 4.1040e-01 -7.5375e-17 9.2061e-01 2.3517e+00 -1.7857e-01 5.4242e-18 -6.4408e-01 9.1418e-01 6.8131e-01 octave:23> x=A1(2:5,2) x = -0.56300 2.27666 0.92061 -0.64408 octave:24> w2=x w2 = -0.56300 2.27666 0.92061 -0.64408 octave:25> w2(1)=w2(1)-norm(x); octave:26> Qw2=(eye(size(A1,1))-2*w2*w2'/(w2'*w2)); error: operator -: nonconformant arguments (op1 is 5x5, op2 is 4x4) octave:26> Qw2=(eye(size(A1,1))-2*(w2*w2')/(w2'*w2)); error: operator -: nonconformant arguments (op1 is 5x5, op2 is 4x4) octave:26> A1 A1 = 2.5394e+00 3.9840e-01 1.2563e+00 -1.1349e+00 6.0647e-18 -5.6300e-01 1.1896e-01 3.1240e-01 -2.5378e-17 2.2767e+00 -1.4255e+00 4.1040e-01 -7.5375e-17 9.2061e-01 2.3517e+00 -1.7857e-01 5.4242e-18 -6.4408e-01 9.1418e-01 6.8131e-01 octave:27> Qw2=(eye(size(A,1)-1)-2*(w2*w2')/(w2'*w2)); octave:28> Qw2 Qw2 = -0.216498 0.875475 0.354016 -0.247678 0.875475 0.369948 -0.254774 0.178246 0.354016 -0.254774 0.896977 0.072077 -0.247678 0.178246 0.072077 0.949573 octave:29> Qw2=[1,zeros(1,4);zeros(4,1),Qw2] Qw2 = 1.00000 0.00000 0.00000 0.00000 0.00000 0.00000 -0.21650 0.87548 0.35402 -0.24768 0.00000 0.87548 0.36995 -0.25477 0.17825 0.00000 0.35402 -0.25477 0.89698 0.07208 0.00000 -0.24768 0.17825 0.07208 0.94957 octave:30> Qw2*A1 ans = 2.5394e+00 3.9840e-01 1.2563e+00 -1.1349e+00 -5.1558e-17 2.6005e+00 -6.6759e-01 5.9700e-02 1.6091e-17 -2.0733e-16 -8.5940e-01 5.9226e-01 -5.8606e-17 -2.6275e-17 2.5806e+00 -1.0503e-01 -6.3078e-18 1.0950e-16 7.5404e-01 6.2986e-01 octave:31> [U,S,V]=svd(A) U = -0.3679829 -0.5909531 -0.4953488 0.1974041 -0.4806497 0.1891842 0.2254161 0.2189636 -0.4307601 -0.8245590 0.2055158 -0.7266736 0.2900661 -0.5483069 0.2119667 0.8405794 -0.0426973 -0.5328413 0.0874500 -0.0059949 -0.2828206 0.2647346 -0.5819161 -0.6835125 0.2100296 S = Diagonal Matrix 3.57127 0 0 0 0 2.79687 0 0 0 0 2.05372 0 0 0 0 0.78525 0 0 0 0 V = 0.521479 -0.408993 0.606839 -0.438783 -0.066448 -0.860312 -0.504811 0.024776 0.806043 0.251474 -0.535505 -0.017052 -0.271918 0.171314 -0.300244 -0.898090 octave:32> octave:32> U*S*V'-A ans = 2.2204e-16 -4.4409e-16 1.1102e-15 -1.1380e-15 -2.2204e-16 -4.4409e-16 -5.5511e-17 9.4369e-16 -8.8818e-16 -2.2204e-16 -1.6653e-16 9.4369e-16 -1.1102e-15 4.4409e-16 -2.2204e-15 0.0000e+00 1.1102e-15 -1.7694e-16 7.6328e-17 -1.1102e-15 octave:33> A A = -0.694678 2.026652 -0.932785 0.240421 0.515782 -0.822675 0.468086 0.093058 1.764408 1.388348 -0.231169 -0.339936 0.920088 0.457385 2.974492 -0.569852 -1.319261 0.020113 0.021203 1.242342 octave:34> rank(A) ans = 4 octave:35> b=randn(5,1) b = -0.54157 -0.32060 -0.90185 -2.23254 -0.81995 octave:36> rank([A,b]) ans = 5 octave:37> x1=(A'*A)\(A'*b) x1 = -0.38534 -0.57484 -0.74888 -1.07664 octave:38> [Q,R]=qr(A); octave:39> R R = 2.53944 0.39840 1.25632 -1.13493 0.00000 2.60048 -0.66759 0.05970 0.00000 0.00000 2.82253 -0.10810 0.00000 0.00000 0.00000 -0.86420 0.00000 0.00000 0.00000 0.00000 octave:40> b1=Q'*b b1 = -0.92650 -1.05920 -1.99736 0.93044 0.17467 octave:41> x2=R(1:4,1:4)\b1(1:4) x2 = -0.38534 -0.57484 -0.74888 -1.07664 octave:42> x1 x1 = -0.38534 -0.57484 -0.74888 -1.07664 octave:43> A*x1-b ans = 0.0839542 0.1440242 -0.0370238 0.0010471 -0.0366855 octave:44> [U,S,V]=svd(A) U = -0.3679829 -0.5909531 -0.4953488 0.1974041 -0.4806497 0.1891842 0.2254161 0.2189636 -0.4307601 -0.8245590 0.2055158 -0.7266736 0.2900661 -0.5483069 0.2119667 0.8405794 -0.0426973 -0.5328413 0.0874500 -0.0059949 -0.2828206 0.2647346 -0.5819161 -0.6835125 0.2100296 S = Diagonal Matrix 3.57127 0 0 0 0 2.79687 0 0 0 0 2.05372 0 0 0 0 0.78525 0 0 0 0 V = 0.521479 -0.408993 0.606839 -0.438783 -0.066448 -0.860312 -0.504811 0.024776 0.806043 0.251474 -0.535505 -0.017052 -0.271918 0.171314 -0.300244 -0.898090 octave:45> V*V' ans = 1.0000e+00 -2.2396e-16 -4.0471e-18 3.0111e-16 -2.2396e-16 1.0000e+00 2.8053e-16 -6.7642e-17 -4.0471e-18 2.8053e-16 1.0000e+00 -6.4200e-17 3.0111e-16 -6.7642e-17 -6.4200e-17 1.0000e+00 octave:46> octave:46> A A = -0.694678 2.026652 -0.932785 0.240421 0.515782 -0.822675 0.468086 0.093058 1.764408 1.388348 -0.231169 -0.339936 0.920088 0.457385 2.974492 -0.569852 -1.319261 0.020113 0.021203 1.242342 octave:47> b b = -0.54157 -0.32060 -0.90185 -2.23254 -0.81995 octave:48> [U,S,V]=svd(A); octave:49> d=U'*b; octave:50> S S = Diagonal Matrix 3.57127 0 0 0 0 2.79687 0 0 0 0 2.05372 0 0 0 0 0.78525 0 0 0 0 octave:51> d d = -1.69144 0.78139 1.60320 0.89089 0.17467 octave:52> y=d./diag(S) error: quotient: nonconformant arguments (op1 is 5x1, op2 is 4x1) octave:52> y=d(1:4)./diag(S) y = -0.47362 0.27938 0.78063 1.13453 octave:53> x3=V*y x3 = -0.38534 -0.57484 -0.74888 -1.07664 octave:54> x1 x1 = -0.38534 -0.57484 -0.74888 -1.07664 octave:55> A=randn(4,5) A = -0.189481 -0.091921 0.964945 0.285441 -0.483631 -0.575706 1.380252 -0.477260 -0.405949 -0.316882 -0.221078 1.063202 1.273908 -2.380907 -0.694953 0.856603 -2.742289 -0.507420 0.366062 -0.174208 octave:56> [Q,R,P]=qr(A) Q = -0.0282813 -0.1184332 -0.8175880 0.5627821 0.4246609 -0.0629152 0.5083050 0.7465460 0.3271143 0.9329757 -0.1500832 -0.0052591 -0.8437177 0.3340234 0.2250579 0.3548489 R = 3.25025 -1.26814 0.61487 -0.20124 -1.03417 0.00000 -2.10732 0.93478 -0.62935 0.13853 0.00000 0.00000 -1.33691 0.29943 0.08825 0.00000 0.00000 0.00000 -0.56691 -0.23130 P = Permutation Matrix 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 octave:57> [Q,R,p]=qr(A,0) Q = -0.0282813 -0.1184332 -0.8175880 0.5627821 0.4246609 -0.0629152 0.5083050 0.7465460 0.3271143 0.9329757 -0.1500832 -0.0052591 -0.8437177 0.3340234 0.2250579 0.3548489 R = 3.25025 -1.26814 0.61487 -0.20124 -1.03417 0.00000 -2.10732 0.93478 -0.62935 0.13853 0.00000 0.00000 -1.33691 0.29943 0.08825 0.00000 0.00000 0.00000 -0.56691 -0.23130 p = 2 4 3 5 1 octave:58> x = R(:,1:size (A, 1)) \ (Q' * b); error: operator *: nonconformant arguments (op1 is 4x4, op2 is 5x1) octave:58> b b = -0.54157 -0.32060 -0.90185 -2.23254 -0.81995 octave:59> b=randn(4,1) b = -0.93504 0.85448 -0.62549 -0.90297 octave:60> x = R(:,1:size (A, 1)) \ (Q' * b); octave:61> x x = 0.436591 -0.040701 -0.733747 0.362403 octave:62> x(size (A, 2)) = 0; octave:63> x x = 0.43659 -0.04070 -0.73375 0.36240 0.00000 octave:64> x(p)=x x = 0.00000 0.43659 -0.73375 -0.04070 0.36240 octave:65> A octave:65> octave:65> b b = -0.93504 0.85448 -0.62549 -0.90297 octave:66> A*x-b ans = -1.1102e-16 -1.1102e-16 -4.4409e-16 2.2204e-16 octave:67> x x = 0.00000 0.43659 -0.73375 -0.04070 0.36240 octave:68> x1=A\b x1 = -0.017709 0.430101 -0.733298 -0.043824 0.369628 octave:69> A*x1-b ans = -2.2204e-16 0.0000e+00 -4.4409e-16 -3.3307e-16 octave:70> norm(x1) ans = 0.92821 octave:71> nomr(x) error: 'nomr' undefined near line 1 column 1 octave:71> norm(x) ans = 0.92843 octave:72> diary off