Matlab - Solución de matriz no lineal con Matlab

   
Vista:

Solución de matriz no lineal con Matlab

Publicado por Ronald (3 intervenciones) el 13/10/2015 02:30:18
Saludos
Tengo un problema con solucionar una matriz de 4 variables con 4 ecuaciones, este problema es de sintesis analitica de mecanismos. Tengo poco conocimiento en esta area del Matlab y estuve viendo algunos tutoriales y cree el archivo

function F = mecanism(x)
F = [cos(x(1))*x(3)-x(3)+sin(x(1))*x(4)-118.2921774;
-x(3)*sin(x(1))+x(4)*cos(x(1))-x(4)-4.1894252;
cos(x(2))*x(3)-x(3)+x(4)*sin(x(2))-187.9558518;
-x(3)*sin(x(2))+x(4)*cos(x(2))-x(4)+68.06293754];
end

Las 4 ecuaciones son igual a cero, las variables son x(1), x(2), x(3) y x(4).
Guardo ese archivo y en la ventana de comando veo que introducen x0=[ ]; mi pregunta es que representa exactamente x0, porq cuando pongo por ejemplo x0=[1 1 1 1] obtengo un valor diferente de las incognitas que quiero hallar a si introduzco otros numeros; como podria hallar el valor verdadero de las variables?

De antemano muchas gracias, espero haberme dejado entender.
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 Royeth

Solución de matriz no lineal con Matlab

Publicado por Royeth jesus.royeth@gmail.com (758 intervenciones) el 13/10/2015 03:14:24
x0=[]; lo representan como el valor inicial que le das para que comienze a iterar para que te dé la solución , en este caso lo están colocando vacío pero para llegar una respuesta puedes colocar valores en estado estacionario o valores que desees .

debes hacer :

1
2
3
4
x0=[1 1 1 1];
options.MaxFunEvals=10000;
options.MaxIter=100000;
fsolve(@mecanism,x0,options)



Ejecución :


1
2
3
4
5
6
7
8
9
10
11
12
Equation solved.
 
fsolve completed because the vector of function values is near zero
as measured by the default value of the function tolerance, and
the problem appears regular as measured by the gradient.
 
<stopping criteria details>
 
 
ans =
 
    0.9124    1.6781  -63.4147  118.4320


Espero te sea de ayuda

Saludos-
https://www.facebook.com/royethmatlab/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar

Solución de matriz no lineal con Matlab

Publicado por Ronald (3 intervenciones) el 13/10/2015 04:05:27
De verdad muchas gracias amigo, corrobore y los valores obtenidos son los que satisfacen. Me ha sido de gran ayuda. 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
Imágen de perfil de JOSE JEREMIAS CABALLERO

Solución de matriz no lineal con Matlab

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3440 intervenciones) el 13/10/2015 16:35:57
1
2
3
4
5
6
7
8
9
function F = mecanism
x= sym('x', [1 4]);
 F = [cos(x(1))*x(3)-x(3)+sin(x(1))*x(4)-118.2921774;
        -x(3)*sin(x(1))+x(4)*cos(x(1))-x(4)-4.1894252;
        cos(x(2))*x(3)-x(3)+x(4)*sin(x(2))-187.9558518;
      -x(3)*sin(x(2))+x(4)*cos(x(2))-x(4)+68.06293754];
 R=solve(F);
display('resultado en radianes')
 F=vpa([R.x1;   R.x2;    R.x3;  R.x4 ],8);


1
2
3
4
5
6
7
8
9
>>F= mecanism
resultado en radianes
 
F=
 
 0.91240866
  1.6780765
 -63.414651
  118.43197


Saludos
JOSE JEREMÍAS CABALLERO
Asesoría online en Matlab
Servicios de programación matlab
jjcc94@hotmail.com
Estimado Usuario, el correo es para servicios de cursos, asesoría y programación. Toda ayuda gratuita es vía foro.


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
1
Comentar

Solución de matriz no lineal con Matlab

Publicado por Ronald (3 intervenciones) el 13/10/2015 22:25:37
Hola, en el caso de tener la siguiente función

function F = Mecanismo2(x)
F = [cos(x(1))*x(3)-x(3)-sin(x(1))*x(4)-135.841;
cos(x(2))*x(3)-x(3)-x(4)*sin(x(2))-126.034;
x(3)*sin(x(1))+x(4)*cos(x(1))-x(4)+17.786;
x(3)*sin(x(2))+x(4)*cos(x(2))-x(4)+119.107];
end

Al intentarlo me arroja valores que no satisfacen la ecuación. Que criterios se tiene en cuenta para encontrar la solución a cualquier sistema de esa forma.
Saludos
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
Imágen de perfil de Royeth

Solución de matriz no lineal con Matlab

Publicado por Royeth jesus.royeth@gmail.com (758 intervenciones) el 13/10/2015 23:13:55
Bueno hay muchos criterios pero yo tuve en cuenta el número de iteraciones y eso y pues al ejecutarlo me arroja valores que satisfacen la ecuación pero recuerda que si tienes una solución aproximada o alguna referencua de estos valores estos serían los estados iniciales


1
2
3
4
x0=[1 1 1 1];
options.MaxFunEvals=10000;
options.MaxIter=100000;
fsolve(@Mecanismo2,x0,options)

Ejecución
1
2
3
4
5
6
7
8
9
10
11
12
Equation solved.
 
fsolve completed because the vector of function values is near zero
as measured by the default value of the function tolerance, and
the problem appears regular as measured by the gradient.
 
<stopping criteria details>
 
 
ans =
 
    4.4629    3.2090  -61.0092   61.6780



Comprobando que satifacen

1
2
3
4
5
6
7
8
9
Mecanismo2(ans)
 
ans =
 
   1.0e-13 *
 
    0.2842
   -0.1421
   -0.1421



Saludos
https://www.facebook.com/royethmatlab/
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