TODO: any info on building + running?
TIBasic is used for building to a format the calculator understands. After building, the .8xp files can be transferred to the calculator directly. I just use the file names (without the extension) as the program names.
Here I try to mention any relevant information on the programs.
Quadratic equation solver. AX^2 + BX + C = 0 Handles linear equations as well with A=0.
Warning: Uses A and B matrix slots, and therefore overrides them even if they are currently in use.
Reflect a vector d on a surface with a vector n. Uses matrix I and J for working storage. Stores result in Ans.
Get a column C from a matrix. Fill in expected column in Ans, and matrix in matrix slot A. Uses matrix slot I for storage.
Result is found in Ans.
QR factorization/decomposition using Gram Schmidt process. Uses way too many matrix slots as working variables while calculating the Gram Schmidt process. Can probably be optimized. TI Basic gets hard to read once programs get big… Calculates result in matrix slot B and C.
NOTE: Does seem to converge to something for the matrices I’ve tried, but I still need to debug and see if there are any issues. Some numerical inaccuracies happen, probably because of QR decomposition using Gram-Schmidt instead of Householder transforms or Givens rotations.
Uses the above QR factorization/decomposition to find eigenvalues. Due to the above algorithm using too many matrix slots, the resulting matrix is saved in matrix slot I. If it converged after the set number of iterations, the diagonal should contain the eigenvalues. The matrix should in theory have converged to a triangular matrix with zeros (or close) below the diagonal. Only symmetric matrices are guaranteed convergence. I need to look more into the theory later, but wanted a quick tool to verify eigenvalue calculations :)
This algorithm assumes a symmetric square matrix in matrix slot A. For calculations matrix slots B,C (power method and similarity transform), D (similarity transform matrix), E (similarity transform total), F, G (temporary result storage), H (safekeeping of A), I (temp storage of eigenvector, at end due to not thinking I needed it earlier) are used. A similarity transform using Householder reflections are used to reduce the eigenspace so the power method (eigenpwr) can be used iteratively to find eigenvalue/eigenvector pairs. The result is stored in matrix slots B (a diagonal matrix of eigenvalues) and C (a matrix with the corresponding eigenvectors as columns). Fewer matrix slots could probably be used. I focused on keeping it simple. BASIC on TI84Plus quickly gets tedious to read lol.