![]() |
AW: Inverse einer matrix
Gegen eine Typendeklaration spricht in Delphi eigentlich nie etwas.
Delphi-Quellcode:
type
TMat = array of array of double; TVek = array of double; Vielleicht noch ein kleiner Hinweis. Die inverse Matrix zu berechnen ist sehr anspruchsvoll. Deshalb geht man in der Regel anders vor: N mal Gauss mit Einheitsvektor als Rechter Seite durchlaufen ergibt (Spaltenweise) die Reziproke Matrix. Beispiel: Matrix: 1 2 0 2 3 0 3 4 1 Rechte Seite 1. Durchlauf: 1 0 0 Lösungsvektor 1. Durchlauf: -3 2 1 Rechte Seite 2. Durchlauf: 0 1 0 Lösungsvektor 2. Durchlauf: 2 -1 -2 Rechte Seite 3. Durchlauf: 0 0 1 Lösungsvektor 3. Durchlauf: 0 0 1 Reziproke Matrix: -3 2 0 2 -1 0 1 -2 1 |
AW: Inverse einer matrix
Zitat:
![]() |
AW: Inverse einer matrix
Hi Bug,
stimmt, auf die Idee bin ich noch gar nicht gekommen. Man kann den Gauss ja logischerweise für mehrere Reche Seiten gleichzeitig laufen lassen. Danke für den Hinweis. Gruß Thomas |
AW: Inverse einer matrix
ich hab jetzt noch einmal eine frage zu dieser typdeklaration.
ich habe in meiner unitASM sozusagen stehen
Delphi-Quellcode:
dann will ich die eingelesenen matrizen mat1 und mat2 aus den beiden stringgrids in das unterprogramm meiner "myunitmatrix" übergeben. dazu habe ich den aufruf
type TMatrix = array [0..5,0..5] of double;
Delphi-Quellcode:
in der Unit Myunitmatrix, befindet sich dann folgender quelltext bis jetzt:
addieren(zeilen1,spalten1,mat1,mat2);
Delphi-Quellcode:
so wenn ich das ganze nun compiliere, dann erhalte ich in der unitASM die fehlermeldung beim aufruf von "addieren" : "[DCC Fehler] UnitASM.pas(83): E2010 Inkompatible Typen: 'MyUnitMatrix.TMatrix' und 'UnitASM.TMatrix'"
unit MyUnitMatrix;
interface type TMatrix = array [0..5,0..5] of double; procedure addieren(spalten1, zeilen1: Integer; mat1, mat2: TMatrix); procedure subtrahieren(spalten1, zeilen1: Integer; mat1, mat2: TMatrix); procedure multiplizieren(spalten1, zeilen1, spalten2: Integer; mat1,mat2:TMatrix); implementation uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Math, UnitASM, UnitINV; procedure addieren(spalten1, zeilen1: Integer;mat1,mat2:TMatrix); var i, j: Integer; mat3: TMatrix; begin for i := 0 to (spalten1 - 1) do begin for j := 0 to (zeilen1 - 1) do begin mat3[i, j] := (mat1[i, j] + mat2[i, j]); end; end; end; end. in meiner vorherigen fassung hatte ich die matrizen global deklariert, nur leider darf ich das nicht. Irgendwas mach ich bei der Übergabe falsch? Bzw kenn ich wohl die vorschriften für die übergabe von arrays nicht?! Wie kann ich denn ein Array ins unterprogramm einer anderen unit übergeben? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:02 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