Scheme - Skript [deriv]! Dringend schnelle HILFE!!!!!
2003-02-16 11:57
Frischling
Hi Leute,
die Funktionen Höherer Ordnung machen mich noch fertig:
im Scheme-Skriptteil C, steht zu Anfang diese nette Funktion, die ich einfach nicht nachvollziehen kann:
(define (deriv f)
(let ((dx 0.00001))
(lambda (x)
(/(- (f(+ x dx)) (f x))
dx))))
(define sin' (deriv sin))
>(sin' 0) => 0.9999999983333334
Also eigentlich müßte f doch in diesem Fall (sin 0) sein oder?
lambda (x) müßte lambda (dx) sein, also müßte das ganze in etwa so berechnet worden sein
((deriv sin)0)
(let ((dx 0.00001))
(lambda (0.00001)
(/(-((sin 0(+ 0.00001 0.00001))((sin 0) 0.00001))
So komme ich aber nicht auf das gleiche Ergbnis!
Ist hier eine Rekursion am Start? Wenn ja, wo ist der Rekursionabschluß?
Wie Ihr sehen könnt, hab ich bei dieser Funktion überhaupt kein durch Blick, kann mir jemand von Euch den dahinter steckenden Berechnungsweg erklären. Quasi ein besseres TRACE liefern als Scheme!
LG und Danke Frischling
die Funktionen Höherer Ordnung machen mich noch fertig:
im Scheme-Skriptteil C, steht zu Anfang diese nette Funktion, die ich einfach nicht nachvollziehen kann:
(define (deriv f)
(let ((dx 0.00001))
(lambda (x)
(/(- (f(+ x dx)) (f x))
dx))))
(define sin' (deriv sin))
>(sin' 0) => 0.9999999983333334
Also eigentlich müßte f doch in diesem Fall (sin 0) sein oder?
lambda (x) müßte lambda (dx) sein, also müßte das ganze in etwa so berechnet worden sein
((deriv sin)0)
(let ((dx 0.00001))
(lambda (0.00001)
(/(-((sin 0(+ 0.00001 0.00001))((sin 0) 0.00001))
So komme ich aber nicht auf das gleiche Ergbnis!
Ist hier eine Rekursion am Start? Wenn ja, wo ist der Rekursionabschluß?
Wie Ihr sehen könnt, hab ich bei dieser Funktion überhaupt kein durch Blick, kann mir jemand von Euch den dahinter steckenden Berechnungsweg erklären. Quasi ein besseres TRACE liefern als Scheme!
LG und Danke Frischling