Matlab - Electronico

 
Vista:

Electronico

Publicado por Patricio Ventura Aldama (2 intervenciones) el 03/06/2005 03:46:16
Que tal, Si alguien me puede ayudar

Necesito un algoritmo que me pueda multiplicar n matrices con un solo ciclo for anidado
puedo hacer solo la multiplicacion para dos matrices.

gracias por ver el mensaje.

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

RE:Electronico

Publicado por fismat (391 intervenciones) el 30/09/2005 15:49:24
Hola te envio un emlace a un forum de matlab y un script que calcula la fuerza electrica resultante de n cargas puntuales y ademas realiza la grafica en 3D de la direccion resultante

http://www.universas.com/matlab/phpBB2/index.php

clear all
close all
ncargas=0;

while (ncargas<2)

ncargas=input('Numero de Cargas : ');

if (ncargas>1)

fprintf('\nCargas y Posiciones de las %d Cargas\n',ncargas)

for n=1:ncargas
fprintf('\n');
Q(n)=input(['Carga --> Q[',num2str(n),'] : ']);
X(n)=input(['Posición --> X[',num2str(n),'] : ']);
Y(n)=input(['Posición --> Y[',num2str(n),'] : ']);
Z(n)=input(['Posición --> Z[',num2str(n),'] : ']);
end

id=input('Calcular la fuerza Electrica sobre la carga : ');

fx=0;
fy=0;
fz=0;
epsi=8.854e-12;
const=1/(4*pi*epsi);
for i=1:ncargas

if (i~=id)
x=X(id)-X(i);
y=Y(id)-Y(i);
z=Z(id)-Z(i);
r=sqrt(x^2+y^2+z^2);
fx=fx+const*Q(id)*Q(i)*x/r^3;
fy=fy+const*Q(id)*Q(i)*y/r^3;
fz=fz+const*Q(id)*Q(i)*z/r^3;
end

end
fx,fy,fz
Fe=sqrt(fx^2+fy^2+fz^2)
if (Fe~=0)
ui=fx/Fe;
uj=fy/Fe;
uk=fz/Fe;
else
disp('Posible equilibrio de fuerzas')
disp('verificar los valores de posiciones y cargas')
ui=0;
uj=0;
uk=0;
end

for i=1:ncargas
if (Q(i)>0)
plot3(X(i),Y(i),Z(i),'or','markersize',7,'LineWidth',4)
hold on
plot3(X(i),Y(i),Z(i),'+b','markersize',7,'LineWidth',3)
hold on
plot3([X(id),X(i)],[Y(id),Y(i)],[Z(id),Z(i)],'--r','markersize',8)
hold on
text(X(i)+0.2,Y(i)+0.2,Z(i)+0.2,num2str(i),'fontsize',15)

else
plot3(X(i),Y(i),Z(i),'.k','markersize',22)
hold on
plot3([X(id),X(i)],[Y(id),Y(i)],[Z(id),Z(i)],'--r','markersize',8)
hold on
text(X(i)+0.2,Y(i)+0.2,Z(i)+0.2,num2str(i),'fontsize',15)
end
end

quiver3(X(id),Y(id),Z(id),ui,uj,uk,0.5)
axis([min(X)-2 max(X)+2 min(Y)-2 max(Y)+2 min(Z)-2 max(Z)+2])
title({'CREDITOS: DAVID CORREA','LA FUERZA RESULTANTE ES : ',[num2str(Fe,3),' Newton ' ]})
xlabel('Eje X');
ylabel('Eje Y');
zlabel('Eje Z');
grid on


else
disp('Considere el numero de cargas mayor o igual a 2')
salir=input('Desea continuar si[s]/no[n] ','s');

if or(salir=='n',salir=='N')
disp('**** Ha terminado ****')
break
end


end

end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Electronico

Publicado por José Armando (2 intervenciones) el 06/10/2005 04:20:40
Hola [email protected] !!!

N = numero de matrices a multiplicar
M1, M2, ... , MN ---- Matrices

Mtotal = M1; Matriz 1 para inicializar

For i = 2 to N

Mtotal = Mtotal * M(i);

End For

Solo tiene que tener encuenta el tamaño de las matrices (fials, columnas) para que se pueda hacer la multiplicación..

Hasta luego,

José Armando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar