解决Maxima中的线性系统问题

时间:2010-02-23 18:21:26

标签: math matrix discrete-mathematics linear maxima

我正在尝试使用linsolve(eqlist, varlist)在Maxima中为线性系统编写一般解算器,但无需明确指定问题的维度。

这样可行,但将尺寸修正为3:

linsolve( [ eq[0],eq[1],eq[2] ], [ a[0],a[1],a[2] ])

这不是:

solution(p):=(  
  array(eq,p+1), /* creating arrays of length p+1 */
  array(a,p+1),

  for i:0 thru p do (
    eq[i]: sum(binom(j+1,i)*a[j],j,i,p) = binom(p,i)
  ),

  linsolve(eq,a)
)

有关如何使其发挥作用的任何见解?

<小时/> 问题背后的背景:这个线性系统在求解整数幂的有限求和时出现,即有限多个正方形,立方体或一般幂p的总和。虽然有限的平方和很简单,但一般的解决方案却非常复杂:可以在这里找到讨论:Finite Summation by Recurrence Relations, Part 2

1 个答案:

答案 0 :(得分:1)

显然在Maxima中,列表和数组不是相同的底层对象。

阵列更复杂,工作起来有些混乱(如建议的in this posting到Maxima邮件列表)。

如果我们远离数组并改为使用列表,问题就会消失:

solution(p):= block([a, eq],        /* give subroutine variables local scope */
    v : makelist(a[i], i, 0, p),    /* create list of unknowns (0-indexed) */
   eq : makelist(sum(binom(j+1,i)*a[j],j,i,p) = binom(p,i), i, 0, p),  
                                    /* create list of equations (0-indexed) */
   linsolve(eq, v)
)