{"id":18318442,"url":"https://github.com/jkfitzsimons/special_matrices","last_synced_at":"2025-04-09T13:54:22.986Z","repository":{"id":86058274,"uuid":"50777191","full_name":"jkfitzsimons/Special_Matrices","owner":"jkfitzsimons","description":"A repository of matrices with special inversion properties","archived":false,"fork":false,"pushed_at":"2016-01-31T15:09:00.000Z","size":3,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-15T07:51:17.615Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jkfitzsimons.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-01-31T14:01:41.000Z","updated_at":"2018-07-21T21:22:07.000Z","dependencies_parsed_at":"2023-03-03T11:01:19.143Z","dependency_job_id":null,"html_url":"https://github.com/jkfitzsimons/Special_Matrices","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkfitzsimons%2FSpecial_Matrices","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkfitzsimons%2FSpecial_Matrices/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkfitzsimons%2FSpecial_Matrices/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jkfitzsimons%2FSpecial_Matrices/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jkfitzsimons","download_url":"https://codeload.github.com/jkfitzsimons/Special_Matrices/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248054218,"owners_count":21039951,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-05T18:09:37.609Z","updated_at":"2025-04-09T13:54:22.964Z","avatar_url":"https://github.com/jkfitzsimons.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Special Cases for Matrix Inversion / Linear Solvers\nA repository of matrices with special inversion properties. We are interested in matrices A, such that solving Ax = B has computational complexity under O(n^3). These methods look at both exact and approximate direct solvers.\n\n[NOTE: This page is a work in progress and will never be a finished resource. If you identify any method that should be included please push to the repository. Thank you.]\n\n## Diagnol matrices O(n)\nInverse is a diagnol matrix with each element being the inverse of the corresponding original diagnol element. \n\n## Block diagnol matrices O(\\sum_i n_i^3)\nThe inverse is also is a block diagnol matrix with each block being the inverse of the corresponding block of the original matrix\n\n## Low rank matrices\nThese matrices have a fixed rank m \u003c\u003c n. In such cases we endeavour to utilise the fact that less singular have to be inverted.\n\n### Nystrom's method O(nm^2)\nThis method uses subsampling to of the matrix under consideration in order to approximate the eigen spectrum of the full matrix. A great resource for those interested in Nystrom's method is [Nicholas Arcolano's Thesis](http://arcolano.com/wp-content/uploads/2013/10/arcolano2011thesis.pdf).\n\n## Toeplitz matrices O(nlog(n))\nToeplitz matrices have a special structure of their elements whereby each consecutive row is equal to it's previous row but shifted one element to the right. This isn't exactly a rigourous definition but for now I will leave it to [Wikipedia](https://en.wikipedia.org/wiki/Toeplitz_matrix) to explain in greater depth. Check out [A Superfast Algorithm for Toeplitz Systems of Linear Equations](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.116.3297\u0026rep=rep1\u0026type=pdf) for a full description of the solver.\n\n## Vandamonde matrices O(c)\nThe vandermonde matrix is an interesting matrix where each column is a vector raised to a higher elementwise power. Again for a more formal description check out [Wikipedia](https://en.wikipedia.org/wiki/Vandermonde_matrix). There is a closed form solution for the matrix [inverse](http://ntrs.nasa.gov/archive/nasa/casi.ntrs.nasa.gov/19660023042.pdf) and the determinant is also easily found.\n\n## Hierarchical matrices\n\nHiearchical matrices utilise blockwise low rank matrix approximations for low memory storage and fast matrix opperations. Some methods are outlined below. \n\n### HODLR matrices O(nlog(n))\nHierarchical Off Diagnol Low Rank (HODLR) Matrices utilise a recursive off diagnol structure. There is a good paper which clearly explains this factoring and inversion [by Ambikasaran et al.](http://arxiv.org/pdf/1403.6015.pdf)\n\n### Fast Multipole Methods O(nm^2 or nlog(1/\\eps))\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkfitzsimons%2Fspecial_matrices","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjkfitzsimons%2Fspecial_matrices","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjkfitzsimons%2Fspecial_matrices/lists"}