a[sqrt(2)] : 1;
arrays;
我会得到:
[a]
所以a
是Maxima的数组......但sqrt(2)
是一个无理数。
我习惯将数组视为按索引排序的项集合,其中这些索引是整数...我承认我对“数组”的定义受到其他“非符号”编程语言的强烈影响。在这些语言中,数组“映射”到计算机内存的某个连续区域。因此,使用整数作为索引是很自然的,因为整数是可数的。但是,实数不可数。
显然,maxima似乎对术语“数组”有不同的定义:究竟是什么? (文档没有定义它,至少在documentation section dedicated to arrays)
中没有介绍性段落答案 0 :(得分:3)
Maxima的数组,列表和矩阵的概念非常混乱,因为在项目的许多年里,各种想法都有所增加。
Maxima的“下标变量”=带下标(带任意索引)且没有赋值的符号。例如。 a[sqrt(2)]
没有分配值。
Maxima的“未声明的数组”=具有任意键的哈希表,与数组符号相关联作为符号属性,而不是值。您的a[sqrt(2)] : 1
是未声明数组的示例。 Maxima在第一次分配值时创建数组a
。
Maxima的“声明数组”=连续存储,与数组符号相关联,作为符号属性,而不是值。
Maxima的“Lisp数组”=连续存储,与数组符号关联为符号值。
Maxima的“快速数组”=哈希表,与数组符号相关联作为符号值。
是的,这是一团糟。对于那个很抱歉。这些都是有趣的想法,但没有统一的框架。我甚至没有提到列表和矩阵。希望这对所有人都有帮助。