Skip to content
Nguyen Hoang Duong edited this page Jun 6, 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 as well as the articles on the website and in this wiki to learn new things.

This page is the Home page of the lnagb.js wiki, and it is only the beginning; scroll down (or click here) for a full list of pages in this wiki. The list is also in the sidebar on the right. 👉

Table of Content

  1. What is lnagb.js?
  2. How do the wiki and the website differ?
  3. Pages in this wiki
    1. Download and Installation
    2. Examples
    3. How lnagb.js works
    4. Development
    5. Others

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

Loading lnagb.js
Linear equations & systems of linear equations
Matrices
Matrix transformations with three.js
Visualizing vectors with three.js

How lnagb.js works

How lnagb.js encodes linear equations & systems of linear equations
How lnagb.js encodes matrices
How lnagb.js encodes vectors

Development

Components of lnagb.js
Workflow
Developer's notebook
Git branches
Directory structure
Difference between UMD and ESM

Others

Start coding Linear Algebra on your own!