MatLab de l'algorithme de Horner

Je vais avoir quelques difficultés à traduire un pseudo-code de l'algorithme de Horner dans un bon code en MatLab. Je pense que ma confusion vient du fait que le code suppose que le premier vecteur d'entrée peut être désigné par 0, alors que dans MatLab, ce doit être 1. J'ai essayé de modifier mon code en conséquence, mais je n'ai pas l'obtenir pour fonctionner correctement. Le pseducode est comme suit:

input n, (a_i, : 0in), z_0
   for k = 0 to n-1 do
      for j = n-1 to k step -1 do
          a_j = a_j + z_0*a_(j+1)
      end do
end do
output (a_i: 0in)

Ici est une tentative de ma part à l'écriture de ce dans MatLab, où a est un vecteur d'entrée représentant les coefficients d'un polynôme:

function x = horner(a,z_0)
n = length(a);
for k = 1:n-1
    for j = n-1:-1:k
        a(j) = a(j) + (z_0)*a(j+1);
    end
end
x = a;

J'ai essayé cela sur le vecteur a = [1 -4 7 -5 -2] qui représente les coefficients d'un polynôme. J'ai également réglé z_0 = 3. Selon mon livre, je devrais avoir reçu la sortie vecor a = [1 8 25 37 19], mais mon code donne le vecteur de sortie a = [-245 -313 -146 -29 -2].

Si quelqu'un peut m'aider à éclaircir ce code, je vous serais très reconnaissant!

  • ressemble à une boucle de court: je dirais qu'il devrait être k = 1:n et for j = n:-1:k
  • edit polyval vous montre comment l'Matlab gens mis en œuvre l'algorithme.
InformationsquelleAutor Kristian | 2012-08-14