Matlab - Valores de entrada insuficiente

 
Vista:

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.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JESUS
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Valores de entrada insuficiente

Publicado por JESUS (1818 intervenciones) el 17/04/2015 02:42:55
según el código que programas , deberías ser así :
1
2
3
4
5
6
7
8
9
10
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-1));
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));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar