Función solve para sistemas de ecuaciones
Publicado por Miguel (3 intervenciones) el 13/11/2016 11:09:17
El problema que tengo es el siguiente:
Utilizo el comando solve para resolver un sistema de tres ecuaciones. Lo primero que hago es definir las variables como simbólicas y luego introduzco las ecuaciones en la función solve. A la hora de mostrarme la solución de las tres variables lo hace con un vector simbólico de 2x1 en el que cada elemento esta formado por una gran expresión con números. ¿Cómo puedo hacer que solve me devuelva directamente el valor de esa variable?
Aquí os muestro el problema, muchas gracias:
syms v1a v2a a2a % Variables de nuestro sistema, máximo 3. Si elegimos alguna ya definida la comentamos.
%Conservación de la cantidad de movimiento
ec1=m1*v1a*cos(a1a)+m2*v2a*cos(a2a)==m1*v1d*cos(a1d)+m2*v2d*cos(a2d);
ec2=m1*v1a*sin(a1a)+m2*v2a*sin(a2a)==m1*v1d*sin(a1d)+m2*v2d*sin(a2d);
%Conservación de la energía
ec3=(1/2)*m1*v1a+(1/2)*m2*v2a==(1/2)*m1*v1d+(1/2)*m2*v2d;
[v1a,v2a,a2a]=solve([ec1,ec2,ec3],[v1a,v2a,a2a])
Solución:
v1a =
(16384*6057069290069748520653338389471883516735409650836712763444719^(1/2))/11966455510272234993 + 40322849067290237991602827708997632/11966455510272234993
40322849067290237991602827708997632/11966455510272234993 - (16384*6057069290069748520653338389471883516735409650836712763444719^(1/2))/11966455510272234993
v2a =
- (262144*6057069290069748520653338389471883516735409650836712763444719^(1/2))/226068983829197088111 - 1231540039292833626816166466610823243413711167/431537285416157485944522407936
(262144*6057069290069748520653338389471883516735409650836712763444719^(1/2))/226068983829197088111 - 1231540039292833626816166466610823243413711167/431537285416157485944522407936
a2a =
2*atan(6057069290069748520653338389471883516735409650836712763444719^(1/2)/55406528878980533847412820947583 - 562196504269210168213070418592/4262040682998502603647140072891)
-2*atan(6057069290069748520653338389471883516735409650836712763444719^(1/2)/55406528878980533847412820947583 + 562196504269210168213070418592/4262040682998502603647140072891)
Utilizo el comando solve para resolver un sistema de tres ecuaciones. Lo primero que hago es definir las variables como simbólicas y luego introduzco las ecuaciones en la función solve. A la hora de mostrarme la solución de las tres variables lo hace con un vector simbólico de 2x1 en el que cada elemento esta formado por una gran expresión con números. ¿Cómo puedo hacer que solve me devuelva directamente el valor de esa variable?
Aquí os muestro el problema, muchas gracias:
syms v1a v2a a2a % Variables de nuestro sistema, máximo 3. Si elegimos alguna ya definida la comentamos.
%Conservación de la cantidad de movimiento
ec1=m1*v1a*cos(a1a)+m2*v2a*cos(a2a)==m1*v1d*cos(a1d)+m2*v2d*cos(a2d);
ec2=m1*v1a*sin(a1a)+m2*v2a*sin(a2a)==m1*v1d*sin(a1d)+m2*v2d*sin(a2d);
%Conservación de la energía
ec3=(1/2)*m1*v1a+(1/2)*m2*v2a==(1/2)*m1*v1d+(1/2)*m2*v2d;
[v1a,v2a,a2a]=solve([ec1,ec2,ec3],[v1a,v2a,a2a])
Solución:
v1a =
(16384*6057069290069748520653338389471883516735409650836712763444719^(1/2))/11966455510272234993 + 40322849067290237991602827708997632/11966455510272234993
40322849067290237991602827708997632/11966455510272234993 - (16384*6057069290069748520653338389471883516735409650836712763444719^(1/2))/11966455510272234993
v2a =
- (262144*6057069290069748520653338389471883516735409650836712763444719^(1/2))/226068983829197088111 - 1231540039292833626816166466610823243413711167/431537285416157485944522407936
(262144*6057069290069748520653338389471883516735409650836712763444719^(1/2))/226068983829197088111 - 1231540039292833626816166466610823243413711167/431537285416157485944522407936
a2a =
2*atan(6057069290069748520653338389471883516735409650836712763444719^(1/2)/55406528878980533847412820947583 - 562196504269210168213070418592/4262040682998502603647140072891)
-2*atan(6057069290069748520653338389471883516735409650836712763444719^(1/2)/55406528878980533847412820947583 + 562196504269210168213070418592/4262040682998502603647140072891)
Valora esta pregunta


0