Matlab - Problema al multiplicar dos variables

 
Vista:
sin imagen de perfil

Problema al multiplicar dos variables

Publicado por Mr (2 intervenciones) el 18/11/2016 13:41:24
Hola,

Estoy haciendo un programa con matlab. Quiero calcular la multiplicación de dos variables pero cuando el programa lo calcula el resultado no es el correcto. No sé que estoy haciendo mal. He probado sacando las multiplicaciones por separado, cambiando la nomenclatura, modificando 'num2str' por otros encontrados por internet pero tampoco se resuelve, algunos dan errores.

Os adjunto la imagen del temporal con los valores que obtengo al ejecutarlo y los que tienen que salir. Por ejemplo, el primer valor que tengo que obtener de 'carga3xz' es 90 pero al ejecutarlo obtengo -6. En los siguientes en vez de dar un solo valor pone 2 o más valores como por ejemplo en el último valor nos representa ' -104 -102 -106 -64 -64 -104 -100 -106' y solo debería ser un de valor'-90'.

Cualquier dato que falte para la resolución decírmelo porque el programa es muy largo.

Muchas gracias.
Saludos.

Os dejo los comandos a ver si me podéis ayudar:


Datos:
L=100;
H=100;
NX=10;
NY=10;
DX=L/NX;
DY=H/NY;
carini3x=0;
carmed3x=0;
carfin3x=0;
carini3y=100;
carmed3y=0;
carfin3y=-100;

%esquina izq L3
i=1;
i1=i+1;
i2=i-1;
iz=num2str(i);
i1z=num2str(i1);
i2z=num2str(i2);
j=NY;
j1=j+1;
j2=j-1;
jz=num2str(j);
j1z=num2str(j1);
j2z=num2str(j2);


d1x=i*DX-(DX/2)
d1xz=num2str(d1x);
d2x=i*DX-(DX/2)-(L/2)
d2xz=num2str(d2x);

carpend1ertramo3x=(carini3x-carmed3x)/(L/2)%pendiente de la carga en L1 en la primera mitad del tramo
carpend2ertramo3x=(carmed3x-carfin3x)/(L/2)%pendiente de la carga en L1 en la segunda mitad del tramo

carpend1ertramo3y=(carini3y-carmed3y)/(L/2)%pendiente de la carga en L1 en la primera mitad del tramo
carpend2ertramo3y=(carmed3y-carfin3y)/(L/2)%pendiente de la carga en L1 en la segunda mitad del tramo

if i<NX/2
carga3x=carini3x-carpend1ertramo3x*d1xz;
carga3y=carini3y-carpend1ertramo3y*d1xz;
carga3xz=num2str(carga3x);
carga3yz=num2str(carga3y);


if ladox3==1
nlinea=nlinea+1;
linea(nlinea,1)={['BFXc',iz,'u',jz,' Xc',iz,'u',jz,' 0 V=V(Xc',iz,'c',jz,')+DY/(2*C2)*',carga3xz,'-DY/(2*DX)*(V(Yc',i1z,'u',jz,')-V(Yc',iz,'u',jz,'))']};
end
if ladoy3==1
nlinea=nlinea+1;
linea(nlinea,1)={['BFYc',iz,'u',jz,' Yc',iz,'u',jz,' 0 V=V(Yc',iz,'c',jz,')+DY/(2*C1)*',carga3yz,'-DY/(2*C1)*LAMD/(DX)*(V(Xc',i1z,'u',jz,')-V(Xc',iz,'u',jz,'))']};
end
nlinea=nlinea+1;
linea(nlinea,1)={''};
else
carga3x=carmed3x-carpend2ertramo3x*d2xz;
carga3y=carmed3y-carpend2ertramo3y*d2xz;
carga3xz=num2str(carga3x);
carga3yz=num2str(carga3y);

if ladox3==1
nlinea=nlinea+1;
linea(nlinea,1)={['BFXc',iz,'u',jz,' Xc',iz,'u',jz,' 0 V=V(Xc',iz,'c',jz,')+DY/(2*C2)*',carga3xz,'-DY/(2*DX)*(V(Yc',i1z,'u',jz,')-V(Yc',iz,'u',jz,'))']};
end
if ladoy3==1
nlinea=nlinea+1;
linea(nlinea,1)={['BFYc',iz,'u',jz,' Yc',iz,'u',jz,' 0 V=V(Yc',iz,'c',jz,')+DY/(2*C1)*',carga3yz,'-DY/(2*C1)*LAMD/(DX)*(V(Xc',i1z,'u',jz,')-V(Xc',iz,'u',jz,'))']};
end
nlinea=nlinea+1;
linea(nlinea,1)={''};
end



%intermedias L3

for i=2:NX-1

