mirror of
https://github.com/TheAlgorithms/JavaScript.git
synced 2026-03-13 15:21:15 +08:00
Add files via upload
This commit is contained in:
114
linear-algebra-javascript/README.md
Normal file
114
linear-algebra-javascript/README.md
Normal file
@@ -0,0 +1,114 @@
|
||||
# Linear algebra library for JavaScript
|
||||
|
||||
This library contains some useful classes and functions for dealing with linear algebra in JavaScript.
|
||||
The library was orginal written in **TypeScript** and then compiles into pure JavaScript.
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
- class Vector : This class represents a vector of arbitray size and operations on it.
|
||||
- constructor Vector(N) : creates a zero vector of size N
|
||||
- constructor Vector(N, components) : creates a vector of size N with the given components.
|
||||
- createUnitBasis(pos) : converts this vector in a unit basis vector and returns it.
|
||||
- component(pos) : returns the specified component (indexing at 0)
|
||||
- changeComponent(pos, value) : change the specified component.
|
||||
- toString() : returns a string representation of this vector.
|
||||
- size() : returns the size of the vector. (not the eulidean length!)
|
||||
- eulideanLength() : computes the eulidean length of this vector.
|
||||
- add(other) : vector addition, returns the rersult.
|
||||
- sub(other) : vector subtraction, returns the rersult.
|
||||
- dot(other) : computes the dot-product and returns it.
|
||||
- scalar(s) : scalar (s) multiplication. returns the result.
|
||||
- norm() : normalizes this vector and returns it.
|
||||
- equal(other) : returns true if the vectors are equal, otherwise false.
|
||||
|
||||
- function unitBasisVector(N,pos) : returns a unit basis vector of size N with a One on position 'pos'
|
||||
- function randomVectorInt(N,a,b) : returns a random vector with integer components (between 'a' and 'b') of size N.
|
||||
- function randomVectorFloat(N,a,b) : returns a random vector with floating point components (between 'a' and 'b') of size N.
|
||||
|
||||
- class Matrix : This class represents a matrix of arbitrary size and operations on it.
|
||||
- constructor(rows, cols) : creates a zero matrix of dimension rows x cols.
|
||||
- constructor(rows, cols, components) : creates a matrix with fix numbers of dimension rows x cols.
|
||||
- component(x,y) : returns the specified component.
|
||||
- changeComponent(x,y,value) : changes the specified component with the new value 'value'.
|
||||
- toString() : returns a string representation of this matrix.
|
||||
- dimension() : returns the dimension of this matrix as number arras [rows,cols].
|
||||
- add(other) : returns the result of the matrix addition.
|
||||
- equal(other) : returns true if the matrices are equal, otherwise false.
|
||||
- scalar(c) : returns the result of the matrix-scalar multiplication.
|
||||
---
|
||||
|
||||
## Documentation
|
||||
|
||||
The module is well documented in its source code. Look in the TypeScript file ```la_lib.ts```.
|
||||
|
||||
---
|
||||
|
||||
## Usage
|
||||
|
||||
You will find the library in the **src** directory its called ```la_lib.js```. You simply need to
|
||||
include this library in your project **(you don't install anything)**. After that:
|
||||
|
||||
```js
|
||||
var x = LinearAlgebra.Vector(...);
|
||||
```
|
||||
|
||||
The namespace LinearAlgebra contains useful classes and functions for dealing with linear algebra under JavaScript.
|
||||
|
||||
Some examples:
|
||||
|
||||
```js
|
||||
// ---------------------------- Examples ------------------------------------------
|
||||
|
||||
// creates vectors
|
||||
var x = new LinearAlgebra.Vector(5, [1, 2, 3, 4, 5]);
|
||||
var y = new LinearAlgebra.Vector(5, [1, 2, 3, 4, 5]);
|
||||
|
||||
// prints size of the vector
|
||||
console.log(x.size()); // ==> 5
|
||||
|
||||
// changes the 2-th component with 7
|
||||
//x.changeComponent(2,7);
|
||||
|
||||
// print the 2-th component.
|
||||
console.log(x.component(2)); // ==> 3
|
||||
|
||||
// prints the full vector as string.
|
||||
console.log(x.toString()); // ==> (1,2,3,4,5)
|
||||
|
||||
// vector addition
|
||||
console.log(x.add(y).toString()); // ==> (2,3,6,8,10)
|
||||
|
||||
//console.log(x.createUnitBasis(1).toString());
|
||||
|
||||
// computes the dot-product
|
||||
console.log(x.dot(y)); // ==> 55
|
||||
|
||||
// computes and prints the scalar-product
|
||||
console.log(x.scalar(5).toString()); // ==> (5,10,15,20,25)
|
||||
|
||||
// creates a unit basis vector
|
||||
console.log(LinearAlgebra.unitBasisVector(3, 0).toString()); // ==> (1,0,0)
|
||||
|
||||
// creates random vectors
|
||||
console.log(LinearAlgebra.randomVectorInt(3, 0, 5).toString());
|
||||
console.log(LinearAlgebra.randomVectorFloat(3, 0, 5).toString());
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Tests
|
||||
|
||||
Go in the directory of the project and type in:
|
||||
```npm install```
|
||||
```npm test```
|
||||
The test-suite use the JavaScript test-framework **mocha**.
|
||||
|
||||
---
|
||||
|
||||
## Contributing
|
||||
|
||||
You can contribute to this project. Feel free and pull request some new features or documention.
|
||||
**TODO:** Global functions for special matrices.
|
||||
**TODO:** Documention of the classes and functions.
|
||||
Reference in New Issue
Block a user