Download or view MatrixQRTest.frink in plain text format
/** This class tests QR decomposition and least-squares routines in
Matrix.frink.
This tests the solution of a system of equations represented by matrices
A * X = B
where A and B are given and X is solved for.
*/
use Matrix.frink
A = new Matrix[[[2, 3],
[5, 7]]]
B = new Matrix[[[12],
[29]]]
println["Original matrix is:\n" + A.formatMatrix[]]
sol = A.leastSquares[B].roundToInt[]
println[]
println["Least-squares solution is:"]
println[sol.formatMatrix[]]
reverse = A.multiply[sol]
println["Verifying solution:"]
println[formatTable[[[reverse.formatMatrix[], "=", B.formatMatrix[]]]]]
A = new Matrix[[[1, 2],
[1, 3]]]
B = new Matrix[[[1],
[2]]]
println["\n\n"]
println["Original matrix is:\n" + A.formatMatrix[]]
[Q, R] = A.QRDecompose[]
println["Q and R are:"]
println[formatTable[[[Q.formatMatrix[], "*", R.formatMatrix[]]]]]
println["Testing decomposition. This should equal original matrix: "]
println[Q.multiply[R].roundToInt[].formatMatrix[]]
sol = A.leastSquares[B].roundToInt[]
println[]
println["Least-squares solution is:"]
println[sol.formatMatrix[]]
reverse = A.multiply[sol]
println["Verifying solution:"]
println[formatTable[[[reverse.formatMatrix[], "=", B.formatMatrix[]]]]]
/*
// Symbolic test. Produces big symbolic results!
symbolicMode[true]
A = new Matrix[[[f1_1, f2_1],
[f2_1, f2_2]]]
B = new Matrix[[[y1],
[y2]]]
println["\n\n"]
println["Original matrix is:\n" + A.formatMatrix[]]
sol = A.leastSquares[B]
println[]
println["Least-squares solution is:"]
println[sol.formatMatrix[]]
reverse = A.multiply[sol]
println["Verifying solution:"]
println[formatTable[[[reverse.formatMatrix[], "=", B.formatMatrix[]]]]]
*/
Download or view MatrixQRTest.frink in plain text format
This is a program written in the programming language Frink.
For more information, view the Frink
Documentation or see More Sample Frink Programs.
Alan Eliasen was born 20145 days, 7 hours, 28 minutes ago.