list - 在 Lisp 中存储多变量多项式的最佳方式

标签 list lisp polynomial-math

我需要在我的 lisp 程序中存储多项式以进行加法、减法和乘法。但找不到一种简单的存储方法。

我考虑过以下方式

(2x^3 + 2x + 4y^3 - 2z) 在列表列表中,其中每个列表是每个幂的数量列表

= ( (0 2 0 2) (0 0 0 4) (0 2) )

但是每个列表的不确定长度和潜在长度可能会成为一个问题。

是否有一种普遍接受的方法将它们存储在 lisp 中,从而尽可能容易地将它们加、减和乘在一起?

最佳答案

假设您事先知道可能变量的数量,您可以这样表达每个项:(constant x-exponent y-exponent z-exponent ...)。那么 5xy^2 就是 (5 1 2 0),一个完整的表达式就是这些项的列表。

如果您希望能够处理任意数量的任意变量,则需要按照 ((constant 5) (a 0) (b 3) (z 23) (苹果 13)).

无论哪种方式,如果您从单个术语开始,就可以轻松构建更复杂的表达式,而且这样您就不需要弄乱多个维度。

关于list - 在 Lisp 中存储多变量多项式的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27214993/

相关文章:

Javascript - 从字符串中解析多项式

c - 确定多项式方程的次数

list - 交替应用输入一元函数的 Haskell 函数

python - 在python中使用正则表达式提取可变长度数字

python - 需要在 Python 中对长的、格式奇怪的数据集取平均值

c++ - 在 C++ 中分配和释放类整数句柄的快速算法

lisp - push 没有像我预期的那样工作 - 为什么?

clojure - 使用 Clojure 编写蒙特卡洛模拟程序

lisp - 将 Lisp 语法与 (operator-integer-operator) 格式混淆

math - 余数序列