i1=i+1;
i2=i-1;
iz=num2str(i);
i1z=num2str(i1);
i2z=num2str(i2);
j=NY;
j1=j+1;
j2=j-1;
jz=num2str(j);
j1z=num2str(j1);
j2z=num2str(j2);

d1x=i*DX-(DX/2)
d1xz=num2str(d1x);
d2x=i*DX-(DX/2)-(L/2)
d2xz=num2str(d2x);

if i<NX/2
carga3x=carini3x-carpend1ertramo3x*d1xz;
carga3y=carini3y-carpend1ertramo3y*d1xz;
carga3xz=num2str(carga3x);
carga3yz=num2str(carga3y);

if ladox3==1
nlinea=nlinea+1;
linea(nlinea,1)={['BFXc',iz,'u',jz,' Xc',iz,'u',jz,' 0 V=V(Xc',iz,'c',jz,')+DY/(2*C2)*',carga3xz,'-DY/(4*DX)*(V(Yc',i1z,'u',jz,')-V(Yc',i2z,'u',jz,'))']};
end
if ladoy3==1
nlinea=nlinea+1;
linea(nlinea,1)={['BFYc',iz,'u',jz,' Yc',iz,'u',jz,' 0 V=V(Yc',iz,'c',jz,')+DY/(2*C1)*',carga3yz,'-DY/(2*C1)*LAMD/(2*DX)*(V(Xc',i1z,'u',jz,')-V(Xc',i2z,'u',jz,'))']};
end
nlinea=nlinea+1;
linea(nlinea,1)={''};
else
carga3x=carmed3x-carpend2ertramo3x*d2xz;
carga3y=carmed3y-carpend2ertramo3y*d2xz;
carga3xz=num2str(carga3x);
carga3yz=num2str(carga3y);

if ladox3==1
nlinea=nlinea+1;
linea(nlinea,1)={['BFXc',iz,'u',jz,' Xc',iz,'u',jz,' 0 V=V(Xc',iz,'c',jz,')+DY/(2*C2)*',carga3xz,'-DY/(4*DX)*(V(Yc',i1z,'u',jz,')-V(Yc',i2z,'u',jz,'))']};
end
if ladoy3==1
nlinea=nlinea+1;
linea(nlinea,1)={['BFYc',iz,'u',jz,' Yc',iz,'u',jz,' 0 V=V(Yc',iz,'c',jz,')+DY/(2*C1)*',carga3yz,'-DY/(2*C1)*LAMD/(2*DX)*(V(Xc',i1z,'u',jz,')-V(Xc',i2z,'u',jz,'))']};
end
nlinea=nlinea+1;
linea(nlinea,1)={''};
end

end

%esquina derecha L3

i=NX;
i1=i+1;
i2=i-1;
iz=num2str(i);
i1z=num2str(i1);
i2z=num2str(i2);
j=NY;
j1=j+1;
j2=j-1;
jz=num2str(j);
j1z=num2str(j1);
j2z=num2str(j2);

d1x=iz*DX-(DX/2)
d1xz=num2str(d1x);
d2x=iz*DX-(DX/2)-(L/2)
d2xz=num2str(d2x);

carga3x=carmed3x-carpend2ertramo3x*d2xz;
carga3y=carmed3y-carpend2ertramo3y*d2xz;
carga3xz=num2str(carga3x);
carga3yz=num2str(carga3y);

if ladox3==1
nlinea=nlinea+1;
linea(nlinea,1)={['BFXc',iz,'u',jz,' Xc',iz,'u',jz,' 0 V=V(Xc',iz,'c',jz,')+DY/(2*C2)*',carga3xz,'-DY/(2*DX)*(V(Yc',iz,'u',jz,')-V(Yc',i2z,'u',jz,'))']};
end
if ladoy3==1
nlinea=nlinea+1;
linea(nlinea,1)={['BFYc',iz,'u',jz,' Yc',iz,'u',jz,' 0 V=V(Yc',iz,'c',jz,')+DY/(2*C1)*',carga3yz,'-DY/(2*C1)*LAMD/(DX)*(V(Xc',iz,'u',jz,')-V(Xc',i2z,'u',jz,'))']};
end
nlinea=nlinea+1;
linea(nlinea,1)={''};


resultados-correctos
resultados-erroneos
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 JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Problema al multiplicar dos variables

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 18/11/2016 15:45:43
1
2
3
4
5
Undefined function or variable 'ladox3'.
 
Error in multiplicacion (line 49)
if ladox3==1
No haz definido la variable ladox3, porque cuando ejecuto sale error.



Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programación matlab
[email protected]


http://matlabcaballero.blogspot.com
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

Problema al multiplicar dos variables

Publicado por Mr (2 intervenciones) el 21/11/2016 12:01:48
Hola,
Se me había pasado ponerlo en los datos. El comando es:

ladox3=1;
ladoy3=1;

Espero que te funcione y me puedas decir porque no puedo conseguir el resultado que busco.

Muchas gracias.
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