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

interne Genauigkeit

 

JacksoN123
Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 07.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.04.2015, 13:09     Titel: interne Genauigkeit
  Antworten mit Zitat      
Hallo,

ich möchte die interne Rechengenauigkeit erhöhend, in meinem Fall Nachkommastellen.

Es geht um folgende Funktion
Code:
normcdf(4.9,1,1)

Matlab wirft glatt 1.0 aus. Tatsächlich ist das Ergebnis 0.999999999999999999999irgendwas.

Ich glaub gelesen zu haben, dass Matlab intern mit 16 Nachkommastellen arbeitet. Ist es möglich diese Rechengenauigkeit zu erhöhen?

Ich danke im Voraus.

p.s. Mir geht es NICHT um das Ausgabeformat
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 07.04.2015, 13:22     Titel:
  Antworten mit Zitat      
die glatte 1 ist das anzeige ergebniss. die das rechenergebniss ist
0.999951903655982
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.04.2015, 13:55     Titel:
  Antworten mit Zitat      
Hallo,

um alle Stellen angezeigt zu bekommen (siehe Ergebnis von winkow):
Code:


Um es genauer zu bekommen:
Code:
vpa % Symbolic Math Toolbox

oder
http://www.mathworks.com/matlabcent.....cision-toolbox-for-matlab

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 07.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.04.2015, 14:25     Titel:
  Antworten mit Zitat      
Wie gesagt mir geht es NICHT um das Ausgabeformat.

4.9 war nur ein Beispiel. Bei 10 ist der Wert dann tatsächlich 0.999999irgendwas.


@Harald

Könntest du ein kleines Beispiel mit dem vpa machen wie ich das cdf Problem löse?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Wie gesagt mir geht es NICHT um das Ausgabeformat.

Du musst verzeihen: dass Leute schreiben, dass es ihnen um irgendwas geht oder nicht, heißt bei genauerem Nachfragen häufig nicht, dass dem tatsächlich so ist.

Zitat:
4.9 war nur ein Beispiel. Bei 10 ist der Wert dann tatsächlich 0.999999irgendwas.

Es ist immer hilfreich ein Beispiel zu wählen, bei dem das Problem tatsächlich auftritt.

Zitat:
Könntest du ein kleines Beispiel mit dem vpa machen wie ich das cdf Problem löse?

Code:
syms cdf(x)
cdf(x) = 1/2 * (1 + erf((x - 1)/sqrt(2)));
vpa(cdf(10), 100)


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

Forum-Anfänger

Forum-Anfänger


Beiträge: 13
Anmeldedatum: 07.01.15
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.04.2015, 20:45     Titel:
  Antworten mit Zitat      
Ich bekomme einen Fehler:

Zitat:
??? Error using ==> syms at 61
Not a valid variable name.


Ich habe Matlab Version R2010a
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

Zitat:
Ich habe Matlab Version R2010a

Trag das doch am besten in dein Profil ein.

Ich habe es eben mit R2012a getestet, das älteste Release, das ich griffbereit habe, und dort läuft der gepostete Code.

Hast du mal in der Doku von syms geschaut? Vielleicht ist in deiner Version die Syntax noch geringfügig anders.


Alternativ:
Code:
syms x
cdf = 1/2 * (1 + erf((x - 1)/sqrt(2)));
vpa(subs(cdf, x, 10), 100)


Grüße,
Harald
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.