Question

Je suis en train d'écrire un solveur général pour un système linéaire à l'aide Maxima linsolve(eqlist, varlist), mais sans avoir à spécifier explicitement la dimension du problème.

Cela fonctionne, mais fixe la dimension à 3:

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

Cela ne:

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)
)

Toute idée sur la façon d'obtenir que cela fonctionne?


Contexte derrière le problème : ce système linéaire se pose lors de la résolution la somme finie de puissances entières, à savoir la somme des carrés, finiment beaucoup de cubes, ou des pouvoirs généraux p. Bien que la somme finie de carrés est simple, la solution générale est étonnamment complexe: une discussion se trouve ici: sommation Finite par récurrence des relations, Partie 2 .

Était-ce utile?

La solution

Apparemment, dans Maxima, les listes et les tableaux ne sont pas le même objet sous-jacent.

Les tableaux sont plus complexes et un peu de désordre à faire fonctionner (comme suggéré

scroll top