![]() |
Matrizen: Inverse, Transponierte und Determinante bestimmen
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? :?: |
Re: Matrizen: Inverse, Transponierte und Determinante bestim
hey. schon mal mit Microsoft Excel experimentiert? das kann das auch und zwar recht gut!
|
Re: Matrizen: Inverse, Transponierte und Determinante bestim
Ja, natürlich kann Excel das.
Aber es soll ja eben leider ein Delphi Programm sein. :wink: |
Re: Matrizen: Inverse, Transponierte und Determinante bestim
|
Re: Matrizen: Inverse, Transponierte und Determinante bestim
Zitat:
Seit wann kann Excel rechnen. Warum nur errechnet Excel immer wieder andere Werte als wissenschaftlich anerkannte und überall benutze Programme wie Origin oder Matlab. :mrgreen: Aber was Du meinst, ist wohl Excel über OLE anzusteuern, und so die Matrizenoperationen durchzuführen. |
Re: Matrizen: Inverse, Transponierte und Determinante bestim
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... |
Re: Matrizen: Inverse, Transponierte und Determinante bestim
Ich habe mal die
![]() Grüsse, jus |
Re: Matrizen: Inverse, Transponierte und Determinante bestim
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? :gruebel: |
Re: Matrizen: Inverse, Transponierte und Determinante bestim
Zitat:
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:
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:
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. :wink:
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; Grüsse, jus |
Re: Matrizen: Inverse, Transponierte und Determinante bestim
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. :hi:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz