在Maxima中,有一些函数可以接受可变参数,例如diag_matrix(a1,a2,...,an),用于创建对角线元素为a1,...,an的对角矩阵。 然而,目前我有一个列表[a1,a2,..an],想从中创建一个对角矩阵。diag_matrix不能直接接受列表;有没有办法利用diag_matrix来创建矩阵?
通常,表达式apply(foo,[a1,...,an])将函数foo应用于参数列表[a1,...,an]。 特别地,apply(diag_matrix,[a1,...,an])将diag_matrix应用于[a1,...,an]。我认为这是你想要的。 请注意,apply评估其所有参数,即使foo引用其参数,或者foo评估为其他内容。因此,在Maxima中有一个“apply defeats quoting”习语,这通常很有用。