In der Vorlesung wurde ein Programm entworfen, das symbolische Differenzierung durchführt. Man kann die Prozedur "ableitung" als Verteiler ansehen, der die Zuteilung nach dem "Typ" des zu differenzierenden Ausdrucks vornimmt. Das "Typenetikett" ist das algebraische Operatorsymbol (z. B. +) und die auszuführende Operation ist "ableitung". Dann kann man in datengesteuertem Stil ableiten: (define (ableitung ausdr var)
(cond ((konstante? ausdr) 0)
((variable? ausdr)
(if (gleiche-variable? ausdr var) 1 0))
(else ((get (operator ausdr) 'ableitung)
(operanden ausdr) var))))
(define (operator ausdr) (car ausdr))
(define (operanden ausdr) (cdr ausdr))
- Implementieren Sie das symbolische Ableiten auf diese Art für die vier Grundrechenarten. Warum können Konstante und Variable nicht ebenfalls datengesteuert abgeleitet werden?
- Wählen Sie eine beliebige weitere Ableitungsregel, z. B. für Potenzen mit dem Operatorsymbol **, und fügen Sie sie in dieses datengesteuerte System ein.