Programming libraries for C linear algebra

odiakkoh
Messages
8
Reaction score
0
Hi,

Can anyone recommend a freely available library in C or C++ that is able to calculate eigenvalues and eigenvectors of generalized eigenvalue problems. e.g. of the type:

Au = LBu

where A and B are matrices, L is the eigenvalue, and u is the eigenvector.

N.B. the GNU Scientific library was my first thought, but it can only do standard eigenvalue problems, not those of the generalized type.
 
Physics news on Phys.org
blas doesn't have eigenvalue stuff?. BUt you can try CLAPACK and maybe look at lidia. you can tyr to find some at netlib.org.

Or you can try numerical recipes code(usually for teaching purposes but still usable).
www.nr.com.
 
CLAPACK does the job

Thanks a lot! - CLAPACK does the job.

For anyone else interested in doing matrix-type algebra in C here's some useful CLAPACK links:

CLAPACK can be downloaded from here: http://www.netlib.org/clapack/
Documentation can be found here: http://www.netlib.org/lapack/lug/index.html

Explanations for function parameters are found in the code.


It's a bit fiddly to install, and link to the libraries (all three of them) bundled in the package. The interface will feel quite archaic to anyone accustomed to the niceities of object orientated languages (such as myself). But it does do the job.

Oh, and one last hint for anyone trying to use this: take note of the documentation explaining how matrices are stored in memory: particularly in what order array elements correspond to matrix elements. I didn't bother; made an assumption; got it wrong (damn! I had a 50:50 chance!), and spent a few hours wondering why things weren't working quite right!
 
Hey, guys, I installed CLAPACK on my Mac without much trouble. However it failes on solving this simple equation Ax = b, where A is singular, yet the routine dgesv_() didn't detect it. Can you test the case on you machine? Here is the input.

Matrix:
-10.0 -5.0
6.0 3.0

Vector:
0 0.000000
1 1.000000

info = 0

Solution from CLAPACK:
0 1125899906842624.000000
1 -2251799813685248.000000
 
Thread 'Determine whether ##125## is a unit in ##\mathbb{Z_471}##'
This is the question, I understand the concept, in ##\mathbb{Z_n}## an element is a is a unit if and only if gcd( a,n) =1. My understanding of backwards substitution, ... i have using Euclidean algorithm, ##471 = 3⋅121 + 108## ##121 = 1⋅108 + 13## ##108 =8⋅13+4## ##13=3⋅4+1## ##4=4⋅1+0## using back-substitution, ##1=13-3⋅4## ##=(121-1⋅108)-3(108-8⋅13)## ... ##= 121-(471-3⋅121)-3⋅471+9⋅121+24⋅121-24(471-3⋅121## ##=121-471+3⋅121-3⋅471+9⋅121+24⋅121-24⋅471+72⋅121##...
It is well known that a vector space always admits an algebraic (Hamel) basis. This is a theorem that follows from Zorn's lemma based on the Axiom of Choice (AC). Now consider any specific instance of vector space. Since the AC axiom may or may not be included in the underlying set theory, might there be examples of vector spaces in which an Hamel basis actually doesn't exist ?
##\textbf{Exercise 10}:## I came across the following solution online: Questions: 1. When the author states in "that ring (not sure if he is referring to ##R## or ##R/\mathfrak{p}##, but I am guessing the later) ##x_n x_{n+1}=0## for all odd $n$ and ##x_{n+1}## is invertible, so that ##x_n=0##" 2. How does ##x_nx_{n+1}=0## implies that ##x_{n+1}## is invertible and ##x_n=0##. I mean if the quotient ring ##R/\mathfrak{p}## is an integral domain, and ##x_{n+1}## is invertible then...
Back
Top