Example 20
intermediate
20
Linear Algebra
Tensors

Linear Algebra Operations

Explore matrix decompositions and linear system solving. Essential for understanding ML algorithms under the hood. This example uses deepbox/linalg, deepbox/ndarray and focuses on det, inv, trace, norm, svd, qr, lu, solve; tensor.

Deepbox Modules Used

deepbox/linalgdeepbox/ndarray

What You Will Learn

  • Use deepbox/linalg for det, inv, trace, norm, svd, qr, lu, solve.
  • Use deepbox/ndarray for tensor.
  • Explore matrix decompositions and linear system solving. Essential for understanding ML algorithms under the hood.

Source Files

index.ts
1/**2 * Example 20: Linear Algebra Operations3 *4 * Explore matrix decompositions and linear system solving.5 * Essential for understanding ML algorithms under the hood.6 */78import { det, inv, lu, norm, qr, solve, svd, trace } from "deepbox/linalg";9import { tensor } from "deepbox/ndarray";1011console.log("=== Linear Algebra Operations ===\n");1213// Create a matrix14const A = tensor([15  [4, 2],16  [3, 1],17]);1819console.log("Matrix A:");20console.log(`${A.toString()}\n`);2122// Determinant23const detA = det(A);24const detValue = Number(detA);25console.log(`Determinant: ${detValue.toFixed(4)}\n`);2627// Trace28const traceA = trace(A);29const traceValue = Number(traceA.at(0));30console.log(`Trace: ${traceValue.toFixed(4)}\n`);3132// Matrix inverse33const invA = inv(A);34console.log("Inverse of A:");35console.log(`${invA.toString()}\n`);3637// Matrix norms38const frobNorm = norm(A, "fro");39console.log(`Frobenius norm: ${Number(frobNorm).toFixed(4)}\n`);4041// SVD Decomposition42console.log("SVD Decomposition:");43console.log("-".repeat(50));4445const B = tensor([46  [1, 2],47  [3, 4],48  [5, 6],49]);5051const svdResult = svd(B);52const U = svdResult[0];53const S = svdResult[1];54const Vt = svdResult[2];55console.log("U (left singular vectors):");56console.log(U.toString());57console.log("\nS (singular values):");58console.log(S.toString());59console.log("\nVt (right singular vectors transposed):");60console.log(`${Vt.toString()}\n`);6162// QR Decomposition63console.log("QR Decomposition:");64console.log("-".repeat(50));6566const C = tensor([67  [1, 2],68  [3, 4],69  [5, 6],70]);7172const qrResult = qr(C);73const Q = qrResult[0];74const R = qrResult[1];75console.log("Q (orthogonal matrix):");76console.log(Q.toString());77console.log("\nR (upper triangular):");78console.log(`${R.toString()}\n`);7980// LU Decomposition81console.log("LU Decomposition:");82console.log("-".repeat(50));8384const D = tensor([85  [2, 1],86  [1, 2],87]);8889const luResult = lu(D);90const P = luResult[0];91const L = luResult[1];92const U_lu = luResult[2];93console.log("P (permutation):");94console.log(P.toString());95console.log("L (lower triangular):");96console.log(L.toString());97console.log("\nU (upper triangular):");98console.log(U_lu.toString());99console.log();100101// Solving linear systems: Ax = b102console.log("Solving Linear System Ax = b:");103console.log("-".repeat(50));104105const A_sys = tensor([106  [3, 1],107  [1, 2],108]);109const b = tensor([9, 8]);110111const x = solve(A_sys, b);112console.log("Solution x:");113console.log(x.toString());114115console.log("\n✓ Linear algebra operations complete!");116

Console Output

$ npx tsx 20-linear-algebra/index.ts
Console output showing determinant, trace, inverse, norms, SVD/QR/LU decompositions, and linear system solutions