Mostrando entradas con la etiqueta octave. Mostrar todas las entradas
Mostrando entradas con la etiqueta octave. Mostrar todas las entradas

lunes, 30 de junio de 2014

Graficando funciones en matlab – Asesor – Culture – Domains



En unaentradaanterior vimoscomo graficarecuaciones polares en MATLAB, ahora veremos algunas funciones que existen en MATLAB para realizar gráficas tanto en 2D como en 3D.

Plot(): Nos creará una gráfica 2D en nuestro plano cartesiano. Su sintaxis sería Plot(x,y) donde x e y son puntos en el plano. Estos puntos los crearemos con lafunción linspace, esta función crea un vector con un número de elementos determinados por nosotros, cuya distancia es igual para todos.

Ejemplo:

linspace(inicio del intervalo, fin del intervalo, cantidad de elementos del vector);

linspace(0,9,5);

0 y 9 sería el intervalo en que se encuentran los 5 elementos del vector que hemos creado, es decir el intervalo [0,9]. 5 obviamente es la cantidad de elementos.

Los elementos de nuestro vector serían: [0, 2.25, 4.5, 6.75, 9]

Graficando una parábola:
Para graficar una paráboladaremos valores a una variable x con la función linspace, es importante destacar que mientras mas puntos en el plano existan nuestra gráfica será mas precisa.

x = linspace(-3,3,100);
y = x.^2;
plot(x,y);

Este sería el resultado


En ocasiones resulta conveniente cambiar el color de nuestra gráfica, para ello agregaremos un parámetro mas a la función Plot(). Sería Plot(x,y,'color') donde color sería la inicial del nombre del color (en ingles) de nuestra gráfica, red, green, blue... Ejemplo Plot(x,y,'r') hará nuestra parábola de color rojo.


hold on Nos permitirá realizar varias gráficas en un mismo dibujo, podemos notar que si realizamos una nueva gráfica la anterior es eliminada del dibujo. Con la función hold on esto no sucederá. Para desactivar esta opción usamoshold off.

x = linspace(-3,3,100);
y = x.^2;
plot(x,y);
hold on
y = 5+ x.^2;
plot(x,y);

El resultado sería dos parábolas en nuestro dibujo.


Polar(angulo,r)ya hablamos sobre esta función en la entradacomo graficarecuaciones polares en MATLABesta función graficará ecuaciones polares, un ejemplo de esto sería.

angulo = linspace(0,2*pi,100);
r = cos(2*angulo);
polar(angulo,r);


fill(x,y,'color') nos permitirá realizar una gráfica cerrada pintada por dentro del color que indiquemos.

x = linspace(-3,3,100);
y = x.^2;
fill(x,y,'g');

El resultado sería

Plot3(x,y,z) similar a la función plot, solo que esta representará nuestras gráficas en 3D. Damos valores a x e y con la función linspace y evaluamos la función de dos variables, luego graficamos.

x = linspace(-3,3,100);
y = linspace(-3,3,100);
z = x.^2 + y.^2;
plot3(x,y,z);

Nuestra gráfica en 3D sería.


