
Error in MuPAD command: Index exceeds matrix dimensions.
Publicado por Marcos (9 intervenciones) el 16/03/2015 17:04:38
Hola buenas tardes amigos,
llevo un tiempo intentando resolver este codigo pero me atasco en el error que les marco en el mismo. El codigo es mucho mayor pero creo que este fragmento es una buena representacion para lo que necesito corregir.
Error in MuPAD command: Index exceeds matrix dimensions.
Gracias por su ayuda!! ^^
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
A=[1 1;
1 -0.5;
4 -0.5;
4 -2;
3 0.5];
L=5;
D= [0 4.24 3.04 3.95 2.02;
0 0 3 3.4 2.23;
0 0 0 2.02 2.98;
0 0 0 0 4.01
0 0 0 0 0];
T= [0 32 27 19 29;
0 0 49 48 30;
0 0 0 67 80;
0 0 0 0 57
0 0 0 0 0];
alpha=0.5;
num_iter=45;
mat=zeros(12,6,num_iter);
aux2=1;
aux4=1;
syms x y ya yb yc
xx=[];
yy=[];
xxx=[];
yyy=[];
for k=1:5-2
for kk=1:5
if (k<kk)
for i=1:5-1
for ii=1:5
if( (i<ii && i>=k && ii>kk) || (i<ii && i>=k+1 ) )
[xx,yy]=solve(sqrt((A(k,1)-x)^2 +(A(k,2))^2 ) + alpha*(y-x) + sqrt((A(kk,1)-y)^2 +(A(kk,2))^2 ) == D(k,kk),...
sqrt((A(i,1)-x)^2 +(A(i,2))^2 ) + alpha*(y-x) + sqrt((A(ii,1)-y)^2 +(A(ii,2))^2 ) == D(i,ii));
dim=length(xx);
aux3=0;
for aux2=1:dim
imagx=imag(xx(aux2));
imagy=imag(yy(aux2));
if (imagx == 0.00 || imagy == 0.00)%solo lo consideramos solucion si la x e y no son imaginarios
aux3=aux3+1;
xxx(aux3)=xx(aux2);
yyy(aux3)=yy(aux2);
end
end
mat(1,1,aux4)=k;
mat(1,2,aux4)=kk;
mat(1,3,aux4)=i;
mat(1,4,aux4)=ii;
for p=1:dim
mat(p,5,aux4)=xxx(p);
mat(p,6,aux4)=yyy(p);
end
aux4=aux4+1;
end
end
end
end
end
end
for p=1:num_iter
if (mat(1,5,p)==0 && mat(1,6,p)==0);
ek=mat(1,1,p);
ekk=mat(1,2,p);
ei=mat(1,3,p);
eii=mat(1,4,p);
flag=0;
flag1=0;
flag2=0;
flag3=0;
flag4=0;
if flag4==0
for xaux=0:0.1:L
ecu=sqrt((A(ek,1)-xaux).^2 +(A(ek,2)).^2 ) + alpha* (y-xaux) + sqrt((A(ekk,1)-y).^2 +(A(ekk,2)).^2 ) - D(ek,ekk);
yg=solve(ecu,y);
for id=1:12
if flag==0
yaux=yg(id,1); %%%%%%%%%%%%%%%%%%%%%%%%%%AQUI DA EL ERROR!!!!!!!!!!!
yaux=double(yaux);
if imag(yaux)==0 && yaux<=L && xaux<yaux
if sqrt((A(ei,1)-xaux).^2+(A(ei,2)).^2 ) + alpha* (yaux-xaux) + sqrt((A(eii,1)-yaux).^2 +(A(eii,2)).^2 ) <= D(ei,eii)
mat(1,5,p)=xaux;
mat(1,6,p)=yaux;
flag=1;
flag4=1;
end
end
end
end
end
end
llevo un tiempo intentando resolver este codigo pero me atasco en el error que les marco en el mismo. El codigo es mucho mayor pero creo que este fragmento es una buena representacion para lo que necesito corregir.
Error in MuPAD command: Index exceeds matrix dimensions.
Gracias por su ayuda!! ^^
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
A=[1 1;
1 -0.5;
4 -0.5;
4 -2;
3 0.5];
L=5;
D= [0 4.24 3.04 3.95 2.02;
0 0 3 3.4 2.23;
0 0 0 2.02 2.98;
0 0 0 0 4.01
0 0 0 0 0];
T= [0 32 27 19 29;
0 0 49 48 30;
0 0 0 67 80;
0 0 0 0 57
0 0 0 0 0];
alpha=0.5;
num_iter=45;
mat=zeros(12,6,num_iter);
aux2=1;
aux4=1;
syms x y ya yb yc
xx=[];
yy=[];
xxx=[];
yyy=[];
for k=1:5-2
for kk=1:5
if (k<kk)
for i=1:5-1
for ii=1:5
if( (i<ii && i>=k && ii>kk) || (i<ii && i>=k+1 ) )
[xx,yy]=solve(sqrt((A(k,1)-x)^2 +(A(k,2))^2 ) + alpha*(y-x) + sqrt((A(kk,1)-y)^2 +(A(kk,2))^2 ) == D(k,kk),...
sqrt((A(i,1)-x)^2 +(A(i,2))^2 ) + alpha*(y-x) + sqrt((A(ii,1)-y)^2 +(A(ii,2))^2 ) == D(i,ii));
dim=length(xx);
aux3=0;
for aux2=1:dim
imagx=imag(xx(aux2));
imagy=imag(yy(aux2));
if (imagx == 0.00 || imagy == 0.00)%solo lo consideramos solucion si la x e y no son imaginarios
aux3=aux3+1;
xxx(aux3)=xx(aux2);
yyy(aux3)=yy(aux2);
end
end
mat(1,1,aux4)=k;
mat(1,2,aux4)=kk;
mat(1,3,aux4)=i;
mat(1,4,aux4)=ii;
for p=1:dim
mat(p,5,aux4)=xxx(p);
mat(p,6,aux4)=yyy(p);
end
aux4=aux4+1;
end
end
end
end
end
end
for p=1:num_iter
if (mat(1,5,p)==0 && mat(1,6,p)==0);
ek=mat(1,1,p);
ekk=mat(1,2,p);
ei=mat(1,3,p);
eii=mat(1,4,p);
flag=0;
flag1=0;
flag2=0;
flag3=0;
flag4=0;
if flag4==0
for xaux=0:0.1:L
ecu=sqrt((A(ek,1)-xaux).^2 +(A(ek,2)).^2 ) + alpha* (y-xaux) + sqrt((A(ekk,1)-y).^2 +(A(ekk,2)).^2 ) - D(ek,ekk);
yg=solve(ecu,y);
for id=1:12
if flag==0
yaux=yg(id,1); %%%%%%%%%%%%%%%%%%%%%%%%%%AQUI DA EL ERROR!!!!!!!!!!!
yaux=double(yaux);
if imag(yaux)==0 && yaux<=L && xaux<yaux
if sqrt((A(ei,1)-xaux).^2+(A(ei,2)).^2 ) + alpha* (yaux-xaux) + sqrt((A(eii,1)-yaux).^2 +(A(eii,2)).^2 ) <= D(ei,eii)
mat(1,5,p)=xaux;
mat(1,6,p)=yaux;
flag=1;
flag4=1;
end
end
end
end
end
end
Valora esta pregunta


0