Scilab Home Page | Wiki | Bug Tracker | Forge | Mailing List Archives | Scilab Online Help | File Exchange
ATOMS : Linear Algebra details
Login with GitLab

Linear Algebra

A collection of algorithms for linear algebra
(34777 downloads for this version - 70891 downloads for all versions)
Details
Version
0.4
A more recent valid version exists: 0.4.1
Authors
Michael Baudin
Sylvan Brocard
Owner Organization
Scilab Enteprises
Maintainers
Stéphane MOTTELET
Antoine ELIAS
Michael BAUDIN
Administrator ATOMS
Clement DAVID
Category
License
Dependency
Creation Date
December 12, 2016
Source created on
Scilab 6.0.x
Binaries available on
Scilab 6.0.x:
Windows 32-bit Windows 64-bit Linux 64-bit
Scilab 6.1.x:
Windows 64-bit macOS Linux 64-bit
Scilab 2023.0.x:
macOS Linux 64-bit Windows 64-bit
Install command
--> atomsInstall("linalg")
Description
            The goal of this toolbox is to provide a collection of 
algorithms for linear algebra.

These algorithms are most of the time already provided by Scilab, but 
are available here for comparison purpose.

The linalg_pow function is much faster than Scilab's pow, 
when the exponent is large. 
The algorithm used here is based on binary exponentiation, and 
requires only log2(p) iterations, compared to p iterations for the 
naive pow.
For example, for p=99999, it was found that linalg_pow requires 0.003 
seconds for a 5-by-5 matrix, while Scilab requires 2.7 seconds.

The linalg_zhbev function provides the same feature as Lapack's 
ZHBEV, that is, computes the eigenvalues of a complex hermitian band matrix. 
The other method in Scilab to compute eigenvalues of sparse matrices 
is to use Arnoldi's iterations. 
This does not make use of the Hermitian structure of some matrices. 

The solution of A*X=B in Scilab is based on the backslash operator.
The backslash operator is switching from Gaussian Elimination (with 
pivoting) to Linear Least Squares when the condition number of 
the matrix is larger than roughly 10^8. 
This switch is annoying for matrices which condition number are 
between 10^8 and 10^16, where the Gaussian Elimination can 
produce a more accurate result than Least Squares. 
The linalg_gesv function provided in this module is a direct 
interface to the Gaussian Elimination from Lapack. 
In some cases, this function can produce significantly more accurate 
solution than backslash.

Features :
-------

 * linalg_chol — Computes the Cholesky decomposition.
 * linalg_condeig — Computes the condition number of the eigenvalues of a
matrix.
 * linalg_expm — Computes the exponential of a matrix.
 * linalg_factorlu — Computes the LU decomposition without pivoting.
 * linalg_factorlupivot — Computes the LU decomposition with pivoting.
 * linalg_gaussnaive — Solves a linear equation by Gauss method and no
pivoting.
 * linalg_gausspivotal — Computes the solution of a linear equation with Gauss
and row pivoting.
 * linalg_gausspivotalnaive — Computes the solution of a linear equation with
Gauss and row pivoting.
 * linalg_hbandL — Converts a complex hermitian band matrix into its compact
form.
 * linalg_pow — Computes A^p
 * linalg_powfast — Computes A^p
 * linalg_rayleighiteration — Computes approximated a pair of eigenvalue and
eigenvector.
 * linalg_solvelu — Computes the solution of a linear equation, given its LU
decomposition.

BLAS/LAPACK
 * linalg_dgemm — Computes D = Alpha*A*B+ Beta*C for a real matrix.
 * linalg_dgesv — Solves A*X = B for real equations.
 * linalg_dsyev — Computes the eigenvalues of a symmetric real matrix.
 * linalg_gemm — Computes D = Alpha*A*B+ Beta*C for a real or complex matrix.
 * linalg_gesv — Computes the real or complex solution X of A*X=B.
 * linalg_zgemm — Computes D = Alpha*A*B+ Beta*C for a complex matrix.
 * linalg_zgesv — Solves A*X = B for complex equations.
 * linalg_zhbev — Computes the eigenvalues of a complex hermitian band
matrix.
            
Files (10)
[155.31 kB]
Windows 64-bit binary for Scilab 6.1.x

[121.49 kB]
Source code archive

[221.89 kB]
macOS binary for Scilab 2023.0.x

[222.50 kB]
Linux 64-bit binary for Scilab 2023.0.x

[443.86 kB]
Windows 64-bit binary for Scilab 2023.0.x

[251.37 kB]
Windows 32-bit binary for Scilab 6.0.x
Windows version (i686)
Automatically generated by the ATOMS compilation chain

[252.01 kB]
Windows 64-bit binary for Scilab 6.0.x
Windows version (x64)
Automatically generated by the ATOMS compilation chain

[166.39 kB]
Linux 64-bit binary for Scilab 6.0.x
Linux version (x86_64)
Automatically generated by the ATOMS compilation chain

[221.09 kB]
macOS binary for Scilab 6.1.x

[228.92 kB]
Linux 64-bit binary for Scilab 6.1.x

News (0)
Comments (3)     Leave a comment 
Comment from Marwan Benyoussef -- February 7, 2017, 05:27:31 PM    
Hello guys, 

Thank you for this excellent module!

Just one question on linalg_dgesv — Solves A*X = B for real equations, 
Is it supposed to work only for squared matrices?

>A=[1,2,3;4,5,6;7,8,9]
>B=[1,2,3]
>linalg_dgesv(A,B)
                  !--error 999 
linalg_dgesv: Wrong size for input argument #2: 3-by-3 matrix expected.


Thank you!

Brgds,
Marwan 
Comment from Hani Ibrahim -- November 11, 2019, 07:57:57 PM    
linalg 0.4 for macOS
====================
For macOS user I compiled linalg 0.4 for macOS. You can download it at
hani-ibrahim.de/public/scilab/

Install it via -->
atomsInstall("~/Downloads/linalg-0.4_6.0-bin.x86_64.darwin.zip")

You may need to adjust the path. Works for me on macOS Mojawe (10.14) and Scilab 6.0.2.

Have fun.
Comment from Masahiro Fujimoto -- July 27, 2020, 10:49:57 AM    
Does this package contain a function which finds the jordan normal form and its canonical
basis of n-square matrix A?
If not, is there any informations on the package containing such funtion?
Leave a comment
You must register and log in before leaving a comment.
Login with GitLab
Email notifications
Send me email when this toolbox has changes, new files or a new release.
You must register and log in before setting up notifications.