Frage von Schueler0812, 21

n = n+1 Matlab?

Hallo, ich habe folgende aufgabe

Schreiben Sie ein MatLab-Skript zur Bestimmung der 
kleinsten natürlichen Zahl n , für die n und n+1
die gleiche Darstellung mit dem double -Datentyp
besitzen (und daher nicht unterschieden werden können).

wenn ich nun das mache

while n ~= n+1                  
n = n+1;                        
end  

wird der Rechner keine Ahnung wann Fertig also keine annehmbare Zeit.

Also habe ich mir gedacht da der Rechner im Binär Zahlensystem arbeitet mache ich 2^n

while 2^n ~= 2^n+1                
n = n+1;                        
end  

nun gibt er mir aus das n = 53 ist und die bedingungen:

if 2^n == 2^n+1                    
disp ('2^n ist laut Matlab das Selbe wie 2^n+1')
end
if 2^n ~= 2^n-1
disp('2^n kann von Matlab von 2^n-1 unterschieden werden')
end

erfüllt sind ich verstehe nur nicht warum.

Das er mir n+1 immer ein weiterzählt ist mir bekannt nur warum gerade 53 und warum ist das, dass selbe ???

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Mikkey, 18

Dass es gerade 53 ist, liegt daran, dass bei Double 52 Bits für die Mantisse verwendet werden.

Das Ergebnis, das gesucht ist, ist aber nicht 53 sondern 2^53

Kommentar von Schueler0812 ,

ja schon kla wenn ich für n=53 einsetzte steht da 2^53.

unter Mantisse verstehe ich die kommastellen bei der berechnung oder?

Sry das ich so blöd frage aber Matlab ist komplett neu für mich und ich brauch es fürs studium :D

Kommentar von Mikkey ,

Ich kenne Matlab überhaupt nicht. Es ergibt sich aber in jeder Umgebung dasselbe Ergebnis bei der Verwendung von Double (das ist überall dasselbe).

Eine Fließkomma-Zahl enthält ein Vorzeichen, eine Mantisse (die eigentlichen Werte - unskaliert) und einen Exponenten mit Vorzeichen. Daraus ergibt sich die relative Genauigkeit dieser Art von Zahlendarstellung.

Antwort
von Schilduin, 21

Ich denke dass hier könnte weiterhelfen:
http://de.mathworks.com/help/matlab/matlab_prog/floating-point-numbers.html

Tl;dr
Matlab speichert die Daten nicht mit beliebiger Genauigkeit, je größer der Wert, desto ungenauer.

Kommentar von Schueler0812 ,

Ich denke dass hier könnte weiterhelfen: ...

da steht doch nichts anderes drinne als eine erklärung für den typ double oder singel sowie die genauigkeit.

Tl;dr
Matlab speichert die Daten nicht mit beliebiger Genauigkeit, je größer der Wert, desto ungenauer

Ja richtig die genauigkeit von 64bit also die doppelte genauigkeit

sry aber irgendwie verstehe ich das trd. nicht -.-

Kommentar von Schilduin ,

Die Zahlen werden in dem Format 1.f*2^x gespeichert, wobei f eine binäre Zahl mit 52 stellen ist und x der Exponent, der einen Wert zwischen -1022 und 1023 annimmt (dabei steht im Speicher x+1023, damit man da nur mit positiven zahlen arbeitet)

Keine passende Antwort gefunden?

Fragen Sie die Community