WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Frage zu einer quadratischen Gleichung

 

Chris2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.03.2012, 20:14     Titel: Frage zu einer quadratischen Gleichung
  Antworten mit Zitat      
Ich kenne 6 Punkte durch die eine quadratische Kurve (Parabel) geht, deren Achse jedoch nicht mit der x-oder y-Achse parallel ist.

Wenn ich nun die generelle Gleichung errechnen möchte, bzw. die Parameter A, B, C, D, E, F der folgenden Gleichung:

Code:
A*x^2 + B*y^2 + C*x*y + D*x + E*y + F = 0 '


habe ich den folgenden Code implementiert:

Code:
syms x1 x2 x3 x4 x5 x6 y1 y2 y3 y4 y5 y6;
       
solutions = solve('a*x1^2 + b*y1^2 + c*x1*y1 + d*x1 + e*y1 +f',...
            'a*x2^2 + b*y2^2 + c*x2*y1 + d*x2 + e*y2 +f',...
            'a*x3^2 + b*y3^2 + c*x3*y1 + d*x3 + e*y3 +f',...
            'a*x4^2 + b*y4^2 + c*x4*y1 + d*x4 + e*y4 +f',...
            'a*x5^2 + b*y5^2 + c*x5*y1 + d*x5 + e*y5 +f',...
            'a*x6^2 + b*y6^2 + c*x6*y1 + d*x6 + e*y6 +f',...
            'a','b','c','d','e','f');


Wenn ich nun die Lösungen aufrufe, also
solutions.a, solutions.b, solutions.c, solutions.d, solutions.e und solutions.f
errechnet mir der code jedoch kein richtiges Ergebnis. Er gibt mir dafür einen neuen Buchstaben (z) von dem er die Lösungen abhängig macht.
Er soll mir jedoch die Ergebnisse als eine Funktion der Punkte x1,y1, x2,y2, usw (die ich bereits kenne) dargeben.

Ich bedanke mich für eure Hilfe!


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.03.2012, 21:33     Titel:
  Antworten mit Zitat      
Hallo,

das Problem: du hast ein lineares Gleichungssystem in A bis F, auf der rechten Seite steht 0. Das bedeutet nach der linearen Algebra, dass du entweder keine oder unendlich viele Lösungen bekommst. Um die unendlich vielen Lösungen zu repräsentieren, verwendet MATLAB die zusätzliche Variable.
Wenn du eine eindeutige Lösung erwartest, liegt das Problem in der Formulierung der Aufgabenstellung. Zumindest aber solltest du die y bei dem C-Teil auch durchnumerieren?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Chris2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2012, 08:50     Titel:
  Antworten mit Zitat      
Hallo und herzlichen Dank erstmal.
Ja, da ist mir ein Fehler unterlaufn beim posten im Forum.
Mir ist die Algebra klar, aber da ich ja 6 Punkte vorgebe - von (x1,y1) bis (x6,y6) sollte ich doch die Werte von A bis F errechnen koennen.

Wie von dir richtig erwaehnt haette ich dieses Problem, wenn ich versuchen wuerde die einzelne Gleichung:

Code: A*x^2 + B*y^2 + C*x*y + D*x + E*y + F = 0


zu loesen.

Also hier noch einmal der "richtige" Code:

Code: syms x1 x2 x3 x4 x5 x6 y1 y2 y3 y4 y5 y6;

solutions = solve('a*x1^2 + b*y1^2 + c*x1*y1 + d*x1 + e*y1 +f',...
'a*x2^2 + b*y2^2 + c*x2*y2 + d*x2 + e*y2 +f',...
'a*x3^2 + b*y3^2 + c*x3*y3 + d*x3 + e*y3 +f',...
'a*x4^2 + b*y4^2 + c*x4*y4 + d*x4 + e*y4 +f',...
'a*x5^2 + b*y5^2 + c*x5*y5 + d*x5 + e*y5 +f',...
'a*x6^2 + b*y6^2 + c*x6*y6 + d*x6 + e*y6 +f',...
'a','b','c','d','e','f');


Das System muss doch loesbar sein? 6 Gleichungen, 6 Unbekannte...
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.03.2012, 10:19     Titel:
  Antworten mit Zitat      
Hallo,

wenn ich das modifizierte laufen lasse, bekomme ich für alle Variablen 0, und das stimmt doch?

Falls du andere Ergebnisse bekommst: mit welchem Release arbeitest du?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Chris2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2012, 14:45     Titel:
  Antworten mit Zitat      
Klar,
da fehlen aber noch die Punkte.

