Can someone explain why the top code works but the bottom one has an error that says "Index exceeds the number of array elements. Index must not exceed 1."
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
David
el 21 de Feb. de 2025
Comentada: David
el 21 de Feb. de 2025
First Code:
f=@(x) ((2.*x)./((2.*x)-1)).*((2.*x)/((2.*x)+1));
k=1;s=f(1);
for k=2:1000
s=s*f(k);
end
s
Second Code:
f=@(x) ((2.*x)./((2.*x)-1)).*((2.*x)/((2.*x)+1));
n=1;p=f(1);
for n=2:1000
p=p*p(n);
end
p
Error code: Index exceeds the number of array elements. Index must not exceed 1.
I am trying to evaluate the following product but only for n=1:1000

1 comentario
Respuesta aceptada
Stephen23
el 21 de Feb. de 2025
Editada: Stephen23
el 21 de Feb. de 2025
"Can someone explain why the top code works but the bottom one has an error that says "Index exceeds the number of array elements. Index must not exceed 1.""
Take a look at the size of p:
f=@(x) ((2.*x)./((2.*x)-1)).*((2.*x)/((2.*x)+1));
p=f(1);
size(p)
How many elements does it have? (hint: one)
What do you expect MATLAB to do when ask for the 2nd element of an array that has only one element in it? Because that is exactly what you are doing on the very first loop iteration, when you index into p like this: p(n).
Perhaps on this line
p=p*p(n);
you really intended to write this:
p=p*f(n);
% ^
Más respuestas (0)
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!