LR-Zerlegung



  • Hallo, ich mit der Matrixinversion/LR-Zerlegung von vor einigen Tagen nochmal...

    Ich hab die matrix.h von

    // Matrix.h: Matrix C++ template class include file 
    // Web: http://www.techsoftpl.com/matrix/
    

    mit dem beiliegendem Testcode matdemo2.cpp verwendet. Dann hab ich Beispielwerte "von Hand" eingegeben, um zu schauen, ob das für mich funktioniert... Tut es!

    Jetzt will ich das in mein eigentliches Programm, in dem die "von Hand"-Werte erst berechnet werden, einbauen.
    Ich hab die header-Datei eingebunden und alles was bei dem Testcode vor int main () stand mit eingefügt:
    (hier der Code, falls es hilfreich ist)

    #include "matrix.h"
    #ifndef _NO_NAMESPACE 
    using namespace std;
    using namespace math;
    #define STD std
    #else
    #define STD
    #endif
    
    #if !defined(_NO_TEMPLATE)
    #  if defined(_MSC_VER)
    #     if _MSC_VER > 1000
    #        include <complex>
             typedef complex<double> type;
    #     else
             typedef double type;
    #     endif
    #  elif defined(__BORLANDC__)
    #     if defined(__WIN32__)
    #        include <complex>
             typedef complex<double> type;
    #     else
    #        include <complex.h>
             typedef complex type;
    #     endif         
    #  elif defined( __GNUG__ ) 
    #       include <complex>
            typedef complex<double> type;
    # elif defined( _SGI_BROKEN_STL )
    # include <complex>
    typedef std::complex<double> type;
    #  endif
      typedef matrix<type> Matrix;
    #else
       typedef matrix Matrix;
    #endif
    
    #ifndef _NO_EXCEPTION
    #  define TRYBEGIN()	try {
    #  define CATCHERROR()	} catch (const STD::exception& e) { \
                         cerr << "Error: " << e.what() << endl; }
    #else
    #  define TRYBEGIN()
    #  define CATCHERROR()
    #endif
    

    Die beiden Input-Matrizen hab ich so belegen lassen wie in meinem Test. Das hab ich zur Prüfung auch ausgeben lassen. Es sind die selben Matrizen!!

    Alles ist gleich. Selbst die Anzahl an Warnungen (auch wenn Warnungen bestimmt nicht gut sind).

    Im Test bekomm ich die gewünschte Matrix ausgegeben, in meinem Programm leider nur "matrixT::Solve(): Singular matrix!"

    Das einzige was ich zur Berechnung benötige/benutze in int main()

    //Fuer LU-Decomposition
    Matrix m(7,7),v(7,1),s(7,1);	
    //...Belegung von m und v
    
    TRYBEGIN()
    {
      s = m.Solve(v);
    }
    CATCHERROR();
    

    Weiss nicht, ob euch die Daten ausreichen, aber vll kann mir einer irgendwie weiterhelfen??



  • Vergesst es!

    Ich bin ein Depp. Aus ner 2 ne 1 machen und es funktioniert.....

    Davon abgesehen:

    43 Warnungen - Kann ich das vernachlässigen, solange meine Berechnungen in Ordnung sind und durchlaufen??



  • Kommt auf die Warnungen an. Klingt aber nach ner menge.



  • sum pattern schrieb:

    43 Warnungen - Kann ich das vernachlässigen, solange meine Berechnungen in Ordnung sind und durchlaufen??

    Warnungen vernachlässigen würde ich nie machen. Auch wenn sie unwichtig sind, sieh zu dass du sie wegbekommst. Sonst gehts am Ende nach dem Motto "jaja, ein paar hundert Warnungen, die brauch ich nicht beachten" - und die eine wirklich wichtige Warnung siehst du nicht und suchst ewig nach dem Fehler...


Log in to reply