2016-06-11 12 views
0

Einer meiner Freunde fragte mich, warum einfache äquivalente Formeln unterschiedliche Ergebnisse erzielen. Entschuldigen Sie, dass der Code ein bisschen lang ist, aber der interessante Teil ist nur Linie 99 und 100. Hier ist die formulas und die code. Ich habe den Code überprüft. Das Problem ist, wo f = 1. Das Problem ist Zeile 99 und 100. Es dauert ungefähr 10 s, um den Code auszuführen. Danke für jede Anleitung oder Kommentar.Äquivalente Formeln ergeben unterschiedliche Ergebnisse in MATLAB

Antwort

1

Einfach. Es ist nur wegen Rundungsfehlern. Was haben Sie auf Kommentar hat einige Rundungsfehler, die fplus~=1 macht, so:

E = log((1 - 1")/1) >= log(eps) >= -36.0437. 

während der reale Wert sein sollte:

E = log((1 - 1)/1) = log(0) = -Inf 
+0

Also hier die vereinfachte Form besser ist. Dosiere es egal 'log' zeige imaginären Teil? Es ist auch für den Rundungsfehler. – Abolfazl

+0

@Abolfazl In Ihrem Code sind sowohl "fminus" als auch "fplus" positiv. also gibt es keinen imaginären Teil. Und bei der Berechnung des Logs wirken sich Rundungsfehler nur auf einige spezielle Werte aus, dh auf Zahlen, die ungefähr gleich null oder eins sind (wo Sie 'log1p' verwenden sollten). – eulerleibniz