lapack++ und matrix-inversion



  • hallo zusammen,

    ich möchte in c++ eine komplexe matrix invertieren und mir ist zu ohren gekommen, dass das mit lapack++ kein problem sein soll. ich kenn mich mit dieser bibliothek nicht aus und könnte da etwas hilfe gebrauchen. installiert habe ich jetzt lapackpp-2.5.1. mein erster test lässt aber schon darauf schließen, dass da was schief gelaufen ist:

    #include <iostream>
    #include <lapackpp.h>
    using namespace std;
    
    void main () {
    int N=2;
      LaGenMatDouble A(N,N);
      LaVectorDouble x(N), b(N);
    
      A(0,0)=2; A(0,1)=0;
      A(1,0)=0; A(1,1)=3;
    
      b(0)=2;
      b(1)=3;
    
      LaLinSolve(A,x,b);
    }
    

    1>c:\projektarbeit\lapack-test\main.cpp(19) : error C3861: "LaLinSolve": Bezeichner wurde nicht gefunden.

    und nun zur eigentlichen inversion. ich hab auf http://www.netlib.org/lapack/complex/ die funktion cgetri für die inversion einer komplexen matrix gefunden. verstehe aber nicht ganz, wie ich die benutzen kann. sie soll ja in lapack/complex definiert sein, die datei ist in meinem paket nicht enthalten gewesen.
    wenn jemand etwas licht ins dunkel bringen könnte, wäre ich recht dankbar.

    gruß christian



  • Dir fehlt entweder ein Header-File, oder die Funktion gibt es nicht. Das müsste die Fehlermeldung sein.

    Was soll das denn 😕



  • entschuldigt bitte den doppelpost. ich wusste nicht so genau wohin mit der frage und dachte mir sicher ist sicher. sorry 😞



  • hi django,

    es ist ungünstig, lapackpp.h zu inkludieren, denn da werden alle Headerdateien von lapack++ inkludiert.
    LaLinSolve gibt es nicht. Ich glaube du suchst das:

    void LaLinearSolve(const LaSymmBandMatDouble A, LaGenMatDouble &X,
    		   const LaGenMatDouble &B);
    

    und es ist in sybfd.h deklariert.

    edit: Falls du mit positiv definiten Bandmatrizen nichts anfangen kannst, LaLinearSolve gibt es auch für reguläre Matrizen (reelle und complexe).
    Die findest du in laslv.h. alglib.net hat auch einige complexe Matrizenoerationen zu bieten (z.T. aus lapack++ abgeleitet).

    vg tesu


Anmelden zum Antworten