MATLAB - Stockwerkfrage

8

Ich bin ein MATLAB-Anfänger. Hier ist das Problem:

%Vor%

c sollte 1 sein, oder? Warum ist es 0 ???

Es ist anders, wenn b = 2 direkt wie folgt eingegeben wird:

%Vor%     
Amro 26.06.2009, 06:07
quelle

4 Antworten

11

In zwei Worten: Kürzungsfehler.

Sie haben Recht, c sollte genau arithmetisch 1.0 sein. Da Sie jedoch in den Argumenten von rem einen Float verwendet haben, erhalten Sie die Antwort als Float. Anscheinend ist b nicht genau 2, sondern 2.0, was bedeutet, dass es ein Double sehr nahe bei 2 ist. Daher wird b / 2 die doppelte 1.0, anscheinend in diesem Fall ist sein Wert etwas kleiner als eins, was eine 0 als ergibt der ganzzahlige Wert Wenn Sie dies verhindern möchten, verwenden Sie sowohl Boden als auch Decke und vergleichen Sie die Werte.

Wenn Sie die Antwort in Integer umwandeln möchten, verwenden Sie einfach round statt floor.

    
Martijn 26.06.2009, 06:31
quelle
6

Wenn Sie die Zeile

hinzufügen %Vor%

zu Ihrem Beispiel sehen Sie das Ergebnis

%Vor%

Bedeutung Matlab berechnet eine Zahl nahe, aber nicht genau, 2 für b. Das kommt bei der Arbeit mit Gleitkommazahlen ziemlich oft vor. Probieren Sie

aus %Vor%

für weitere Informationen.

    
mtrw 26.06.2009 07:09
quelle
2

Numerische Probleme dieser Art werden auch in der MATLAB-FAQ

    
Edric 26.06.2009 10:50
quelle
0

Ja, das ist ein numerisches Problem. Sie sollten solche Dinge mit Vorsicht verwenden. Wenn Sie genaue Arithmetik wollen, sollten Sie versuchen, 'sym' für Ihre Nummer, z. B.

%Vor%

Dann werden Sie keine solchen Fehler mehr haben, aber Ihre Berechnungen werden viel langsamer sein.

    
user677656 30.03.2012 12:12
quelle