Hallo Severus,
der Grund für das Verhalten ist doch simpel. Zahlen, die im Dezimalsystem endlich viele von Null verschiedene Nachkommastellen haben, brauchen das in anderen p-adischen Entwicklungen nicht zu haben und umgekehrt. Kleine Abweichungen sind nicht zu vermeiden. Bei häufiger Addition summieren sich diese bis zu darstellbaren Größen.
Übrigens würde ich das Problem nicht so, sondern nach dem Newtonschen Näherungsverfahren lösen.
Gruß
Holger
Severus schrieb am 16.12.2010 16:45:33:
@Holger: Da hast Du natürlich Recht. Mir ist es eigentlich zuerst darum gegangen den Grund für das Verhalten auszuschließen. Außerdem hat man hier die Möglichkeit über den "Faktor" die Genauigkeit einfach zu ändern.
Severus
Holger schrieb am 16.12.2010 16:21:23:
Ich mische mich nur ungern ein, aber ich glaube, das Problem ist einfacher zu lösen, wenn man nicht direkt mit 0 vergleicht, sondern mit einer kleinen Zahl, die quasi eine Fehlergrenze darstellt, z.B.
if abs(y)<.0000001
Gruß
Holger
Severus schrieb am 16.12.2010 14:02:58:
Es scheint, daß die Schleifenzählung mit Dezimalwerten nicht funktioniert!
Versuche mal
Sub test()
Dim e1 As Double, e2 As Double, e3 As Double, e4 As Double, e5 As Double
Dim a As Double, b As Double, c As Double, d As Double, e As Double, f As Double
Dim x As Double, y As Double, y1 As Double, Polyx As Double
Dim ZeichenFolge As String
e1 = 5#
e2 = 4#
e3 = 3#
e4 = 2#
e5 = 1#
a = 0#
b = 0#
c = 0#
d = 0#
e = 1#
f = 1#
For x = -2000# To 2000# Step 1
y = (a * ((x / 100) ^ (e1))) + (b * ((x / 100) ^ (e2))) + (c * ((x / 100) ^ (e3))) + (d * ((x / 100) ^ (e4))) + (e * ((x / 100) ^ (e5))) + f
If y = 0 Then
Polyx = x
MsgBox ("x Wert für die Polynom Division: ") & Polyx / 100
End If
y1 = y
Next x
End Sub
Severus |