Python/linear_algebra
pre-commit-ci[bot] 756bb268eb
[pre-commit.ci] pre-commit autoupdate (#6629)
* [pre-commit.ci] pre-commit autoupdate

updates:
- [github.com/psf/black: 22.6.0 → 22.8.0](https://github.com/psf/black/compare/22.6.0...22.8.0)
- [github.com/asottile/pyupgrade: v2.37.0 → v2.38.2](https://github.com/asottile/pyupgrade/compare/v2.37.0...v2.38.2)
- https://gitlab.com/pycqa/flake8https://github.com/PyCQA/flake8
- [github.com/PyCQA/flake8: 3.9.2 → 5.0.4](https://github.com/PyCQA/flake8/compare/3.9.2...5.0.4)
- [github.com/pre-commit/mirrors-mypy: v0.961 → v0.981](https://github.com/pre-commit/mirrors-mypy/compare/v0.961...v0.981)
- [github.com/codespell-project/codespell: v2.1.0 → v2.2.1](https://github.com/codespell-project/codespell/compare/v2.1.0...v2.2.1)

* Fix a long line

* Update sol1.py

* Update sol1.py

* lambda_

* Update multi_level_feedback_queue.py

* Update double_ended_queue.py

* Update sequential_minimum_optimization.py

* Update .pre-commit-config.yaml

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
Co-authored-by: Christian Clauss <cclauss@me.com>
2022-10-03 22:00:45 +02:00
..
src [pre-commit.ci] pre-commit autoupdate (#6629) 2022-10-03 22:00:45 +02:00
__init__.py Add __init__.py files in all the directories (#2503) 2020-09-28 19:42:36 +02:00
README.md Rewrite parts of Vector and Matrix (#5362) 2021-10-27 11:48:43 +08:00

Linear algebra library for Python

This module contains classes and functions for doing linear algebra.


Overview

class Vector

    • This class represents a vector of arbitrary size and related operations.

    Overview of the methods:

    • constructor(components) : init the vector
    • set(components) : changes the vector components.
    • __str__() : toString method
    • component(i): gets the i-th component (0-indexed)
    • __len__() : gets the size / length of the vector (number of components)
    • euclidean_length() : returns the eulidean length of the vector
    • operator + : vector addition
    • operator - : vector subtraction
    • operator * : scalar multiplication and dot product
    • copy() : copies this vector and returns it
    • change_component(pos,value) : changes the specified component
  • function zero_vector(dimension)

    • returns a zero vector of 'dimension'
  • function unit_basis_vector(dimension, pos)

    • returns a unit basis vector with a one at index 'pos' (0-indexed)
  • function axpy(scalar, vector1, vector2)

    • computes the axpy operation
  • function random_vector(N, a, b)

    • returns a random vector of size N, with random integer components between 'a' and 'b' inclusive

class Matrix

    • This class represents a matrix of arbitrary size and operations on it.

    Overview of the methods:

    • __str__() : returns a string representation
    • operator * : implements the matrix vector multiplication implements the matrix-scalar multiplication.
    • change_component(x, y, value) : changes the specified component.
    • component(x, y) : returns the specified component.
    • width() : returns the width of the matrix
    • height() : returns the height of the matrix
    • determinant() : returns the determinant of the matrix if it is square
    • operator + : implements the matrix-addition.
    • operator - : implements the matrix-subtraction
  • function square_zero_matrix(N)

    • returns a square zero-matrix of dimension NxN
  • function random_matrix(W, H, a, b)

    • returns a random matrix WxH with integer components between 'a' and 'b' inclusive

Documentation

This module uses docstrings to enable the use of Python's in-built help(...) function. For instance, try help(Vector), help(unit_basis_vector), and help(CLASSNAME.METHODNAME).


Usage

Import the module lib.py from the src directory into your project. Alternatively, you can directly use the Python bytecode file lib.pyc.


Tests

src/tests.py contains Python unit tests which can be run with python3 -m unittest -v.