Ich erwarte dass dieser Code mir jedoch Ergebnisse fuer A,B,C,D,E,F liefert, die anders als null sind, sobald ich ein set an Punkten vorgebe, die auf der Parabel liegen.

Ein Beispiel:

Code:
x1 = -6.1217;
y1 = 0.3651;
x2 = -5.756
y2 = 0.6515;
x3 = -5.2685;
y3 = 0.935;
x4 = -4.666;
y4 = 1.2156;
x5 = -3.9551;
y5 = 1.4932;
x6 = 1.7745;
y6 = -3.1179;

 syms x1 x2 x3 x4 x5 x6 y1 y2 y3 y4 y5 y6;

solutions = solve('a*x1^2 + b*y1^2 + c*x1*y1 + d*x1 + e*y1 +f',...
'a*x2^2 + b*y2^2 + c*x2*y2 + d*x2 + e*y2 +f',...
'a*x3^2 + b*y3^2 + c*x3*y3 + d*x3 + e*y3 +f',...
'a*x4^2 + b*y4^2 + c*x4*y4 + d*x4 + e*y4 +f',...
'a*x5^2 + b*y5^2 + c*x5*y5 + d*x5 + e*y5 +f',...
'a*x6^2 + b*y6^2 + c*x6*y6 + d*x6 + e*y6 +f',...
'a','b','c','d','e','f');


Ich kann mir gut denken, dass das Problem auch darin liegt dass die Punkte approximiert sind und somit doch nicht, mathematisch gesehen, auf einer einzigen Parabel liegen.
Auf jeden Fall krieg ich nicht nullen, sondern

a = 0;
b = 0;
c = -z/y1;
d = z;
e = 0;
f = 0;

Verstehe dieses Ergebnis nicht. Erwarte mir, wennschon, dass ich Zahlenwerte fuer alle Koeffizienten kriege.

Das Problem ist: ich kenne 6 Punkte (x,y) und weiss dass sie auf einer Parabel liegen muessen, deren Achse jedoch nicht mit dem Koordinatensystem uebereinstimmt und die ich, zudem, nicht kenne.
Also moechte ich anhand der 6 Punkte-paare die Koeffizienten errechnen, so dass ich dann die Parabel auch analytisch beschreiben kann und mir errechnen kann wie und wo die Achse liegt.

Arbeite mit Matlab 2011a 32 bit, habe jedoch alle moeglichen Matlabs zur Verfuegung (hier am Arbeitsplatz)
Danke vielmals,
Christian
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.03.2012, 15:19     Titel:
  Antworten mit Zitat      
Hallo,

du solltest dich schon entscheiden. Entweder:
- Zahlenwerte und FSOLVE
oder
- Variablen und SOLVE.

Es macht wenig Sinn, die Variablen erst als Zahlen zu definieren und dann mit symbolischen Variablen zu überschreiben (die Zahlenwerte sind dann verloren!).

Deine erhaltene Lösung legt nahe, dass du noch mit den falschen Gleichungen arbeitest.

Ich verstehe ja deine Erwartungen, aber die Mathematik hinter den Gleichungen besagt nunmal klar, dass es entweder unendlich viele oder nur eine (die triviale) Lösung gibt.
Eine sinnvolle Möglichkeit wäre meines Erachtens, F = 1 zu setzen. Wenn F einen anderen Wert annehmen würde, könnte man einfach alle anderen Variablen mit jeweils diesem Wert multiplizieren, und würde dieselbe Gleichung bekommen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Chris2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.03.2012, 17:07     Titel:
  Antworten mit Zitat      
Herzlichen Dank.

Mein Fehler war wohl die Funktion SOLVE zu benutzen, werde es jetzt mit FSOLVE begradigen.
Ich denke dass die mathematische Prozedur jedoch stimmt.
6 Gleichungen, 6 Unbekannte. Die besagten Punkte durch die die Parabel fuehren soll kenne ich bereits (auch als exakten Wert, habe den gerundeten bloss vorgegeben, um hier im Forum zu zeigen was ich meinte).

Bin mal gespannt,
danke
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.03.2012, 19:18     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich denke dass die mathematische Prozedur jedoch stimmt.

Das sehe ich anders, siehe die vorhergehenden Beiträge.

Zitat:
6 Gleichungen, 6 Unbekannte.

Es ist ein Irrglaube, dass es automatisch eine eindeutige Lösung gibt, wenn es genauso viele Gleichungen wie Unbekannte gibt.
Einfaches Beispiel für 2 Gleichungen und 2 Unbekannte:
x + y = 1
x + y = 2
hat keine Lösung

