Ist auch richtig so...
Man verwendet ja auch nicht wo es geht Interger. Aber bei wichtigen Anwendungen
wie zB. einem Rechner oder irgendein Programm das Zinsen usw. berechnet, dort wird dann natürlich auf etwas anderes gesetzt...
Division wird falsch ausgegeben
Warum keine Ganzzahlen
Ich möchte eine Gleichung mit Hilfe der Intervallschachtelung lösen.
Deshalb mit Float oder Double. Mein "Programm" hatte nicht so richtig funktioniert. Beim Fehlersuchen bin ich dann - durch ausprobieren- auf den Punkt gekommen den ich nicht so ganz verstanden hatte.
Ich werde mit den gemachten Anregungen weitermachen.
Nochmal danke.
Heiko
Deshalb mit Float oder Double. Mein "Programm" hatte nicht so richtig funktioniert. Beim Fehlersuchen bin ich dann - durch ausprobieren- auf den Punkt gekommen den ich nicht so ganz verstanden hatte.
Ich werde mit den gemachten Anregungen weitermachen.
Nochmal danke.
Heiko
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: Warum keine Ganzzahlen
dann empfielt es sich vielleicht doch mit integer zu arbeiten?heiko hat geschrieben:Ich möchte eine Gleichung mit Hilfe der Intervallschachtelung lösen.
also, bei jedem nächsten schritt mit 10 multiplizieren, um eine nachkommastelle mehr zu simulieren....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
Integer Nachkommastellen
Also das mit dem Intger und mit 10 multiplizieren klingt interessant.
Ich habe aber wirklich keine Ahnung wie man das durchführen kann.
Ich werde mal die Debugs aus dem Code entfernen und dann hier posten.
Vielleicht siehst Du dann was mein Problem ist.
Oder ich seh den Wald vor lauter Bäumen nicht.
Gruss
Heiko
Ich habe aber wirklich keine Ahnung wie man das durchführen kann.
Ich werde mal die Debugs aus dem Code entfernen und dann hier posten.
Vielleicht siehst Du dann was mein Problem ist.
Oder ich seh den Wald vor lauter Bäumen nicht.
Gruss
Heiko
Programmcode
Hallo also hier ist der Code. Wie gesagt, bin Anfänger.
Abbruchkriterium ist schwierig.
Vielleicht geht es ja wirklich mit Integer besser.
Heiko
Code: Alles auswählen
Dim x.d(1000)
Dim y.d(1000)
Global Merker1.d
Global Merker2.d
Define test.d
Global k.i
Procedure.f Funktion(x.f)
Define x.f
Define y.f
;hier die Formel eintragen zum Beispiel y=x*x-4.0
y=x*x-4
;y=x*x-3
;y=-1.5-Log10(x)
;Ende Formel
ProcedureReturn y
EndProcedure
;Startwerte
x(0)=0.0001
x(1)=7.0
For k = 1 To 100
y(k-1)=Funktion(x(k-1))
y(k)=Funktion(x(k))
If y(k-1)*y(k)>0
Debug "Keine Nullstelle"
Goto Fertig
EndIf
x(k+1)=(x(k-1)*y(k)-x(k)*y(k-1))/(y(k)-y(k-1))
;Mittelwert Test
;x(k+1)=(x(k+1)+x(k))/2
y(k+1)= Funktion(x(k+1))
If y(k+1)=0
Debug "Fertig"
; Debug y(k+1)
Debug x(k+1)
Goto Fertig
EndIf
If y(k+1)*y(k-1)<0
Debug "Ist kleiner"
Debug x(k)
Debug x(k+1)
x(k)=x(k-1)
y(k)=y(k-1)
Else
Merker1=x(k+1)
Merker2=y(k+1)
x(k+1)=x(k)
y(k+1)=y(k)
x(k)=Merker1
y(k)=Merker2
Debug "Ist grösser"
Debug x(k)
EndIf
Next k
Fertig:
; Debug y(k-1)
; Debug y(k)
; Debug y(k+1)
; Debug x(k-2)
; Debug x(k-1)
Debug "k"
Debug k
Debug x(k+1)
Debug Funktion(x(k+1))
; Debug x(k+2)
; Debug x(k+3)
; Debug x(k+4)
; Debug x(k+5)
; Debug x(k+6)
Vielleicht geht es ja wirklich mit Integer besser.
Heiko