AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Matrizen: Inverse, Transponierte und Determinante bestimmen
Thema durchsuchen
Ansicht
Themen-Optionen

Matrizen: Inverse, Transponierte und Determinante bestimmen

Ein Thema von xexex84 · begonnen am 22. Mai 2006 · letzter Beitrag vom 25. Mai 2006
Antwort Antwort
xexex84

Registriert seit: 22. Mai 2006
4 Beiträge
 
#1

Matrizen: Inverse, Transponierte und Determinante bestimmen

  Alt 22. Mai 2006, 19:44
Hallo,
ich brauche ein Delphi Programm, mit dem ich für eine quadratische Matrix beliebiger Größe, die transponierte Matrix, die inverse Matrix und die Determinante ermitteln kann.

Gibt es so ein Programm schon irgendwo? Hat hier evtl. schon einmal jemand etwas ähnliches programmiert.
Ich kenne mich leider mit Delphi nicht sehr gut aus, hatte nur kurz in der Schule mal einige einfache Programme damit erstellt.
Kann mir jemand helfen?
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#2

Re: Matrizen: Inverse, Transponierte und Determinante bestim

  Alt 22. Mai 2006, 19:53
hey. schon mal mit Microsoft Excel experimentiert? das kann das auch und zwar recht gut!
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
xexex84

Registriert seit: 22. Mai 2006
4 Beiträge
 
#3

Re: Matrizen: Inverse, Transponierte und Determinante bestim

  Alt 22. Mai 2006, 20:00
Ja, natürlich kann Excel das.
Aber es soll ja eben leider ein Delphi Programm sein.
  Mit Zitat antworten Zitat
Dust Signs

Registriert seit: 28. Dez 2004
Ort: Salzburg
379 Beiträge
 
#4

Re: Matrizen: Inverse, Transponierte und Determinante bestim

  Alt 22. Mai 2006, 20:06
Bei Omorphia haben die eine nette Unit dafür... einfach mal schaun Klick

Dust Signs
(aka AXMD in der EE)
Die Nummer, die Sie gewählt haben, ist imaginär. Bitte drehen Sie Ihr Telefon um 90° und versuchen Sie es erneut.
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#5

Re: Matrizen: Inverse, Transponierte und Determinante bestim

  Alt 22. Mai 2006, 20:40
Zitat von s.h.a.r.k:
hey. schon mal mit Microsoft Excel experimentiert? das kann das auch und zwar recht gut!

Seit wann kann Excel rechnen. Warum nur errechnet Excel immer wieder andere Werte als wissenschaftlich anerkannte und überall benutze Programme wie Origin oder Matlab.

Aber was Du meinst, ist wohl Excel über OLE anzusteuern, und so die Matrizenoperationen durchzuführen.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Matrizen: Inverse, Transponierte und Determinante bestim

  Alt 22. Mai 2006, 21:01
Ich habe meine Bibel ("Algorithms") gerade nicht zur Hand, aber prinzipiell geht das doch mit dem Gauschen Eliminationsverfahren, oder nicht? Egal, es dürfte auch bei Wiki reihenweise Verfahren geben, die leicht nachzuprogrammieren sind. Bei den Inversen, die ich mal machen musste, weiß ich nur, das die LUP-Dekomposition numerisch stabil ist.

Der Codeaufwand hält sich übrigens in Grenzen...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
jus

Registriert seit: 22. Jan 2005
343 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Matrizen: Inverse, Transponierte und Determinante bestim

  Alt 23. Mai 2006, 01:31
Ich habe mal die Jedi Math Bibliothek für Matrizzen von Type IJmFloatMatrix verwendet, sie enthält viele grundlegenden Matrizzenfunktionen wie auch das Transponieren, Invertieren,... schon. Die Implementierung klappte zumindest bei mir auf Anhieb. Ob die Bibliothek im Bereich der Matrizzen von der Performance gut ist, kann ich leider nicht sagen.

Grüsse,
jus
  Mit Zitat antworten Zitat
xexex84

Registriert seit: 22. Mai 2006
4 Beiträge
 
#8

Re: Matrizen: Inverse, Transponierte und Determinante bestim

  Alt 24. Mai 2006, 22:06