x + y = 1
2*x + 2*y = 2
hat unendlich viele Lösungen.

Siehe die vorherigen Beiträge für Vorschläge zum Umgang mit der Problematik.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Chris2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2012, 08:28     Titel:
  Antworten mit Zitat      
Hallo Harald,
entschuldige, vielleicht habe ich dich missverstanden.

Wenn ich jedoch drei Punkte kenne, die zum Beispiel auf einer Parabel parallel zur x-Achse liegen, kann ich mir ohne weiteres die Form der Parabel errechnen.
Da dachte ich, dass gleiches gilt, wenn ich sechs Punkte kenne, die auf einer Parabel mit undefinierter Achse liegen.

Oder andersrum gesagt, wenn ich sechs Punkte kenne, welche mit Sicherheit auf einer Kurve liegen, die durch eine quadratische Gleichung beschrieben werden kann, muss es doch moeglich sein diese Gleichun aufstellen zu koennen?
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.03.2012, 08:56     Titel:
  Antworten mit Zitat      
Hallo,

es ist eine Frage, wie du diese Parabel beschreibst.

Wenn du sagst:
y = a*x^2 + b*x + c
und drei Punkte mit verschiedenen x-Werten hast, dann bekommst du deine Parabel.

Wenn du die Parabel aber in der Form
a*x^2 + b*x + c + d*y = 0
darstellst, dann hast du dadurch einen quasi überflüssigen Parameter d. Den kannst du auf 1, oder damit es mit obiger Darstellung äquivalent ist, auf -1 setzen.

Dieselbe Situation hast du bei dir im Grunde auch. 5 Punkte reichen an sich, um deine allgemeine Parabel (mit F = 1) zu beschreiben. Wenn du einen 6. Punkt hinzufügst, wird das Gleichungssystem überbestimmt. Wenn du F variierst, bekommst du dadurch keine zusätzlichen Gleichungen, da du statt
A*x^2 + B*y^2 + C*x*y + D*x + E*y + F = 0
auch
F*(A/F*x^2 + B/F*y^2 + C/F*x*y + D/F*x + E/F*y + 1) = 0 schreiben kannst, d.h. der Ausdruck in Klammern muss 0 sein.

Ich fürchte, detaillierter kann ich es wirklich nicht mehr schreiben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Chris2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2012, 14:00     Titel:
  Antworten mit Zitat      
Ganz klar!
Herzlichen Dank.

Ich war mir nur nicht im klaren, was du damit meintest, wenn ich F = 1 setze. Weil dadurch kann ich doch immer noch nicht durch die Punkte die mir bekannt sind die Parabel bestimmen.
Oder doch?

Irgendwie muss es doch gehen!!! Mad
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.03.2012, 14:21     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Weil dadurch kann ich doch immer noch nicht durch die Punkte die mir bekannt sind die Parabel bestimmen.

Natürlich kannst du. Da du 6 Gleichungen für 5 Unbekannte hast, ist das System zwar überbestimmt, das macht aber nichts.

Du könntest das übrigens einfacher und direkter als lineares Gleichungssystem lösen, mit \ oder regress.

Zitat:
Irgendwie muss es doch gehen!!!

Natürlich geht es. Man muss nur das Problem sauber formulieren und dann die Lösung implementieren.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Chris2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.03.2012, 17:32     Titel:
  Antworten mit Zitat      
Herzlichen Dank,
eine grosse Erleichterung zu wissen, dass es geht Smile

Kannst du mir sagen, was du mit zweiter Loesung meinst?
Du musst davon ausgehen, dass ich nichts weiteres als 7 x- und y-Koordinaten besitze, von denen ich mit Gewissheit weiss, dass sie auf einer Parabel liegen, jedoch deren Form ich eben analytsich (also durch Koeffizienten) bestimmen moechte und - bestmoeglicherweise - auch deren Achse bestimmen moechte.

Christian
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.03.2012, 20:08     Titel:
  Antworten mit Zitat      
Hallo,

ich hab doch nie was von einer zweiten Lösung gesagt?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Chris2

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2012, 09:10     Titel:
  Antworten mit Zitat      
Hallo Harald,
entschuldige mich aber ich habe dich nicht verstanden.
Du sagtest man koenne das Problem mit / oder regress loesen.
Aber wie?
Ausgehend davon dass ich 6 (oder mehr, im Prinzip x-beliebeige) Punkte kenne, die auf dieser Parabel liegen, ist mein Ziel diese als solche zu interpolieren, um daraus die Parabel-koeffizienten zu errechnen.
Bislang ist mir dies nicht gelungen.

Danke vielmals,
Christian
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.