Extras din referat
Tema 7:Integrare simbolica
Se va realiza integrarea simbolică în raport cu o variabilă.
Se permite citirea expresiei de integrat într-o formă mai uşor interpretabilă de program (forma prefix). Se va urmării tratarea cazurilor cât mai general posibile.
Exemplu: 2*X rezultă X^2+C.
Cerinte :
- se va realiza un program interactiv;
- documentatie.
Dificultate estimata: dificila
Efort de programare: mediu
Consideratii de implementare
Structura de date folosita pentru a implementa acest program este structura de lista prezenta in LISP.Citirea expresiei de integrat se va face sub forma prefix.Acest mod de citire este folosita pentru o mai usoara implementare.
In acest sens,au fost create au fost create o serie de functii care de asemenea sa usureze aceasta implementare :
- functii pentru a stabili tipul integralei care se doreste a fi calculata
ex : (defun is_inmultire (n)
(equal (car n) '*))
- functii de calcul a integralelor pentru fiecare caz particular
ex : (defun exponentiala (n)
(cond ((and (equal (car n) '^)(equal (cadr n) 'e) (equal (caddr n) 'x)) (list 'e^x+C))
((equal (caadr n) '*) (cons '+ (list (cons '* (cons (/ 1 (cadadr n)) n))'C)))))
- o functie care calculeaza orice tip de integrala si care verifica ce fel de integrala e folosindu-se de functiile specificate mai sus
(defun integrala (n)
(cond ((numberp n) (cons '+ (list (cons '* (cons n (list 'x) )) 'C)))
((equal n 'x) (cons '+ (list (cons '* (cons '0.5 (list (cons 'expt (cons 'x (list '2)))))) 'C )))
(t (cond ((is_adunare n) (append '(+) (mapcar 'integrala (cdr n))))
((is_scadere n) (append '(-) (mapcar 'integrala (cdr n))))
((is_putere n) (x^n&n^x n))
((is_sinus n) (sinus n))
((is_cosinus n) (cosinus n))
((is_exp n) (exponentiala n))
((and (atom n) (numberp n)) (integrala_numar))
(t (princ "Ati introdus un format gresit!") (terpri))))))
- functia program,care permite introducerea unei integrale de utilizator sau calculul unei integrale aflate in lista.
Programul trateaza expresii de forma: [integrala] f1 ±... fn ,acestea vor fi specificate sub forma : (± expresie1...expresien).
Toate expresiile sunt exprimate sub forma prefix.De exemplu daca vrem sa calculam e la puterea ax, semantica pentru program va fi :
(e (* a x)) iar valoarea integralei (valoarea returnata) va fi (+ (* 1/a E (* a X)) C)
Preview document
Conținut arhivă zip
- Integrare Simbolica LISP.doc