|
Rock |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 14.07.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 31.07.2011, 15:43
Titel:
|
|
x0 = [-100; -100];
f = @(x) [norm(x(1)-satpos)-c*(differenz+x(2))];
fsolve(f, x0);
so besser?
Habe gerade deinen Rat befolgt doch leider ist die Antwort
1. x(1) = x0
2. Kein Vektor
zu Punkt 1. habe ich verschiedene Werte ausprobiert, leider nimmt der erste Wert, der Lösung, immer den Startwert an.
der 2. Wert pendelt sich bei ca. 0.0989 ein, variiert jedoch leicht.
|
|
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 31.07.2011, 17:09
Titel:
|
|
Hallo,
ich denke, du hast nicht berücksichtigt, dass das x aus der Angabe ein 3D-Vektor sein soll? Sprich, mit delta suchst du nach 4 Unbekannten.
Grüße,
Harald
|
|
|
Rock |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 14.07.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 31.07.2011, 18:41
Titel:
|
|
|
|
|
dachte, dass erkennt Matlab automatisch.....
Habe jetzt diese Variante probiert:
x0 = [1 ; 1 ; 1; 1 ];
f = @(x)[(norm(x(1),x(2),x(3)-satpos1)-c*(differenz1+x(4)));
(norm(x(1),x(2),x(3)-satpos2)-c*(differenz2+x(4)));
(norm(x(1),x(2),x(3)-satpos3)-c*(differenz3+x(4)));
(norm(x(1),x(2),x(3)-satpos4)-c*(differenz4+x(4)))];
fsolve(f, x0);
ERGEBNIS:
??? Error using ==> norm
Too many input arguments.
Error in ==>
@(x)[(norm(x(1),x(2),x(3)-satpos1)-c*(differenz1+x(4)));(norm(x(1),x(2),x(3)-satpos2)-c*(differenz2+x(4)));(norm(x(1),x(2),x(3)-satpos3)-c*(differenz3+x(4)));(norm(x(1),x(2),x(3)-satpos4)-c*(differenz4+x(4)))]
Error in ==> fsolve at 254
fuser = feval(funfcn{3},x,varargin{:});
Error in ==> Aufgabe25 at 7
fsolve(f, x0);
Caused by:
Failure in initial user-supplied objective function evaluation. FSOLVE cannot continue.
Ist die Schreibweise denn in Ordnung, wenn man einen Vektor herausbekommen möchte?
Habe dazu leider nichts gefunden....
Habe das gleiche auch mit dem alten Editoreintrag ausprobiert:
x0 = [0;0;0];
f = @(x) norm(x(1),x(2),x(3)-satpos)-c*(differenz+x(4));
fsolve(f, x0);
Das Ergebnis bleibt dasselbe.
Noch ein Ansatz:
Wie man im Error erkennen kann habe ich anstatt x(1),x(2).... x(1,2,3) geschrieben, damit kommt dieser Fehler:
??? Index exceeds matrix dimensions.
Error in ==>
@(x)[(norm(x(1,2,3)-satpos1)-c*(differenz1+x(4)));(norm(x(1,2,3)-satpos2)-c*(differenz2+x(4)));(norm(x(1,2,3)-satpos3)-c*(differenz3+x(4)));(norm(x(1,2,3)-satpos4)-c*(differenz4+x(4)))]
Error in ==> fsolve at 254
fuser = feval(funfcn{3},x,varargin{:});
Error in ==> Aufgabe25 at 7
fsolve(f, x0);
Caused by:
Failure in initial user-supplied objective function evaluation. FSOLVE cannot continue.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 31.07.2011, 21:17
Titel:
|
|
Hallo,
MATLAB kann vieles, aber nicht hellsehen.
Du solltest mal versuchen, ob dein Function Handle überhaupt mit dem Startwert umgehen kann. Wenn das nicht geht, kann FSOLVE nicht klappen.#
Du müsstest x([1, 2, 3]) bzw. x(1:3) schreiben. x(1,2,3) wird also 3D-Index aufgefasst.
Grüße,
Harald
|
|
|
Rock |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 14.07.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.08.2011, 15:35
Titel:
|
|
x0 = [0 ; 0 ; 0 ; 0 ];
f = @(x)[(norm(x(1:3)-satpos1)-c*(differenz1+x(4)));
(norm(x(1:3)-satpos2)-c*(differenz2+x(4)));
(norm(x(1:3)-satpos3)-c*(differenz3+x(4)));
(norm(x(1:3)-satpos4)-c*(differenz4+x(4)))];
fsolve(f, x0);
So funktioniert es, doch wenn ich die Werte umrechne auf Längen und breitengerade, komme ich nicht zum gewünschten Ergebnis.
Kann es sein, dass ich etwas falsch gemacht habe?
muss bei norm vllt. noch eine ,1 hin?
aber auch wenn ich es damit mache ist das Ergebnis nicht korrekt.
kann die carth2phere funcrion falsch sein?
blub, was soll ich bloß tun
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 02.08.2011, 16:07
Titel:
|
|
Hallo,
du solltest dir zwei, oder besser drei Rückgabeargumente von FSOLVE zurückholen.
Anhand des zweiten kannst du sehen, ob die Gleichungen erfüllt werden oder nicht. Ob eine Lösung gefunden wurde, kannst du auch am dritten Rückgabeparameter ablesen. Siehe
für mehr Informationen dazu.
Wenn keine Lösung gefunden wurde, kann es sein, dass der Startwert zu schlecht war. Wenn du einen besseren Anfangswert als [0; 0; 0; 0] zur Verfügung stellen kannst, solltest du das tun.
Grüße,
Harald
|
|
|
Rock |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 14.07.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 02.08.2011, 19:38
Titel:
|
|
Ich glaube ich habe mich schlecht ausgedrückt.
Also ich bekomme Werte für F (x,delta) heraus und zwar
1538,40458378470
707,828539664761
802,921794178895
0,0358967670867792
Diese Werte bei carth2sphere eingegeben bringen als Ergebnis
die Werte:
B= 25.367452363905134
L= 24.707423033196555
Herauskommen soll aber ca.
B= 49.9915
L= 8.23897
Also muss ich irgendwo einen Fehler gemacht haben, die Frage ist nur wo.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 02.08.2011, 21:32
Titel:
|
|
Hallo,
ich meine schon, das verstanden zu haben.
Wenn du aber keinen Fehler in den Gleichungen gemacht hast, ist das wahrscheinlichste, dass FSOLVE Probleme hat, die Lösung zu finden - siehe oben.
Grüße,
Harald
|
|
|
Rock |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 14.07.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.08.2011, 09:58
Titel:
|
|
Weiter im Text ich habe...
Ich habe die Startwerte geändert, doch das Ergebnis bleibt sich gleich.
Ich habe doc solve gelesen, bin jetzt aber auch nicht schlauer.
Die Antwort die ich beim lösen erhalte ist folgende:
Equation solved, inaccuracy possible.
The vector of function values is near zero, as measured by the default value
of the function tolerance. However, the last step was ineffective.
<stopping criteria details>
fsolve stopped because the sum of squared function values, r, changed by 1.328387e-017
relative to its initial value; this is less than max(options.TolFun^2,eps) = 1.000000e-012.
r = 9.264423e-023, is less than sqrt(options.TolFun) = 1.000000e-003.
Optimization Metric Options
relative change r = 1.33e-017 max(TolFun^2,eps) = 1e-012 (default)
r = 9.26e-023 sqrt(TolFun) = 1.0e-003 (default)
Aufgrund dessen habe ich in "optimtool" rumgespielt und die Werte kleiner gemacht, dabei ergeben sich keine neuen Ergebnisse.
|
|
|
Rock |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 14.07.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.08.2011, 10:13
Titel:
|
|
exitflag = 3
Change in the residual was smaller than the specified tolerance.
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 03.08.2011, 12:02
Titel:
|
|
Hallo,
es scheint, dass FSOLVE richtig gearbeitet hat.
In den Gleichungen sehe ich auch keine Probleme.
Ich würde also noch überprüfen, ob die Parameter (Sat-Positionen) richtig übernommen wurden.
Im Zweifelsfall schadet vielleicht auch ein Gespräch mit dem Professor oder seinem Assistenten nicht?
Grüße,
Harald
|
|
|
Rock |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 15
|
|
|
|
Anmeldedatum: 14.07.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 08.08.2011, 15:40
Titel:
|
|
Hi,
habe jetzt nochmal was anderes probiert uns zwar mit den signallaufzeiten.
Dann bekomme ich folgendes Ergebnis:
Warning: Trust-region-dogleg algorithm of FSOLVE cannot handle
non-square systems; using Levenberg-Marquardt algorithm instead.
> In fsolve at 324
In Aufgabe2final1 at 8
No solution found.
fsolve stopped because the last step was ineffective. However, the vector of function
values is not near zero, as measured by the default value of the function tolerance.
<stopping criteria details>
dann habe ich das Spiel mit dem Levenberg-Marquardt algorithm probiert.
Da bekomme ich
Optimization running.
Objective function value: 379.9146930695315
No solution found.
fsolve stopped because the problem appears to be locally singular.
was bedeutet das und was kann ich noch ändern?
|
|
|
Harald |
Forum-Meister
|
|
Beiträge: 24.492
|
|
|
|
Anmeldedatum: 26.03.09
|
|
|
|
Wohnort: Nähe München
|
|
|
|
Version: ab 2017b
|
|
|
|
|
|
Verfasst am: 08.08.2011, 16:15
Titel:
|
|
Hallo,
das heißt, dass keine Lösung gefunden wurde.
Du kannst den Startwert oder natürlich auch andere Einstellungen von FSOLVE ändern.
Die Rückmeldung, die du zuvor (3.8., 11:5 bekommen hattest, hat aber eher auf eine korrekte Lösung hingewiesen.
Grüße,
Harald
|
|
|
|
Gehe zu Seite Zurück 1, 2
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|