Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Gleichungssysteme lösen? (https://www.delphipraxis.net/8058-gleichungssysteme-loesen.html)

axelf98 27. Aug 2003 18:38


Gleichungssysteme lösen?
 
Hallo, ich hab da ein kleines Problem:

Ich möchte dynamische Gleichungssysteme lösen, die zB. wie folgt aussehen:

3b = 2e
3a + b = 2c + e
2a = c + d

a wird 1 gesetzt.

Die Matrix wird umgewandelt in einen array of array of extended:
0 3 0 0 -2 0
3 1 -2 0 -1 0
2 0 -1 -1 0 0
1 0 0 0 0 1 (a = 1) Setzung

Wenn ich den normalen Gaussalgorithmus drüberlaufen lasse, kommt meistens "System unlösbar" heraus, obwohl die Systeme eigentlich noch recht einfach sind und auf jedenfall eine Lösung haben.

Bei der Matrix oben fehlt eine Zeile zum Quadrat, aber woher soll die Gleichung kommen? Nur a soll 1 sein...

Helft mir... :roll:

das ist die Anwendung -> ABC.exe

alcaeus 27. Aug 2003 18:49

Re: Gleichungssysteme lösen?
 
Es würde helfen, wenn du den code posten würdest. Dann kann man auch Fehler suchen...

axelf98 27. Aug 2003 18:58

Re: Gleichungssysteme lösen?
 
Ich glaube nicht, dass es ein Fehler ist... Irgendwie muss man die Matrix noch verändern, damit es klappt..

Der Hauptcode:


Delphi-Quellcode:
Matrix.SolveLinearSystem(Array,m,n);
//m,n sind die Dimensionen, die Funktion hab ich aus dem Internet.
var sol,auf : array of array of extended;
     rechts,links : array of array of extended; // rechte und linke Seite
begin
    // --- Füllen der Matrix

       setlength(Auf,elemente.Count+1,anzahled+anzahlpr+1);

       for i := 0 to elemente.Count - 1  do
       begin
        for j := 0 to anzahled-1 do
         begin
           auf[i,j] := links[i,j];
         end;
        end;

       for i := 0 to elemente.Count - 1  do
       begin
        for j := 0 to anzahlpr - 1 do
         begin
           auf[i,j+anzahled] := - rechts[i,j];   // negativ Werte
         end;
        end;
                    // a = 1 reihe setzen

       for i := 0 to anzahlpr + anzahled  do
       begin
        if i = 0 then Auf[elemente.count,i] := 1 ELSE
        if i = anzahlpr + anzahled then Auf[elemente.count,i] := 1 ELSE
        Auf[elemente.count,i]:= 0 ;

       end;

    //---- Berechnung....

    Matrix := Mathe.init;

    try
    sol := Matrix.SolveLinearSystem(Auf,elemente.count+1 anzahled+anzahlpr+1);
    except
     erroradd('[Mathematik] Das Gleichungssystem ist nicht lösbar oder');
     erroraddline('                  hat unendlich viele Lösungen');
    end;
-----------------------------

[edit=sakura]Delphi-Tags eingefügt. Mfg, sakura[/edit]

czapie 27. Aug 2003 19:21

Re: Gleichungssysteme lösen?
 
Na da hat wohl jemand LK Mathe.

Mh, also erhlich gesagt hab ich mir dein code nicht genau angesehen, aber schreib doch lieber was total eigenes, als was ausm Netz.

Vom Prinzip her kann st du nach dem Gauß doch gehen.
Du baust dir dein Dreieck indem du immer das Kgv der Koeffizienten suchst und durch entprechende Multiplikation und anschließender Addition/Subtraktion alle Variablen schrittweise eliminierst, bis du dann eine Variable genau bestimmen kannst.
Das sind auch vom programmieren her nicht wirklich schwere Operationen, oder?

Ich werd mich auch mal ransetzen,

Czapie.

Nimoee 27. Aug 2003 20:11

Re: Gleichungssysteme lösen?
 
hallo,

was ist denn ein dynamisches Gleichungssystem?
( der alte Gauss dreht sich im Grabe rum )
Bitte erklärs mir!

nimoee

axelf98 27. Aug 2003 20:14

Re: Gleichungssysteme lösen?
 
Zitat:

Zitat von Nimoee
hallo,

was ist denn ein dynamisches Gleichungssystem?
( der alte Gauss dreht sich im Grabe rum )
Bitte erklärs mir!

nimoee

Dynamisch ist hier so zu verstehen, dass die Dimensionen nicht definiert sind.. also 3 Gleichungen 4 Unbekannte 15 Gleichungen,16 Unbekannte usw..

Ein solches System in sich ist natürlich nicht dynamisch!


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:28 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