Problema con Lisp

di il
4 risposte

Problema con Lisp

Spero che qualcuno di voi conosca il linguaggio Lisp perchè ho proprio bisogno di un aiuto!!!
Devo creare delle funzioni per il calcolo di derivate matematiche, fin qui nessun problema.. il passo dopo però è quello di semplificare i risultati ottenuti togliendo ad esempio le moltiplicazioni per 1, le somme con 0, l'elevamento a 1 ecc..

Il codice l'ho buttato giù cosi:

(defun derivata (f g)
;serie di condizioni per il calcolo delle derivate es:
(cond ((equal (first f) '*) `(+ (* ,(second f) ,(derivata (third f) g)) (* ,(third f) ,(derivata (second f) g))))
; etc....))

; chiamata per ottenere le derivate già semplificate
(defun der (f g) (semplifica (derivata f g)))

;funzione che DOVREBBE andare a valutare ogni elemento della lista applicandogli le regole di semplificazione
(defun semplifica (d)
(cons (car d) (mapcar 'semplificazione (cdr d))))

; regole di semplificazione
(defun semplificazione (d)
;serie di condizioni per ogni tipo di semplificazione es:
(cond ((and (equal (first d) '+) (equal (second d) '0)) (semplificazione (third d)))
; etc .....))





Ecco qua.. il problema è che se chiamo:
> (der '(* x x) 'x)
(+ x x)

funziona perfettamente, ma quando iniziano ad esserci funzioni annidate non fa più nulla .. esempio:
> (der '(+ (* 2 x) (* 3 x)) 'x)
(+ (+ (* 2 1) (* X 0)) (+ (* 3 1) (* X 0)))

Non riesco in pratica a far si che la semplificazione vada in profondità .. qualcuno ha la più pallida idea di come si potrebbe fare?! Almeno un'idea di base poi con il codice mi arrangio io però ora come ora sono nel nulla più totale e la cosa fantastica è che devo consegnare questo progetto entro il 28 dicembre..

Se avete qualche dubbi sulla mia spiegazione del problema chiedete pure cercherò di essere più chiara.. GRAZIE in anticipo!!!

4 Risposte

  • Re: Problema con Lisp

    Ciao, vorrei aiutarti ma non conosco il Lisp.
    Però ho trovato qualcosa non so se può servirti... alla pagina 16 c'è il codice per il calcolo di una derivata.
  • Re: Problema con Lisp

    Grazie Overflow ma purtroppo la parte di programma che c'è nel file l'ho già implementata ed è quella che funziona perfettamente..
    forza nessuno ha qualche idea?!?! una nota positiva è che la data di consegna è stata prolungata di due giorni.. abbiamo tempo fino al 30/12 !! dai dai confido in voi tra un pezzetto di torrone e una fetta di pandoro..
  • Re: Problema con Lisp

    Ciao sono anche io uno della bicocca...


    e ho anche io implementato un codice per la derivata

    ho dei problemi sulla semplifica

    tralaltro la tua come l'hai scritta non funziona... dice cannot take car of ''operatore''


    cmq ti lascio la mia mail



    un metodo per andare nelle profondita' ci sarebbe, vediamo se insieme riusciamo a fare filotto
  • Re: Problema con Lisp

    Ok contattato

    oh però qui.. se qualcuno a qualche idea, mi .. anzi ormai .. CI faccia sapere qualcosa
Devi accedere o registrarti per scrivere nel forum
4 risposte