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

Genauigkeit Rechenergebnisse

 

dabauer82
Forum-Century

Forum-Century



Beiträge: 184
Anmeldedatum: 21.03.08
Wohnort: ---
Version: R2008a, R2010b
     Beitrag Verfasst am: 04.05.2008, 13:36     Titel: Genauigkeit Rechenergebnisse
  Antworten mit Zitat      
Hallo,

ich bin mir über mein Problem noch nicht so ganz im Klaren. Ich schildere mal den Umstand.

Ich berechne im Raum die Extremstellen einer Fläche, nämlich x und y Kandidaten und anschliessend die Z-Werte. Da ich jedoch nur die Z-Werte brauche, die auf dem Rand dieser Fläche liegen, überprüfe ich in einer Schleifenbedingung ob x^2 + y^2 ~= r^2 erfüllt ist und setze die nichtbrauchbaren Werte auf null.

Jetzt habe ich folgende Beobachtungen gemacht.

Mein Ableitung und Extremstellensuche führt zum Beipsiel auf folgende Lösung:

Code:
%Bilde die Ableitung nach y
DfDy = diff(fy,y,1);
yLsgnDifffy = solve(DfDy,y)

yLsgnDifffy =
 
1+4/5*5^(1/2)


Jetzt bekomme ich, wenn ich weiter mit Matlab rechnen will, oder z.B ein <= oder >= Vergleich machen will, eine Fehlermeldung wie folgt:
Code:

if (yLsgnDifffy >= 2)
    disp('bla')
end

??? Undefined function or method 'ge' for input arguments of type 'sym'.


Aus diesem Grund habe ich nun vor allen meinen Lösungen ein eval() gesetzt, um diese Brüche und Co auszurechnen.
Ich erhalte somit auch lesbare Ergebnisse:

Code:

yLsgnDifffy = eval(solve(DfDy,y))
yLsgnDiffgy = eval(solve(DgDy,y))

yLsgnDifffy =

    2.7889


yLsgnDiffgy =

   -0.7889


Problem ist jetzt nur, dass wenn ich jetzt mit denen von Matlab evaluierten Ergebnissen weiterrechne, unter der Ungenauigkeit auf 4 Stellen leide.
Die beiden Extremstellen x = 1.8944 und y = 2.7889, die definitiv auf dem Rand liegen, ergeben beim ausrechnen nicht 4 sondern 4.0001
Eine Überprüfung auf x^2 + y^2 ~= r^2 ist nicht möglich. Zur Zeit helfe ich mir mit 4 = round(4.001) - aber das finde ich alles stümperhaft.
Kann mir jmd helfen?

Meine Fragen sind jetzt die folgenden. Warum kann ich mit diesen Ergebnisse nicht rechnen, warum muss ich eval verwenden oder double damit dieser symbolische Charakter verloren geht und wenn ich es eben doch muss, wie kann ich die genauigkeit erhöhen? weil wie folgende matrix zeigt, das Ergbenis müsste eine Kreismatrix sein, fallen noch zuviele Werte heraus...


Code:
       
         0         0         0         0         0         0         0
         0         0         0    0.6163         0         0         0
         0   -0.8899   -0.8240         0         0    1.5611         0
   -0.5833   -0.2417         0         0         0         0    2.0833
         0   -0.2936   -0.2278         0         0    2.1574         0
         0         0         0         0         0         0         0
         0         0         0         0         0         0         0


danke
Private Nachricht senden Benutzer-Profile anzeigen


dabauer82
Themenstarter

Forum-Century

Forum-Century



Beiträge: 184
Anmeldedatum: 21.03.08
Wohnort: ---
Version: R2008a, R2010b
     Beitrag Verfasst am: 05.05.2008, 14:03     Titel:
  Antworten mit Zitat      
Den einzigen Vorschlag den ich jetzt noch machen könnte ist, dass ich mir ein Epsilon-Intervall definiere...allerdings finde ich das immer noch nicht gut genug.... Einer ne Idee?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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.