Loop for issue in me script
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Xavier Fleury
el 19 de Feb. de 2023
Hi, i need help with my loop for. I can't make it work if some one can help me
clear;
clc;
A=[1 0 0 -1 0 0; 1 0 0 0 0 0; 0 1 0 0 -1 0; 0 3 0 0 -1 -1; 0 0 1 0 0 -2; 0 -1 1 -2 0 0];
n=1;
for i=1
B=[0; i; 0; 4*i; 0; -2*i];
D=A\B;
a1=D(1,:);
b1=D(2,:);
c1=D(3,:);
d1=D(4,:);
f1=D(5,:);
g1=D(6,:);
ae=a1-round(a1);
be=b1-round(b1);
ce=c1-round(c1);
de=d1-round(d1);
fe=f1-round(f1);
ge=g1-round(g1);
if ae==0 && be==0 && ce==0 && de==0 && fe==0 && ge==0
e=i;
break;
else
i=i+1;
end
end
fprintf('a=%f b=%f c=%f d=%f e=%f f=%f g=%f',a1,b1,c1,d1,i,f1,g1);
fprintf('\n a=%f b=%f c=%f d=%f e=%f f=%f g=%f',ae,be,ce,de,i,fe,ge);
2 comentarios
Respuesta aceptada
Matt J
el 19 de Feb. de 2023
Editada: Matt J
el 19 de Feb. de 2023
clear;
clc;
A=[1 0 0 -1 0 0; 1 0 0 0 0 0; 0 1 0 0 -1 0; 0 3 0 0 -1 -1; 0 0 1 0 0 -2; 0 -1 1 -2 0 0];
i=1;
while 1
B=[0; i; 0; 4*i; 0; -2*i];
D=A\B;
if all( abs(D-round(D)) < 1e-8)
e=i;
break;
else
i=i+1;
end
end
a1=D(1,:);
b1=D(2,:);
c1=D(3,:);
d1=D(4,:);
f1=D(5,:);
g1=D(6,:);
ae=a1-round(a1);
be=b1-round(b1);
ce=c1-round(c1);
de=d1-round(d1);
fe=f1-round(f1);
ge=g1-round(g1);
e,
fprintf('a=%f b=%f c=%f d=%f e=%f f=%f g=%f',a1,b1,c1,d1,i,f1,g1);
fprintf('\n a=%f b=%f c=%f d=%f e=%f f=%f g=%f',ae,be,ce,de,i,fe,ge);
5 comentarios
Matt J
el 19 de Feb. de 2023
Editada: Matt J
el 19 de Feb. de 2023
That line tests if all D(i) are nearly integers (within 1e-8). The all(tf) command will test if all elements of tf are true.
Note that you cannot expect D to be exactly integer-valued, because it is the result of floating point computations.
Más respuestas (0)
Ver también
Categorías
Más información sobre Loops and Conditional Statements 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!