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.
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
Chris2
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 12.03.2012, 08:50
Titel:
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:
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
Chris2
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 12.03.2012, 14:45
Titel:
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.
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
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
Chris2
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 12.03.2012, 17:07
Titel:
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).
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
Chris2
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.03.2012, 08:28
Titel:
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?
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
Chris2
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.03.2012, 14:00
Titel:
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?
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
Chris2
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 13.03.2012, 17:32
Titel:
Herzlichen Dank,
eine grosse Erleichterung zu wissen, dass es geht
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.
ich hab doch nie was von einer zweiten Lösung gesagt?
Grüße,
Harald
Chris2
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 15.03.2012, 09:10
Titel:
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.
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
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.