Common Lisp - 符号多项式计算
Common Lisp - symbolic polynomial calculation
我想在 lisp 上进行一些符号计算。
我发现了有用的导数函数,我想知道如何将简单的递归函数编写到 add/substract/etc。多项式。
输入(例如):(addpolynomial '(+ (^ (* 2 x) 5) 3) '(+ (^ (* 3 x) 5) (^ (* 3 x) 2)))
输出:(+ (^ (* 5 x) 5) (^ (* 3 x) 2)) 3)
你知道怎么做吗?
或者您可能知道其他符号计算示例?
当我过去在 Lisp 中处理多项式时,我使用了数字数组(假定变量,这意味着我不能简单地拥有 "x*x + y" 之类的东西,但是自从我不需要那个...)。
这允许您将“2x^5 + 3”表示为 #(3 0 0 0 0 2)
,通过 (aref poly n)
和其他方便的操作找到 x^n 的因子。
这也允许您将加法简单地定义为 (map 'vector #'+ ...)
(乘法需要更多的工作)。
我想在 lisp 上进行一些符号计算。 我发现了有用的导数函数,我想知道如何将简单的递归函数编写到 add/substract/etc。多项式。
输入(例如):(addpolynomial '(+ (^ (* 2 x) 5) 3) '(+ (^ (* 3 x) 5) (^ (* 3 x) 2)))
输出:(+ (^ (* 5 x) 5) (^ (* 3 x) 2)) 3)
你知道怎么做吗? 或者您可能知道其他符号计算示例?
当我过去在 Lisp 中处理多项式时,我使用了数字数组(假定变量,这意味着我不能简单地拥有 "x*x + y" 之类的东西,但是自从我不需要那个...)。
这允许您将“2x^5 + 3”表示为 #(3 0 0 0 0 2)
,通过 (aref poly n)
和其他方便的操作找到 x^n 的因子。
这也允许您将加法简单地定义为 (map 'vector #'+ ...)
(乘法需要更多的工作)。