Matlab - Optimización en Matlab

 
Vista:
Imágen de perfil de Aldo

Optimización en Matlab

Publicado por Aldo (4 intervenciones) el 12/10/2015 04:39:18
Saludos mis estimados,
Una consulta por favor, tengo instalado matlab 2011 y lo utilicé para minimizar una función con fminunc, pero cuando quiero minimizar la misma función en matlab 2014 (en otro equipo) me sale un mensaje de error. ¿Alguien ha tenido un problema parecido con las versiones recientes? ¿En caso afirmativo podrían por favor dejarme su correo para enviarles mis archivos u orientarme cómo resolvieron este problema?

De antemano muchas gracias

Aldo
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
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Optimización en Matlab

Publicado por Royeth (1818 intervenciones) el 12/10/2015 04:45:29
Qué tipo de error te sale ??

el error puede venir de varios problemas
si puedes monta el código a la web y así sería más fácil la ayuda
saludos
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
Imágen de perfil de Aldo

Optimización en Matlab

Publicado por Aldo (4 intervenciones) el 12/10/2015 05:17:58
Gracias por tu pronta respuesta estimado Royeth,
Adjunto un comprimido de mis archivos, el programa que quiero correr está en modelo_dsge, como se puede ver allí, se invoca a la función posterior_hod: fminunc(@posterior_hod,parametros). Mi objetivo es obtener el punto mínimo y la hessiana evaluada en este punto. Si hay otras opciones para hacer esto lo agradecería mucho.

Atentamente

Aldo
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
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Optimización en Matlab

Publicado por Royeth (1818 intervenciones) el 12/10/2015 05:47:34
en la parte donde defines la función a ejecutar especificamente en
1
C=[QQ*Omega; Omega];

la variable o parámetro QQ no está definida anteriormente

para la hessiana un ejemplo sería
1
2
3
syms x y z
f = x*y + 2*z*x;
hessian(f,[x,y,z])

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
Imágen de perfil de Aldo

Optimización en Matlab

Publicado por Aldo (4 intervenciones) el 12/10/2015 06:08:13
Estimado Royeth,
Esa parte de la función: C=[QQ*Omega; Omega]; no debería presentar problemas pues se debería obtener al ejecutar la línea solve; este último script sirve para calcular esta matriz QQ. ¿Dónde podría estar el error si esta parte debe ser calculada con solve?
Pregunto esto porque la función posterior_hod(parametros) alcanza un valor de 3.5939e+004, es decir al parecer la función está definida de manera adecuada.

Gracias

Aldo
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
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Optimización en Matlab

Publicado por Royeth (1818 intervenciones) el 12/10/2015 07:01:04
en ninguna línea de tu función solve encontré la variable QQ, tienes demasiadas funciones para el programa , y ese es el error que me está marcando al ejecutar
además estás sobreescribiendo funciones pues solve ya es una función interna de matlab , te recomiendo que ejecutes tu código paso a paso porque como te digo son demasiadas funciones
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
Imágen de perfil de Aldo

Optimización en Matlab

Publicado por Aldo (4 intervenciones) el 12/10/2015 18:14:28
Gracias Royeth,

Tengo ahora sólo algunas funciones (las adjunto), y tengo dos problemas, primero que cuando ejecuto
x = fminsearch(@posterior_hod,parametros) obtengo efectivamente un mínimo pero cuando quiero evaluar la hessiana en este mínimo obtengo el siguiente error:

hessian(@posterior_hod,x)
??? Error using ==> subsindex
Function 'subsindex' is not defined for values of class 'function_handle'.

Segundo, espero no sea demasiado pedir, podrías por favor confirmarme que la ejecución de [x,fval,exitflag,output,grad,hessian]=fminunc(@posterior_hod,parametros); no presenta problemas.

Gracias por tu tiempo

Aldo
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
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Optimización en Matlab

Publicado por Royeth (1818 intervenciones) el 13/10/2015 04:06:49
lo que pasa es que para el cálculo de la hessiana por esa función no puedes colocar funciones anónimas , es decir las funciones que colocas con el @ antes , deben ser funciones simbólicas en la cual el método de cálculo pueda ser la derivada y evaluarla así como el ejemplo que te adjunté
y así sí puedes hacer
1
hessian(f,[x,y,z])
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