Skip to content
Nguyen Hoang Duong edited this page May 30, 2020 · 28 revisions

Welcome to the lnagb.js wiki!

lnagb.js is a project started by Nguyen Hoang Duong (@you-create) in order to learn how Linear Algebra can be programmed into code. It is primarily meant for educational purposes: you are encouraged to read the code and/or read articles on the website or in this wiki to learn something new. And, you've just reached its wiki's home page!

This page is only the beginning; scroll down (or click here) for a full list of pages in this wiki.

What is lnagb.js?

lnagb.js is a JavaScript library that digitalizes the subject of Linear Algebra in the form of JavaScript code. It is currently being developed solely by a Linear Algebra student.

The library encodes Linear Algebra quantities (e.g. linear equations, vectors, matrices, etc.) in form of classes. Each class then has class methods that encode operations specific to the quantity that the class encodes. For example, lnagb.js has a class dedicated to matrices, and you can create a new instance of that class with:

let a = new Matrix();

Here, Matrix is a class inside lnagb.js, and the instance (in this case, a) now encodes, or represents, a matrix. It currently encodes a 2-by-3 zero matrix. We can change its dimensions and entries like this:

a.setDimensions( 3, 3 ).set( 6, 7, - 12, 9, - 2, 8, 4, - 5, 10 )

Now a encodes a 3-by-3 matrix. Here, setDimensions and set are class methods which manipulate our instance. setDimensions is used to set the number of rows and columns of the matrix, and set is used to set the entries for that matrix. These are only 2 out of many class methods inside the class Matrix. Those class methods can perform matrix operations, too:

a.addRowTimesScalarToRow( 2, 3, - 1 ); // Elementary row operation type III
a.reduce( true ); // Reduce the matrix to reduced row-echelon form
a.transpose(); // Transpose the matrix

That is only a small demonstration of lnagb.js. Don't forget, there are linear equations, vectors, systems, spaces, etc., all of which have been encoded into one JavaScript library.

How do the wiki and the website differ?

The website of lnagb.js was initially a place for the lnagb.js documentation, and currently most of it is still for the documentation. The documentation shows, in great details, what each class in lnagb.js does and what each method inside that class does. As such, it is a place to go to when you need help on how to use a function in lnagb.js.

The wiki, on the other hand, does not dive into explaining what each class method does. Instead, it has every information you need to start using lnagb.js, have a good understanding of how lnagb.js works, and have a quick overview of how the project is organized and developed. It is, hopefully, a good place for you to accumulate new knowledge for yourself to begin coding Linear Algebra someday. Take a look at the Pages in this wiki section below to see what the wiki has to offer.

Still don't know where to go?

  • Want to learn Linear Algebra? Read books and/or take a course!
  • Want to learn Linear Algebra and how to use lnagb.js? The Learning Area on the lnagb.js website is promised to provide you with what you need. Unfortunately, it is currently a work in progress and not yet available.
  • Just want to learn how to use lnagb.js? Start with the Getting Started section on the lnagb.js website to familiarize yourself with the components of lnagb.js, then turn to the Documentation to dive deeper.
  • Want to try lnagb.js without downloading it? Head to the Lab!
  • Need help downloading lnagb.js or including it in your project? Congratulations! You're in the right place! Scroll down and find the page you are looking for.
  • Want to learn how lnagb.js works? Want to start coding Linear Algebra on your own? More congratulations! See the pages listed below, you will find what you need.

Pages in this wiki

For easier navigation, the pages are grouped into different categories. Clickable entries lead you to the desired page, while ones that are not links are pages being worked on and have not yet finished.

Download and Installation

lnagb.js

How to download lnagb.js
How to load lnagb.js
Setting up for a Node project
How to build lnagb.js manually

Website, wiki & other resources

How to download the lnagb.js website
How to download the lnagb.js wiki
How to compile the documentation manually

Examples

How lnagb.js works

Development

Developer's notebook
Git branches
Directory structure

Others

Start coding Linear Algebra on your own!