Skip to main content

linear-algebra

PyPI - Python Version PyPI - Version GitHub License PyPI - Downloads codecov

About

This project builds on SymPy's Matrix class and is designed for students taking NUS MA1522 Linear Algebra for Computing. It has implementations of most of the algorithms taught during the course (as of Sem 1 AY24/25).

Key Features

  1. Import matrices directly from $\rm\LaTeX$ or string/list representations.
  2. Step-by-step workings for most algorithms (including LU Factorisation, SVD, QR, diagonalization, and more).
  3. Enhanced symbolic matrix class with:
    • Matrix creation from lists, $\rm\LaTeX$, or random values.
    • Matrix decompositions: REF, RREF, LU, QR, SVD, diagonalization.
    • Vector space operations: orthogonalization, projections, basis manipulation, subspace intersection, and more.
    • Eigenvalue/eigenvector computations and characteristic polynomials.
    • Custom pretty-printing and $\rm\LaTeX$ formatting, including augmented matrices.
    • Support for both exact symbolic and numerical computations.
    • Utilities for displaying results in Jupyter/IPython or standard Python.
  4. Follows MA1522 syllabus conventions for linear algebra and provides detailed, educational output.
  5. Rich set of custom types for representing decompositions, solutions, and factorizations.

Installation and Usage

Installation

Prerequisites

This project is best supported in a Jupyter Notebook environment with Python 3.10+. You can download Python from here.

Alternatively, you can use a minimal GUI developed by @MarcusMa06-code here.

Install Dependencies

It is recommended to use a virtual environment for managing dependencies.

  1. Create a virtual environment:

    python -m venv venv
    
  2. Activate the virtual environment:

    • On Windows:
      venv\Scripts\activate
      
    • On macOS/Linux:
      source venv/bin/activate
      
  3. Install the library:

    pip install ma1522-linear-algebra
    

    It is recommended to use a Jupyter Notebook environment to run the code.

    pip install notebook
    

Usage

Create a Jupyter Notebook test.ipynb. Within the notebook, run the following code.

from ma1522 import *

# Create Matrix objects
A = Matrix([[1, 2, 3],
            [4, 5, 5],
            [7, 8, 9]])

b = Matrix([[1], 
            [2], 
            [3]])

# Join matrices along the columns via `row_join`. 
augmented_matrix = A.aug_line().row_join(b)

# `aug_line` adds a visual line that can be seen using `display`
display(augmented_matrix)

# Solution to the matrix equation Ax = b can be found using `solve`.
A.solve(rhs=b)

# Alternatively, the full steps with LU Factorisation can be found using `ref` with the appropriate options.
augmented_matrix.ref(verbosity=2)

Documentation of more functions can be found here.

More usage examples can be found under tutorials.

Live demonstration of the library can be found here.

Offline Documentation

An offline version of the documentation is available for download from the Releases page. This is useful for exam when you may not have internet access.

To use the offline documentation:

  1. Download linear-algebra-docs-offline.zip from the latest release
  2. Extract the ZIP to a folder
  3. Open index.html in your browser

A quick reference guide is also available as a function in the library:

from ma1522 import sympy_commands
sympy_commands()

Building from Source

If the offline ZIP is not available in the releases, you can build it yourself:

  1. Clone the repository:

    git clone https://github.com/YeeShin504/linear-algebra.git
    cd linear-algebra
    
  2. Install documentation dependencies:

    pip install mkdocs-material mkdocs-jupyter
    
  3. Build the documentation:

    mkdocs build
    
  4. The documentation will be in the site/ folder. Open site/index.html in your browser.

Credits

I would like to thank @DenseLance for his contributions.

Metadata

Release files for ma1522-linear-algebra 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for ma1522-linear-algebra 1.2.0
File Size Uploaded Provenance
ma1522_linear_algebra-1.2.0.tar.gz 59.3 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for ma1522-linear-algebra 1.2.0
File Interpreter ABI Platform
ma1522_linear_algebra-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 109.2 kB

Release files / ma1522_linear_algebra-1.2.0.tar.gz

Download URL ma1522_linear_algebra-1.2.0.tar.gz
Size 59.3 kB
Tags Source
SHA-256 checksum
How to use checksums
ae5d2a94f21745bbeab2dbae035214395483edd2bba46afbd4799c63a4e6c70c
BLAKE2b-256 checksum
How to use checksums
9f81a217c1ecb700145c7d0bf96a6c925eef9aa9dbbaab5d5658a6fa85768c74
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 20, 2026.

Transparency log

Release files / ma1522_linear_algebra-1.2.0-py3-none-any.whl

Download URL ma1522_linear_algebra-1.2.0-py3-none-any.whl
Size 50.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e581116f99ee5f0c15554166b180507f8ec070bf68efe8943ec9f0318eb99577
BLAKE2b-256 checksum
How to use checksums
8d626429b91755b056e3eb8bb9dc3003d42f6d2a7aef8a8d8045b611b4c815f8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 20, 2026.

Transparency log

Security for ma1522-linear-algebra 1.2.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for ma1522_linear_algebra-1.2.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 20, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page