Danke für die bisherigen Antworten. War schon sehr hilfreich, aber jetzt frage ich mich wie ich die Matrix an sich am besten implementiere.
Ich würde das als 2-dimensionales Feld machen, also zb. var Matrix : array[i,j], wie muss ich diesen Datentyp in oder die Variable definieren?
Und wie kann ich diese Matrix dann in der GUI am besten füllen, StringGrid sieht ganz gut aus, kann man das auch in der Größe variabel machen (also die Anzahl der Reihen etc.)? Gibt es eine Metheode den gesamten inhalt direkt in die Matrix zu übertragen oder ist die Schleife der beste Weg?
  Mit Zitat antworten Zitat
jus

Registriert seit: 22. Jan 2005
343 Beiträge
 
Delphi 2007 Professional
 
#9

Re: Matrizen: Inverse, Transponierte und Determinante bestim

  Alt 24. Mai 2006, 23:52
Zitat von xexex84:
Danke für die bisherigen Antworten. War schon sehr hilfreich, aber jetzt frage ich mich wie ich die Matrix an sich am besten implementiere.
Ich würde das als 2-dimensionales Feld machen, also zb. var Matrix : array[i,j], wie muss ich diesen Datentyp in oder die Variable definieren?
hast du dir die Jedi Math Bibliothek überhaupt angeschaut? Da gibt es schon eine fertige zweidimensionale Matrix vom Typ IJmFloatMatrix.
d. h. zum Erstellen brauchst du nur die Matrix mit dem Befehl Matrix mit der Matrixgröße übergeben und fertig.
Delphi-Quellcode:

uses ...,JmTypes, JmFloatMatrix;

implementation

var
  TestMatrix: IJmFloatMatrix;

procedure Erstelle_Matrix(ZeilenAnzahl, SpaltenAnzahl: Integer);
begin
  TestMatrix:=Matrix(ZeilenAnzahl, SpaltenAnzahl);
end;
Zitat von xexex84:
Und wie kann ich diese Matrix dann in der GUI am besten füllen, StringGrid sieht ganz gut aus, kann man das auch in der Größe variabel machen (also die Anzahl der Reihen etc.)? Gibt es eine Metheode den gesamten inhalt direkt in die Matrix zu übertragen oder ist die Schleife der beste Weg?
Intuitiv würde ich auch StringGrid zum Eingeben verwenden. Du kannst ja in deinem Programm mit z.B. SpinEdit Felder abfragen wie groß die Matrix sein soll, dann setzt du die Eigenschaften ColCount und RowCount von StringGrid z.B. StringGrid1.ColCount:=SpinEdit1.Value u. StringGrid1.RowCount:=SpinEdit2.Value.

Wenn der User fertig ist mit der Eingabe im StringGrid übernimmst es in deine Matrix, das du mit der Jedi Math erstellt hast.
z.B.
Delphi-Quellcode:
procedure StringGrid2JediMatrix(const SourceGrid: TStringGrid; var DestMatrix:IJmFloatMatrix);
var
  zeile, spalte: Integer;
begin
  for zeile:=0 to SourceGrid.RowCount-1 do
    for spalte:=0 to SourceGrid.ColCount-1 do
    begin
      DestMatrix[zeile+1,spalte+1]:=StrToFloat(SourceGrid.Cells[spalte,zeile]); //weil IJmFloatMatrix 1 basiert und StringGrid 0 basiert
    end;
end;
Ich habe das auf die schnelle eingetippt, also bitte nicht bös sein, wenn etwas auf Anhieb nicht funktioniert. Was hier fehlen könnte sind weitere Überprüfungen, wie z.B. ob in der StringGrid wirklich Zahlen drin stehen, aber das kannst du ja noch nachholen.


Grüsse,
jus
  Mit Zitat antworten Zitat
xexex84

Registriert seit: 22. Mai 2006
4 Beiträge
 
#10

Re: Matrizen: Inverse, Transponierte und Determinante bestim

  Alt 25. Mai 2006, 11:21
ja ich hab mir die angeschaut, aber ich will ja die matrix selbst machen, und wollte eigentlich keine "extra" unit verwenden. danke trotzdem ich werde das dann erstmal so probieren.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz