Skip to content

Instantly share code, notes, and snippets.

@FloooD
FloooD / squaremat.lua
Created April 5, 2011 16:28 — forked from leegao/squaremat.lua
only for diagonalizable 2x2 matrices
function m_pow(matrix, n)
local tr = matrix[1][1]+matrix[2][2] -- trace of matrix
local s = math.sqrt((matrix[1][1]-matrix[2][2])^2+4*matrix[1][2]*matrix[2][1]) -- sqrt(tr^2 - 4*determinant)
local r1 = 0.5*(tr+s) --1st eigenvalue
local r2 = tr-r1 --2nd eigenvalue
local r1n = r1^n
local r2n = r2^n