Matlab - Definición de una función matemática en Matlab

   
Vista:

Definición de una función matemática en Matlab

Publicado por Aitor (46 intervenciones) el 06/04/2017 15:39:28
Hola a todos,

Estoy teniendo algunas dudas sobre cómo definir un problema matemático en Matlab, que podréis encontrar en la imagen que os adjunto:

Duda


Por ejemplo, he tenido problemas a la hora de implementar las funciones auxiliares J y Phi. He definido dos variables auxiliares u y f mediante 'syms', sin embargo, esto da problemas con la función definida a trozos (no creo que sea prudente definir un array de valores para la variable independiente u sin saber de antemano cuáles podría tomar), ya que u no es en este caso un valor numérico. Es decir:

1
2
3
4
5
6
% Phi function
if u > 0
phi = 1 - 1/sqrt(4*pi*u)*int(exp(-((f-u)^2)/(4*u)) * log(1 + exp(-f),2),f);
else
phi = 1;
end

Me da como fallo:

1
2
3
4
Conversion to logical from sym is not possible.
 
Error in Simulation (line 88)
if u > 0

A su vez, tratando de implementar la función J:

1
J = 1 - 1/sqrt(4*pi*u)*int(exp(-((f-u)^2)/(4*u)) * log(1 + exp(-f),2),f);

El fallo es:

1
2
3
4
5
Error using sym/log
Too many input arguments.
 
Error in Simulation (line 85)
J = 1 - 1/sqrt(4*pi*u)*int(exp(-((f-u)^2)/(4*u)) * log(1 + exp(-f),2),f);

Sobre los parámetros que es necesario incluir en la función:

- El superíndice (l) hace alusión al número de la iteración que corresponda (se puede elegir al azar).
- El subíndice i hace alusión al elemento i de los vectores x e y, que tienen la misma longitud (supongamos que se puede elegir al azar).
- dc, dv y gamma son números naturales
- sigma_n es un número real

¿Alguien puede darme algún consejo, aunque sea alguna pista para saber cómo avanzar al menos con las funciones definidas a trozos?

¡Muchas gracias de antemano y como siempre respondo dudas en caso de que las tengáis!
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

Definición de una función matemática en Matlab

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (4526 intervenciones) el 06/04/2017 18:35:20
1
2
3
>> syms f; syms u; J = 1 - 1/sqrt(4*pi*u)*int(exp(-((f-u)^2)/(4*u)) * log2(1 + exp(-f)),f)
J =
1 - int((exp(-(f - u)^2/(4*u))*log(exp(-f) + 1))/log(2), f)/(2*pi^(1/2)*u^(1/2))
No lo integra tal función int(). tendrias que buscar otro mecanismo de integración.
podrias usar la funcion quad() o la función integral()


1
2
3
4
5
6
>> clear all; u=5; fun1=@(f) exp(-((f-u).^2)/(4*u)).* log2(1 + exp(-f))
fun1 =
    @(f)exp(-((f-u).^2)/(4*u)).*log2(1+exp(-f))
>> resultado=integral(fun1, -2,2)
resultado =
    1.006

Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab


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

Definición de una función matemática en Matlab

Publicado por Aitor (46 intervenciones) el 06/04/2017 18:57:05
Buenas tardes Jose,

¿Pero qué pasaría en caso de tratarse de una integral indefinida, como se muestra en la imagen?

Otro de mis problemas es que como puedes observar ahí también, la función J(u) está compuesta con otra, por lo tanto me preguntaba si existía alguna manera de expresarla por el momento de manera simbólica para poder realizar luego la sustitución.

Muchas gracias por tu respuesta, y un saludo.
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
Revisar política de publicidad