Contact
CoCalc Logo Icon
StoreFeaturesDocsShareSupport News AboutSign UpSign In
| Download

Numerical Methods Homework

Views: 706
Kernel: SageMath 8.2

Q-R Factorization

import numpy as np A = np.array([[1,1],[2,1],[1,2],[0,3]]) b = [[3],[5],[5],[5]] show("A is: ", A) Q,R = np.linalg.qr(A) show("Q is: ", Q) show("R is: ", R) right_hand_side = np.dot(Q.T,b) x = var('x') show(R,x, ' = ', right_hand_side) show (x,' = ',np.linalg.lstsq(R,right_hand_side)[0]) show ('2-norm',' = ',np.linalg.lstsq(R,right_hand_side)[1]) show ('rank',' = ',np.linalg.lstsq(R,right_hand_side)[2])
Axis:[[1x1]x[2x1]x[1x2]x[0x3]]\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|A|\phantom{\verb!x!}\verb|is:| \begin{array}{l} \verb|[[1|\phantom{\verb!x!}\verb|1]|\\ \phantom{\verb!x!}\verb|[2|\phantom{\verb!x!}\verb|1]|\\ \phantom{\verb!x!}\verb|[1|\phantom{\verb!x!}\verb|2]|\\ \phantom{\verb!x!}\verb|[0|\phantom{\verb!x!}\verb|3]]| \end{array}
Qxis:[[-0.40824829xx0.05063697]x[-0.81649658x-0.20254787]x[-0.40824829xx0.35445878]x[-0.xxxxxxxxxx0.91146543]]\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|Q|\phantom{\verb!x!}\verb|is:| \begin{array}{l} \verb|[[-0.40824829|\phantom{\verb!xx!}\verb|0.05063697]|\\ \phantom{\verb!x!}\verb|[-0.81649658|\phantom{\verb!x!}\verb|-0.20254787]|\\ \phantom{\verb!x!}\verb|[-0.40824829|\phantom{\verb!xx!}\verb|0.35445878]|\\ \phantom{\verb!x!}\verb|[-0.|\phantom{\verb!xxxxxxxxxx!}\verb|0.91146543]]| \end{array}
Rxis:[[-2.44948974x-2.04124145]x[x0.xxxxxxxxxx3.29140294]]\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|R|\phantom{\verb!x!}\verb|is:| \begin{array}{l} \verb|[[-2.44948974|\phantom{\verb!x!}\verb|-2.04124145]|\\ \phantom{\verb!x!}\verb|[|\phantom{\verb!x!}\verb|0.|\phantom{\verb!xxxxxxxxxx!}\verb|3.29140294]]| \end{array}
[[-2.44948974x-2.04124145]x[x0.xxxxxxxxxx3.29140294]]xx=[[-7.34846923]x[x5.46879258]]\renewcommand{\Bold}[1]{\mathbf{#1}}\begin{array}{l} \verb|[[-2.44948974|\phantom{\verb!x!}\verb|-2.04124145]|\\ \phantom{\verb!x!}\verb|[|\phantom{\verb!x!}\verb|0.|\phantom{\verb!xxxxxxxxxx!}\verb|3.29140294]]| \end{array} x \phantom{\verb!x!}\verb|=| \begin{array}{l} \verb|[[-7.34846923]|\\ \phantom{\verb!x!}\verb|[|\phantom{\verb!x!}\verb|5.46879258]]| \end{array}
xx=[[x1.61538462]x[x1.66153846]]\renewcommand{\Bold}[1]{\mathbf{#1}}x \phantom{\verb!x!}\verb|=| \begin{array}{l} \verb|[[|\phantom{\verb!x!}\verb|1.61538462]|\\ \phantom{\verb!x!}\verb|[|\phantom{\verb!x!}\verb|1.66153846]]| \end{array}
2-normx=[]\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|2-norm| \phantom{\verb!x!}\verb|=| \verb|[]|
rankx=2\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|rank| \phantom{\verb!x!}\verb|=| 2
# import numpy as np A = np.array([[1,2,2],[2,-1,2],[3,1,1],[1,1,-1]]) b = [[10],[5],[10],[3]] show("A is: ", A) Q,R = np.linalg.qr(A) show("Q is: ", Q) show("R is: ", R) right_hand_side = np.dot(Q.T,b) x = var('x') show(R,x, ' = ', right_hand_side) show (x,' = ',np.linalg.lstsq(R,right_hand_side)[0]) show ('2-norm',' = ',np.linalg.lstsq(R,right_hand_side)[1]) show ('rank',' = ',np.linalg.lstsq(R,right_hand_side)[2]) #returns x, 2-norm for each column, rank
Axis:[[x1xx2xx2]x[x2x-1xx2]x[x3xx1xx1]x[x1xx1x-1]]\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|A|\phantom{\verb!x!}\verb|is:| \begin{array}{l} \verb|[[|\phantom{\verb!x!}\verb|1|\phantom{\verb!xx!}\verb|2|\phantom{\verb!xx!}\verb|2]|\\ \phantom{\verb!x!}\verb|[|\phantom{\verb!x!}\verb|2|\phantom{\verb!x!}\verb|-1|\phantom{\verb!xx!}\verb|2]|\\ \phantom{\verb!x!}\verb|[|\phantom{\verb!x!}\verb|3|\phantom{\verb!xx!}\verb|1|\phantom{\verb!xx!}\verb|1]|\\ \phantom{\verb!x!}\verb|[|\phantom{\verb!x!}\verb|1|\phantom{\verb!xx!}\verb|1|\phantom{\verb!x!}\verb|-1]]| \end{array}
Qxis:[[-0.25819889xx0.71159472xx0.62896243]x[-0.51639778x-0.62948763xx0.37549996]x[-0.77459667xx0.08210708x-0.24876872]x[-0.25819889xx0.3010593xx-0.63365618]]\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|Q|\phantom{\verb!x!}\verb|is:| \begin{array}{l} \verb|[[-0.25819889|\phantom{\verb!xx!}\verb|0.71159472|\phantom{\verb!xx!}\verb|0.62896243]|\\ \phantom{\verb!x!}\verb|[-0.51639778|\phantom{\verb!x!}\verb|-0.62948763|\phantom{\verb!xx!}\verb|0.37549996]|\\ \phantom{\verb!x!}\verb|[-0.77459667|\phantom{\verb!xx!}\verb|0.08210708|\phantom{\verb!x!}\verb|-0.24876872]|\\ \phantom{\verb!x!}\verb|[-0.25819889|\phantom{\verb!xx!}\verb|0.3010593|\phantom{\verb!xx!}\verb|-0.63365618]]| \end{array}
Rxis:[[-3.87298335x-1.03279556x-2.06559112]x[x0.xxxxxxxxxx2.43584345x-0.05473806]x[x0.xxxxxxxxxx0.xxxxxxxxxx2.39381225]]\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|R|\phantom{\verb!x!}\verb|is:| \begin{array}{l} \verb|[[-3.87298335|\phantom{\verb!x!}\verb|-1.03279556|\phantom{\verb!x!}\verb|-2.06559112]|\\ \phantom{\verb!x!}\verb|[|\phantom{\verb!x!}\verb|0.|\phantom{\verb!xxxxxxxxxx!}\verb|2.43584345|\phantom{\verb!x!}\verb|-0.05473806]|\\ \phantom{\verb!x!}\verb|[|\phantom{\verb!x!}\verb|0.|\phantom{\verb!xxxxxxxxxx!}\verb|0.|\phantom{\verb!xxxxxxxxxx!}\verb|2.39381225]]| \end{array}
[[-3.87298335x-1.03279556x-2.06559112]x[x0.xxxxxxxxxx2.43584345x-0.05473806]x[x0.xxxxxxxxxx0.xxxxxxxxxx2.39381225]]xx=[[-13.68454116]x[xx5.69275774]x[xx3.77846835]]\renewcommand{\Bold}[1]{\mathbf{#1}}\begin{array}{l} \verb|[[-3.87298335|\phantom{\verb!x!}\verb|-1.03279556|\phantom{\verb!x!}\verb|-2.06559112]|\\ \phantom{\verb!x!}\verb|[|\phantom{\verb!x!}\verb|0.|\phantom{\verb!xxxxxxxxxx!}\verb|2.43584345|\phantom{\verb!x!}\verb|-0.05473806]|\\ \phantom{\verb!x!}\verb|[|\phantom{\verb!x!}\verb|0.|\phantom{\verb!xxxxxxxxxx!}\verb|0.|\phantom{\verb!xxxxxxxxxx!}\verb|2.39381225]]| \end{array} x \phantom{\verb!x!}\verb|=| \begin{array}{l} \verb|[[-13.68454116]|\\ \phantom{\verb!x!}\verb|[|\phantom{\verb!xx!}\verb|5.69275774]|\\ \phantom{\verb!x!}\verb|[|\phantom{\verb!xx!}\verb|3.77846835]]| \end{array}
xx=[[x2.05882353]x[x2.37254902]x[x1.57843137]]\renewcommand{\Bold}[1]{\mathbf{#1}}x \phantom{\verb!x!}\verb|=| \begin{array}{l} \verb|[[|\phantom{\verb!x!}\verb|2.05882353]|\\ \phantom{\verb!x!}\verb|[|\phantom{\verb!x!}\verb|2.37254902]|\\ \phantom{\verb!x!}\verb|[|\phantom{\verb!x!}\verb|1.57843137]]| \end{array}
2-normx=[]\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|2-norm| \phantom{\verb!x!}\verb|=| \verb|[]|
rankx=3\renewcommand{\Bold}[1]{\mathbf{#1}}\verb|rank| \phantom{\verb!x!}\verb|=| 3