
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)={''};


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)={''};


Valora esta pregunta


0