Title('titulo') agrega un título a nuestra gráfica. Ejemplo, sí queremos agregar el título "Mi gráfica" a nuestra gráfica debemos escribir title('Mi Gráfica). En la siguiente imagen observaremos el resultado.


xlabel('texto') agregará una etiqueta o identificador al eje de las abscisas, para eliminarlo solo debemos escribir xlabel off. Para ylabel('texto') y zlabel('texto') es similar. Realicemos un ejemplo con esta función en MATLAB. Imaginemos que queremos representar gráficamente la cantidad de visitas que ha tenido nuestro blog en los últimos 7 días.
El eje de las abscisas (variable X) representará los días y el eje de las ordenadas (variable Y) representará la cantidad de visitas.

Vamos a crear dos vectores, para x será: x = [1 2 3 4 5 6 7] (los dias). Y para y será: y =[95 150 170 67 121 111 154] (cantidad de visitas en cada día).

Posterior a esto graficamos y utilizamos las etiquetas xlabel e ylabel. Nuestro programa y resultado sería el siguiente.

x = [1 2 3 4 5 6 7];
y =[95 150 170 67 121 111 154];
plot(x,y);
xlabel('Dias');
ylabel('Cant. Visitas');


gtext('texto')nos permite agregar un texto en la gráfica haciendo click sobre esta, donde hayamos hecho click allí se colocará el texto indicado.

x = [1 2 3 4 5 6 7];
y =[95 150 170 67 121 111 154];
plot(x,y);
xlabel('Dias');
ylabel('Cant. Visitas');
gtext('Ejemplo visitas');


Algo que también podemos hacer es cambiar las líneas de nuestras gráficas, estas pueden ser punteadas, continuas y guiones. Para utilizarlas agregaremos un tercer parámetro a la función plot(x,y).

plot(x,y,'--') guiones, plot(x,y,'-') continua, plot(x,y,'-'), punteada plot(x,y,':').

También te podría interesar:
Aprendiendo MATLAB con Octave UPM
Graficando ecuaciones polares en MATLAB con Octave UPM


lunes, 16 de junio de 2014

Graficando ecuaciones polares en MATLAB con Octave UPM – Rooms – Donate – Plataforma



En esta entrada vamos a graficar algunas ecuaciones polares como las rectas, circunferencias, limazones con rizo, cardiodes, limazones con hendidura, limazones convexos, lemniscatas, rosas y espirales utilizando MATLAB y Octave UPM.

En primer lugar debemos tener descargado Octave UPM. Sí no sabes que es Octave UPM te invito a pasar por la entradaAprendiendo MATLAB con Octave UPMdonde verás como descargarlo y algunas nociones básicas que te serán de utilidad.

Sí bien existen una gran cantidad de herramientas para graficar ecuaciones polares como por ejemplofooplot, siempre es bueno saber como funcionan y ser capaces de desarrollarlas nosotros mismos. Vamos a hacer un programa en MATLAB que nos permita graficar ecuaciones polares.

Empecemos usando la consola de Octave UPM para ir realizando algunos ejemplos que nos ayudarán a desarrollar nuestro programa.


Debemos crear lo que sería nuestra tabla de valores. Lo haremos usando vectores y con la funciónlinspace, esta función crea un vector con un número de elementos determinados por nosotros, cuya distancia es igual para todos.

Ejemplo:

linspace(inicio del intervalo, fin del intervalo, cantidad de elementos del vector);

linspace(0,9,5);

0 y 9 sería el intervalo en que se encuentran los 5 elementos del vector que hemos creado, es decir el intervalo [0,9]. 5 obviamente es la cantidad de elementos. Los elementos de nuestro vector serían: [0, 2.25, 4.5, 6.75, 9]


Para graficar en coordenadas polares sabemos quetheta (θ)toma valores entre 0 y 2π, entonces este sería el intervalo que usaríamos en la función linspace, nos faltaría saber cuantos elementos tendría nuestro vector. Es importante saber quemientras mayor sea la cantidad de elementos en el vector, será mejor, puesto que estos elementos seránpuntos en el plano polar que generarán nuestra gráfica. Y mientras mas puntos tengamos nuestra gráfica será más precisa. Yo recomiendo usar 100 elementos en el vector.

Vamos a crear los valores paraθ,yo usaré la variable T comoθpara no complicarnos tanto. Esto sería:

t = linspace(0,2*pi,100);

Lo siguiente sería pedir al usuario que ingrese la ecuación polar, es importantemostrar un mensaje diciendo que theta (θ) está representado con la variable t para no presentar confusiones.Sí el usuario quiere graficar una rosa de 4 pétalos determinada por cos(2θ) deberá ingresar cos(2*t).

r = input("Ingrese la ecuación polar. Theta está representada por la variable t");

Finalmente para graficar usaremos la funciónpolar(t,r);

Sí hemos hecho todo bien, para la rosa de 4 pétalos anteriormente mencionada este sería el resultado:


Haciendo nuestro programa para graficar:

% Graficar ecuaciones polares
disp("Bienvenido al graficador de ecuaciones polares\n");
t = linspace(0,2*pi,100);
r = input("Ingrese la ecuacion polar a graficar. Para theta por favor usar la variable t. Ejemplo: cos(theta) = cos(t)\n");
disp("Esta es la grafica de su ecuacion polar\n");
polar(t,r);

Así como fue mencionado antes, creamos un vector de 100 elementos que están entre [0,2π] pedimos al usuario que ingrese la ecuación polar a graficar (utilizando a t como la variable theta). Finalmente se muestra la gráfica.

El programa en ejecución:



En esta ejecución ingresamos la ecuación de una rosa de 4 pétalos cos(2*t). Pero,¿si queremos graficar un limazon con rizo?


La ejecución y la gráfica del limazon con rizo sería:



Y¿sí queremos graficar dos ecuacionessimultáneamente?debemos modificar nuestro código agregando la funciónhold on. Esta función nos permitirá graficar una nueva ecuación polar sin remplazar la antes graficada. Además de agregar la función hold on agregaremos otras líneas pidiendo una segunda ecuación polar al usuario. Cuando usemos la funciónpolar(t,r);agregaremos otro parámetro para definir el color de las líneas de cada ecuación, esto con el fin de distinguir entre ambas gráficas. Los colores están determinados en su mayoría por la inicial de su nombre en ingles, ejemplo azul seríab (blue) verde sería g (green). Para graficar una ecuación con lineas azules entonces seríapolar(t,r,'b');.

% Graficar dos ecuaciones polares
disp("Bienvenido al graficador de ecuaciones polares\n");
t = linspace(0,2*pi,100);
r = input("Ingrese la primera ecuacion polar a graficar. Para theta por favor usar la variable t. Ejemplo: cos(theta) = cos(t)\n");
disp("Esta es la grafica de su ecuacion polar\n");
polar(t,r,'b');
hold on;
r2 = input("Ingrese la segunda ecuacion polar a graficar. Para theta por favor usar la variable t. Ejemplo: cos(theta) = cos(t)\n");
disp("Esta es la grafica de su ecuacion polar\n");
polar(t,r2,'g');

La ejecución sería:


Y nuestra gráfica sería la siguiente:



domingo, 15 de junio de 2014

Aprendiendo MATLAB con Octave UPM – Register – Arquitectura – Hard drive



Actualmente estoy inscrito en elCurso Online Introducción a la Programación para Ciencias e Ingeniería (2ª edición)(excelente curso) en el que he aprendido algunas nociones de MATLAB utilizando la herramienta Octave UPM.
MATLAB me parece un lenguaje muy poderoso, y del que se le puede sacar mucho provecho en relación a las matemáticas, algo que con otros lenguajes aún no lo he logrado.

Quise hacer esta entrada referente a MATLAB y Octave UPM puesto que posiblemente escribiré sobre algunas ideas que se me han ocurrido utilizando esta herramienta.

Pero,¿Que es Octave UPM?

"Octave UPM es una versión personalizada de GNU Octave para las clases de Informática en la ETSI de Caminos, Canales y Puertos de la Universidad Politécnica de Madrid.

GNU Octave es un entorno de matemática computacional que intenta mantener un alto nivel de compatibilidad con MATLAB. En el caso de Octave UPM, la configuración por defecto elegida para el programa mejora ligeramente la compatibilidad con MATLAB, comparado con usar Octave directamente.

Aunque está versión personalizada está pensada para las clases en nuestra Escuela, es probablemente útil para muchas otras personas. Si estás buscando una alternativa libre y gratuita a MATLAB, que esté en español o inglés, y que funcione en Windows o GNU/Linux, con una instalación limpia y sencilla, es probable que Octave UPM sea lo que estás buscando.

GNU Octave y Octave UPM se distribuyen como software libre bajo la Licencia Pública General de GNU, versión 3. Esto significa que lo puedes instalar en tu ordenador sin restricciones, y que puedes modificarlo y redistribuirlo siempre que mantengas la licencia original y cumplas con sus términos y condiciones."

Para descargar Octave UPM y ver el manual de instalación debemos entrar en este enlace: http://mat.caminos.upm.es/octave/

Una vez descargado, iniciamos Octave UPM y esta será nuestra ventana de inicio:


Vamos a hacer rápidamentenuestro primer programa en MATLAB. Este programa mostrará un mensaje de bienvenida, nos pedirá nuestro nombre y el año de nacimiento. Sabiendo que el año actual es 2014 nos dirá nuestro nombre y cual es nuestra edad aproximada.

Inicialmente hacemos click en el icono con forma de hoja ubicado en la esquina superior izquierda para crear un archivo nuevo.


En este archivo nuevo será donde escribiremos el código de nuestro programa. Para este programa haremos uso de las funcionesdisp para mostrar el mensaje de bienvenida,inputpara pedir al usuario que ingrese su fecha de nacimiento y asignarla a una variable,fprintfpara imprimir en pantalla nuestro nombre y nuestra edad aproximada.

Un ejemplo de cada función sería:
  • disp("Este es un mensaje"); ------------------- Nos mostrará un mensaje en pantalla.
  • x = input("Ingrese el valor de x"); ------------- El valor ingresado por el usuario se asignará a la variable x.
  • fprintf("Mensaje mas variables %d %f %s" , x, y, z) -------- Mostrará un mensaje en pantalla junto al valor de las variables x,y,z. %d se refiere a un valor de tipo entero, %f de tipo real y %s a un string o cadena de texto.

Nuestro programa:

%Nuestro primer programa
disp("Bienvenido a tu primer programa en MATLAB");
nombre = input("Ingrese su nombre\n","s");
aNacimiento = input("Ingrese su anho de nacimiento\n");
edad = 2014 - aNacimiento;
fprintf("Su nombre es %s y su edad aproximada %d anhos",nombre,edad);

Explicación:
  • En la primera linea agregamos un comentario a nuestro programa con el símbolo %, todo lo que este a la derecha del % en la misma línea será tomado como un comentario.
  • Damos un mensaje de bienvenida con la función disp.
  • Pedimos al usuario que ingrese su nombre con la función input,algo que debemos tener en cuenta es que cuando el tipo de dato ingresado es string(cadenas de texto) hay que indicarlo en la función input agregando como segundo parámetro "s". Al ingresar nuestro nombre, este será asignado a dicha variable con el operador de asignación =. La secuencia de escape \n solo indicará que se realice un salto de línea luego de mostrar el mensaje.
  • Para la variable aNacimiento se realiza una instrucción similar a la anterior.
  • Hacemos la operación aritmética requerida para la solución del problema. Sí naciste en 1993 y actualmente estamos en el 2014 entonces, 2014 - 1993 = 21. Puede que tengas aún 20 años (sí tu cumple años es en los últimos meses del año) pero, a través de esta diferencia podemos determinar nuestra edad aproximada para el año en curso.
  • Finalmente imprimimos el nombre del usuario y su edad. %s imprimirá el valor de tipo string almacenado en la variable nombre, de igual manera sucederá con la variable de tipo entero edad. Es importante resaltar que con el comando disp podemos mostrar mensajes, pero con fprintf podremos no solo mostrar mensajes, sino que también mensajes junto a valores de las variables.
Para probar nuestro programa solo debemos hacer click en el botón play.


Sí todo marcha bien este debería ser nuestro resultado.