Трудни проекти

Труден проект 4: Символно интегриране

Труден проект 4: Символно интегриране

от Трифон Трифонов -
Number of replies: 0


Да се реализира функция, която по зададен аналитичен израз на елементарна математическа функция намира символен израз на нейна примитивна функция (неопределен интеграл). Като вход се задава и променливата, по която интегрираме. Поради сложността на задачата намиране на неопределен интеграл от математическа гледна точка, може да се работи с ограничен набор функции, например:
<expression> ::= <term> | <term> + <expression> | <term> - <expression> 
<term> ::= <elem> | <elem> * <pow> | <pow> * <elem> | <pow> * <pow> | - <term>
<elem> ::= e^<var> | ln(<var>) | sin(<var>) | cos(<var>)
<pow> ::= <var>^<number> | [+|-] <number>
<var> ::= a | ... | z | A | ... | Z
<number> ::= 0|1|2|3|4|5|6|7|8|9 {0|1|2|3|4|5|6|7|8|9}

Представянето на формулите може да бъде реализирано например със списъци.
Пример:

(integral '(* (^ x 2) (e^ y)) x) ----> (* (/ (^ x 3) 3) (e^ y)) 
(integral '(* (^ x 2) (e^ y)) y) ----> (* (^ x 2) (e^ y))
(integral '(* (^ x 2) (e^ y)) z) ----> (* (* (^ x 2) (e^ y)) z)