AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Matrix multiplikation, help

Ein Thema von Jonas Shinaniganz · begonnen am 5. Jun 2012 · letzter Beitrag vom 7. Jun 2012
 
Benutzerbild von Jonas Shinaniganz
Jonas Shinaniganz

Registriert seit: 30. Aug 2011
249 Beiträge
 
Delphi XE5 Ultimate
 
#1

Matrix multiplikation, help

  Alt 5. Jun 2012, 18:01
Mein Gehirn ist einfach zu klein um mein Projekt zum Abschluss zu bringen... bin ein bisschen deprimiert grade.

In meinem derzeitigen Programm soll der Benutzer 2 Matritzen eingeben, in Tabellen.
Die Tabellen sind in Spaltenanzahl und Zeilen Identisch und auch die Tabelle für sich hat immer genau so viele Spalten wie Zeilen.

Wenn der User die Eingaben erledigt hat wird jede Tabelle in ein 2D Array geschoben mit dem Ich dann weiter rechne.

Dann gibt es noch einen Ergebnis Array.

Also Ich habe folgendes Problem:

Array 1
10 3 5
3 3 5
8 7 9

Array 2
23 5 1
1 4 5
8 7 7

Ich brauche ne Schleife die jeden Wert aus meinen Array entsprechend der Gesetze der Matritzenmultiplikation berechnet. Wichtig: Ich möchte dass das ganez Skalier bar ist... d.h.
Es kann auch eine 1x1 oder 10x10 Matrix - Combo vorliegen und nicht nur dieses 3x3 Format.

Jetz muss man ja 10x23 + 3x1 + 8x8 ! 10x5 + 10x4 + 10x7 ! undsoweiter rechnet um dann zum Schluss:

Array Ergebnis
bla bla bla
bla bla bla
bla bla bla

Rauszubekommen... Ich hab mir das ganze versucht zu überlegen finde es aber derbe kompliziert grade...

Meine Schleife liefert nur einen Teil der Werte und sieht folgendermaßen aus:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender : TObject);
var
  I : Integer;
  I2: Integer;

  Ergebnis : Double;
  I3 : Integer;
begin
                       
  GridToArray(StringGrid1, MatrixData.ValueArray1);
  GridToArray(StringGrid2, MatrixData.ValueArray2);

  // einfach erstmal groß genug machen...
  SetLength(MatrixData.ResultArray, 20, 20);

  I := 0;
  while I <= High(MatrixData.ValueArray1) do
  begin
    I2 := 0;
    while I2 <= High(MatrixData.ValueArray1[I]) do
    begin

      Ergebnis := 0;
      for I3 := 0 to High(MatrixData.ValueArray2[I]) do
      begin
        Ergebnis := Ergebnis + (MatrixData.ValueArray1[I2, I3] * MatrixData.ValueArray2[I3, I2]);
      end;

      MatrixData.ResultArray[I, I2] := Ergebnis;
      inc(I2);
    end;
  inc(I);
  end;


end;
Würde mich auch freuen wenn jemand beschreiben könnte wie Ich mich solchen Problemen Gedanklich annähern kann, bin erst 22Jahre Alt also noch nicht alles verloren hoffe ich, gruß
Die Leiter der Entwicklungsabteilung dreht total am Mausrad!
  Mit Zitat antworten Zitat
 


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 01:59 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 by Thomas Breitkreuz