我想在lisp上执行一些符号计算。 我找到了有用的派生函数,我想知道如何编写简单的递归函数来添加/减去/等。多项式。
输入(例如):(addpolynomial '(+ (^ (* 2 x) 5) 3) '(+ (^ (* 3 x) 5) (^ (* 3 x) 2)))
输出:(+ (^ (* 5 x) 5) (^ (* 3 x) 2)) 3)
你知道怎么做吗? 或者您可能知道其他符号计算示例?
答案 0 :(得分:2)
当我过去处理过Lisp中的多项式时,我使用了数组(假设变量,这意味着我不能轻易地拥有像#34; x * x + y",但因为我不需要......)。
这可以让你代表" 2x ^ 5 + 3"如#(3 0 0 0 0 2)
,通过(aref poly n)
和其他方便的操作找到x ^ n因子。
这也允许您将加法定义为(map 'vector #'+ ...)
(乘法需要更多的工作)。