Hoy voy a hablar de una cosa que es muy pero que muy tonta pero que no sabía hacer y tuve que buscar en Internet:
Como representar funciones definidas a trozos en MATLAB.
Primero tenemos que hablar de los operadores lógicos. Ahora vamos a usar el concepto de que 'true'=1 y 'false'=0. Si tenemos en una ecuación una desigualdad que está multiplicando algo y si ésta desigualdad es verdad (porque se cumple) entonces ésta genera una valor 'true' y por lo tanto lo que multiplica esta desigualdad será multiplicado por '1'. Mientras que si la desigualdad no se cumple entonces nos devolverá un valor 'false' que es igual a '0' y por lo tanto todo lo que esté multiplicando a la desigualdad desaparecerá.
Después de esta pequeña introducción vamos a ver como hacerlo, el código es muy simple.
Primero debemos definir un variable que vamos a usar como abscisa, para ello usaremos un paso de 0,1. Esta variable la definimos en un intervalo por ejemplo 0 y 10. Por lo tanto tenemos que escribir la siguiente línea de código:
x = 0:0.1:10; (el formato es: comienzo_intervalo:paso:fin_intervalo)
Luego tenemos que definir la función a trozos que vamos a representar. En este caso representaremos ésta:
Para ello vamos a usar los operadores lógicos. Una cosa que hay que mencionar antes es que entre los operadores lógicos y la función hay que usar .* para que no se produzca ningún error:
Para ello vamos a usar los operadores lógicos. Una cosa que hay que mencionar antes es que entre los operadores lógicos y la función hay que usar .* para que no se produzca ningún error:
f=(x<=1).*(-x+1)+(x>1).*log(x);
Ya sólo queda usar el comando para poder representar la función:
plot(x,f);
De tal forma que usando las siguientes líneas de código,
x = 0:0.1:10 ;
f = (x<=1).*(-x+1)+(x>1).*log(x) ;
plot(x,f) ;
grid on
xlabel('x')
ylabel('f(x)')
Obtenemos:
Como podemos observar cuando x<=1 sólo aparece el término -x+1 mientras que cuando x>1 sólo esta el término log(x).
Hola! y que pasa si en una funcion a trozos sale ejem " 0 para otro t" ?
ResponderEliminarcomo puedo escribir eso en matlab?
Debes buscar que intervalo de la variable es el que va a ser cero y lo escribes como en el ejemplo.
EliminarSería interesante que explicaras cómo se hace para 3 o más tramos, ya que el código cambiaría y no es tan intuitivo.
ResponderEliminarhey gracias me sirvió, saludosss!!!
ResponderEliminar