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, : 0 ≤ i ≤ n), 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: 0 ≤ i ≤ n)
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
etfor j = n:-1:k
edit polyval
vous montre comment l'Matlab gens mis en œuvre l'algorithme.
Vous devez vous connecter pour publier un commentaire.
Essayer ce - ici
a
est le vecteur des coefficients du polynôme a(1) que le coefficient du terme de plus haut degré dans le polynôme. Si votre vecteur est l'inverse, il suffit de définiret d'appeler la fonction à l'aide de vecteur
b
. Cette fonction permettra d'évaluer le polynôme à l'aide de Horniers de l'algorithme. Notez que cela supposez_0
est la valeur que vous souhaitez le polynôme évalué à, donc une seule valeur est retournée (pas un vecteur)Si vous voulez passer dans un vecteur des valeurs de
z
pour évaluer de sorte que vous pouvez évaluer plusieurs points (les éléments dez
) en même temps, vous pouvez les transmettre par l'intermédiaire d'un vecteur:maintenant le retour de l'
x
sera vecteur des résultatspolyval
de la fonction de vérification de la documentation.