Valores de entrada insuficiente
Publicado por Marco (2 intervenciones) el 16/04/2015 17:51:20
Buenos días a todos, tengo una dificultad.
Deseo programar una función recursiva...pero el programa funciona para n = 4 y de ahi me sale este mensaje:
Attempted to access q(4); index out of bounds because numel(q)=3.
Error in Problema7 (line 7)
p(i)=sqrt(p(i-1)*q(i));
Estado viendo cual es el error...pero no lo encuentro.
He visto que por ahi se pone zeros(1,n) pero no entiendo, y cuando coloco esa opción el programa no corre...me salen puros ceros en la respuesta.
Les envío mi programa
% Aproximación modificado.
n=input('Ingrese un número entero positivo:');
%p=zeros(1,n);
%q=zeros(1,n);
p(1)=3; q(1)=2*sqrt(3);
for i=2:n
p(i)=sqrt(p(i-1)*q(i));
q(i)=(2*p(i-1)*q(i-1))/(p(i-1)+q(i-1));
end
fprintf('El área del polígono p inscrito en la circunferencia unidad es: %10.20f\n',p(n));
fprintf('El área del polígono q circunscrito en la circunferencia unidad es: %10.20f\n',q(n));
Muchas gracias por la colaboración.
Deseo programar una función recursiva...pero el programa funciona para n = 4 y de ahi me sale este mensaje:
Attempted to access q(4); index out of bounds because numel(q)=3.
Error in Problema7 (line 7)
p(i)=sqrt(p(i-1)*q(i));
Estado viendo cual es el error...pero no lo encuentro.
He visto que por ahi se pone zeros(1,n) pero no entiendo, y cuando coloco esa opción el programa no corre...me salen puros ceros en la respuesta.
Les envío mi programa
% Aproximación modificado.
n=input('Ingrese un número entero positivo:');
%p=zeros(1,n);
%q=zeros(1,n);
p(1)=3; q(1)=2*sqrt(3);
for i=2:n
p(i)=sqrt(p(i-1)*q(i));
q(i)=(2*p(i-1)*q(i-1))/(p(i-1)+q(i-1));
end
fprintf('El área del polígono p inscrito en la circunferencia unidad es: %10.20f\n',p(n));
fprintf('El área del polígono q circunscrito en la circunferencia unidad es: %10.20f\n',q(n));
Muchas gracias por la colaboración.
Valora esta pregunta
0