Un atractivo de Scilab es la posibilidad de hacer gráficos de funciones de dos variables y poder usar una paleta de colores predeterminadas, haciendo muy atractiva su salida por pantalla. Para ello se puede usar una simple combinación de las funciones meshgrid, que creea una matriz con los datos de dos variables previamente definidas, mesh, que realiza una gráfica de la función con Z=f(X,Y), con X e Y variables definidas por la función meshgrid, y con la función xset("colormap",mapa_elegido(n)), siendo n un número, correspondiéndose con el número de colores de la paleta, y mapa_elegido() una función de Scilab que permite usar una selección determinada de colores (asignándose estos en función de la posición de cada proporción de superficie dada por mesh()). Algunas de estos mapas son coppercolormap(), oceancolormap(), bonecolormap(), springcolormap(), etc. Estos pueden consultarse en el Navegador de ayuda. Se ha usado las referencias de [1] sobre este tema en las páginas
// pruebacolormap().sce
// Prueba de gráficos con colormap()
// Definimos la función a usar f:R^2 -->R
// [sin(x.*y)] y el dominio de esta (x,y)
x=-3:.1:3;
y=-3:.1:3;
//empleamos el comando
//meshgrid(x,y), para crear dos matrices con todos
//los valores necesarios para dibujarla
[X,Y]=meshgrid(x,y);
// y dibujamos la función (sin colores)
Z=sin(X.*Y);
mesh(X,Y,Z);
// Empleamos xset("colormap",mapa_de_colores(n))
// y el comando surf para dibujar la gráfica de la función f con colores.
n=34 //numeros de colores a usar
// Usamos oceancolormap()
// y obtenemos la superficie de la función en tonos azules.
scf(1)
clf(1)
xset("colormap",oceancolormap(n))
surf(X,Y,Z)
// Usamos coppercolormap()
// y obtenemos la superficie en tonos marrones
scf(2)
xset("colormap",coppercolormap(n))
surf(X,Y,Z)
Código de Scilab descrito anteriormente. Código por el autor.
Así pues, si ejecutamos el programa anterior en Scilab, obtenemos las siguientes imágenes.
Resultados del programa anterior. Códigos e imágenes por el autor.
Referencias
[1]: Venturin, Manolo. Plotting with Scilab, Openeering Totorials. Openeering.
Mostrando entradas con la etiqueta Scilab. Mostrar todas las entradas
Mostrando entradas con la etiqueta Scilab. Mostrar todas las entradas
viernes, 21 de junio de 2013
miércoles, 3 de abril de 2013
Álgebra- Matriz de transformación de Householder
En muchas aplicaciones de geometría analítica y cálculo numérico, en especial en las secciones correspondientes a los métodos de factorización QR para hallar la solución de sistemas lineales numéricos, encontramos la definición de transformación de Householder y la matriz asociada a una transformación de Householder.
Existen comandos que nos ofrecen el resultante de una transformación de Householder sobre un vector ( householder() el cual me imagino que se podrá sobrecargar para operaciones matriciales).
Aquí ,sin ninguna pretensión, se define un pequeño pseudo código, muy sencillo y breve, para crear esta matriz usando un bucle if-then-else que excluya situaciones imposibles ( aquellas en los que los vectores a transformar no tengan la misma dimensión ) y la función eye(), que devuelve la matriz identidad de orden n y el comando definido en Scilab norm() que calcula la norma euclidea de un vector. Aplicando la definición de transformación de Householder( http://es.wikipedia.org/wiki/Transformaci%C3%B3n_de_Householder ) ya tenemos nuestra función.
El objetivo es obtener una visualización de la matriz de Householder y analizar sus coeficientes ( útil para la corrección de ejercicios, aplicación y descripción de métodos de factorización matricial QR, etc. ), mostrando las buenas capacidades algorítmicas y de cálculo que presenta Scilab. Para ello, como se ve en el siguiente bloque de código:
Función mathouse() que calcula, a partir de dos vectores, la matriz asociada a la transformación de Householder. Aquí se ha guardado en un archivo .sci con el fin de emplearse en otras ocasiones ( un trabajo para la materia del grado de Matemáticas Introducción al análisis numérico, matricial e interpolación ). Imagen capturada desde Scinotes y código elaborado por el autor.
se define una función de, cuyas variables son los vectores x ( a transformar) e y (vector en el que se transforma x). Ojo; aquí hay que introducir los vectores como matrices columnas:
x=[x_1; x_2; ... ;x_n]
y un pequeño código con algunas pruebas para demostrar su funcionamiento.
Código de Scilab en las que se muestra algunos casos de ejecución de la función mathouse() que se definió. Código e imagen por el autor.
-1->x1=[3;2;1]
x1 =
3.
2.
1.
-1->y1=[4;0.5;9]
y1 =
4.
0.5
9.
-1->d1=mathouse(x1,y1)
0.9702602 0.0446097 - 0.2379182
0.0446097 0.9330855 0.3568773
- 0.2379182 0.3568773 - 0.9033457
-2->x2=[1;3]
x2 =
1.
3.
-2->y2=[1;9;01;192;0.9991;10D+14]
y2 =
1.
9.
1.
192.
0.9991
1.000D+15
-2->d2=mathouse(x2,y2)
Vectores con dimensión distinta
Imposible factorización Householder
Álgebra- Normas matriciales subordinadas con Scilab
En contextos matemáticos como el cálculo numérico o la introducción a la topología , aparece el concepto de norma matricial subordinada a una norma vectorial (véase [1], páginas 16-17 y [2], páginas 23-24 .Nuestro interés es usar Scilab para calcularlas, luego omitiremos definirlas)
En esta entrada se presenta una imagen de Scinotes mostrando algunos comandos que están predefinidos en Scilab, cuya estructura es siempre la misma:
d_i=norm(a,'info')
los cuales representan las normas más comunes en los planes de estudio ;la norma subordinada 1, la norma subordinada "infinito", las cuales consiste en sumar los valores absolutos de los elementos de una matriz por columnas ( respectivamente por filas ) y elegir el máximo; la norma subordinada euclidiana ( o norma subordinada 2, que se trata de elegir el autovalor de la matriz producto de A y su transpuesta de mayor tamaño; ojo, en la definición original, hemos de hallar además su raíz cuadrada) y la norma de Frobenius (se halla la matriz producto de una matriz A y su transpuesta y su traza, aquí sí se halla la raíz cuadrada de la traza).
Captura de la pantalla de Scinotes que contiene en las lineas de código los comandos que ilustran las normas matriciales subordinadas a las que nos referimos en el párrafo anterior. Código e imagen por el autor.
Para ilustrar su funcionamiento, si aplicamos estas normas a la matriz a que aparece arriba definida, obtenemos en la consola los siguientes resultados:
Ejecucion de inicio:
cargando entorno inicial
-->a=[1 2 3;4 5 6;7 8 9]
a =
1. 2. 3.
4. 5. 6.
7. 8. 9.
-->n=norm(a,1)
n =
18.
-->n1=norm(a,'inf')
n1 =
24.
-->n2=norm(a,2)
n2 =
16.848103
-->n3=norm(a,'frob')
n3 =
16.881943
Nada más recordar que como el contenido de este blog, no se ha tratado en toda su totatlidad este tema. Si nos vamos al menú de ayuda de Scilab ( el botón en forma de círculo azul de la consola) encontramos más información.
Referencias
[1]: Introducción al cálculo numérico, Carlos Moreno Gónzales, ed. UNED (2011)
[2]: Numerical Mathematics, A.Quarteroni, R. Sacco y F. Saleri, ed. Springer (2000)
En esta entrada se presenta una imagen de Scinotes mostrando algunos comandos que están predefinidos en Scilab, cuya estructura es siempre la misma:
d_i=norm(a,'info')
los cuales representan las normas más comunes en los planes de estudio ;la norma subordinada 1, la norma subordinada "infinito", las cuales consiste en sumar los valores absolutos de los elementos de una matriz por columnas ( respectivamente por filas ) y elegir el máximo; la norma subordinada euclidiana ( o norma subordinada 2, que se trata de elegir el autovalor de la matriz producto de A y su transpuesta de mayor tamaño; ojo, en la definición original, hemos de hallar además su raíz cuadrada) y la norma de Frobenius (se halla la matriz producto de una matriz A y su transpuesta y su traza, aquí sí se halla la raíz cuadrada de la traza).
Captura de la pantalla de Scinotes que contiene en las lineas de código los comandos que ilustran las normas matriciales subordinadas a las que nos referimos en el párrafo anterior. Código e imagen por el autor.
Para ilustrar su funcionamiento, si aplicamos estas normas a la matriz a que aparece arriba definida, obtenemos en la consola los siguientes resultados:
Ejecucion de inicio:
cargando entorno inicial
-->a=[1 2 3;4 5 6;7 8 9]
a =
1. 2. 3.
4. 5. 6.
7. 8. 9.
-->n=norm(a,1)
n =
18.
-->n1=norm(a,'inf')
n1 =
24.
-->n2=norm(a,2)
n2 =
16.848103
-->n3=norm(a,'frob')
n3 =
16.881943
Nada más recordar que como el contenido de este blog, no se ha tratado en toda su totatlidad este tema. Si nos vamos al menú de ayuda de Scilab ( el botón en forma de círculo azul de la consola) encontramos más información.
Referencias
[1]: Introducción al cálculo numérico, Carlos Moreno Gónzales, ed. UNED (2011)
[2]: Numerical Mathematics, A.Quarteroni, R. Sacco y F. Saleri, ed. Springer (2000)
martes, 26 de marzo de 2013
Scilab-Openeering
El uso de Scilab transciende cada vez más desde el campo de la educación al mundo empresarial e industrial. En el sitio web encontramos numerosos ejemplos de cómo se emplea Scilab en diversas ramas de la ingeniería. Además, contiene muchísima información sobre el uso de Scilab para enfrentarnos a problemas usuales en el campo de acción de dicha ciencia (realización de gráficas, análisis numérico, interpolación de datos, elaboración de GUI's empleando Scilab, etc) en forma de pdf, video, texto, presentación...todo ello distribuido bajo licencia libre.
Algunos contenidos de esta página son bastante interesantes para dominar algunos aspectos de Scilab que, desde el punto de vista matemático, son muy útiles.
Aspecto de la página principal de la web Openeering. Imagen del autor.
Se puede consultar desde el siguiente enlace:
Scilab-Uso de generador de gráficas
Una herramienta muy interesante en la nueva edición de Scilab, sobre todo para los que estudiamos matemáticas y, a la hora realizar una representación gráfica para comprobar un resultado, ilustrar un trabajo o demostrar si nuestras elucubraciones sobre alguna función son ciertas, se nos olvida el comando concreto que nos permite obtener la gráfica de nuestros datos (cosa que me pasa con mucha frecuencia) es el generador de gráficas, un botón que se encuentra en el menú Editor de variable.
Imagen de dónde se encuentra el generador de gráficas (señalado en rojo) al abrir el editor de una variable concreta. Imagen del autor.
Para usarlo operamos así: una vez introducidos los datos, nos vamos al menú perteneciente en el Explorador de variables (siempre visible si nos hemos descargados la nueva versión de Scilab) y hacemos doble clic con el ratón en la variable en la que hemos introducido el conjunto (o conjuntos) de valores que queremos dibujar. Al hacer esto, se abre un menú nuevo, el Editor de variables, veremos en el borde superior de esta una serie de botones entre los que se encuentra, al final de todo, la aplicación comentada. Clic y a ver nuestro resultado, así de fácil.
Eso sí, esta facilidad conlleva algunos problemas; hemos de definir correctamente los datos y no se incluyen todos los comandos para la representación.
No obstante, para una labor sencilla, es rápido y fácil. Aquí se muestra en imágenes el recorrido a hacer para usar este comando y las posibilidades que presentan. Personalmente, creo que es una idea genial.
Imagen de dónde se encuentra el generador de gráficas (señalado en rojo) al abrir el editor de una variable concreta. Imagen del autor.
Para usarlo operamos así: una vez introducidos los datos, nos vamos al menú perteneciente en el Explorador de variables (siempre visible si nos hemos descargados la nueva versión de Scilab) y hacemos doble clic con el ratón en la variable en la que hemos introducido el conjunto (o conjuntos) de valores que queremos dibujar. Al hacer esto, se abre un menú nuevo, el Editor de variables, veremos en el borde superior de esta una serie de botones entre los que se encuentra, al final de todo, la aplicación comentada. Clic y a ver nuestro resultado, así de fácil.
Eso sí, esta facilidad conlleva algunos problemas; hemos de definir correctamente los datos y no se incluyen todos los comandos para la representación.
No obstante, para una labor sencilla, es rápido y fácil. Aquí se muestra en imágenes el recorrido a hacer para usar este comando y las posibilidades que presentan. Personalmente, creo que es una idea genial.
Capturas de pantallas de los menús Explorador de variables (con las correspondientes ventanas de Scinotes a la izquierda de este y debajo el historial de comandos) y Editor de variables. En esta última se muestran los posibles comandos del generador. Imagen del autor.
lunes, 25 de marzo de 2013
Scilab- Scilab, versión 5.4.0
Interesante versión de Scilab. Se pueden ver sus novedades y mejoras en el informe del siguiente enlace en:
http://www.scilab.org/community/news/20121001/Release-Notes
http://www.scilab.org/community/news/20121001/Release-Notes
lunes, 20 de agosto de 2012
Cálculo-Comparación de funciones trigonométricas
Cree esta imagen para dar clases. Se trata de una representación de las funciones seno y coseno en un intervalo de 2 a 3. Para este caso, he empleado la expresión de valores en forma de intervalo a : (razón de crecimiento) : b. Los resultados gráficos con Scilab son muy interesantes:
Álgebra lineal- representación de una curva cicloide en tres dimensiones
El creador de gráficos de Scilab es una herramienta muy poderosa que cuenta de varias opciones. Aquí me aprovecharé de él para conseguir una representación visual de la curva cicloide ( http://es.wikipedia.org/wiki/Cicloide y http://mathworld.wolfram.com/Cycloid.html ) utilizando la función param3d y param 3d1 que grafican curvas paramétricas en el espacio. Introduciendo los siguientes comandos:
Se denominan curvas minimalistas por su similitud con el trabajo en hilo del artista americano Fred Sandback (http://fredsandbackarchive.org/). en último lugar, pero no menos importante, decir que las ecuaciones de la cicloide se han derivado de la obra de Eugenio Hernandez Álgebra y geometría, de la editorial Addison-Wesley, unos de mis textos favoritos sobre las relaciones entre la geometría analítica y el álgebra lineal.
miércoles, 25 de julio de 2012
Discreta-Uso de Scilab para el estudio de matrices de adyacencia
Se presenta aquí un ejemplo de como estudiar la posibilidad de existencia de caminos en un grafo haciendo uso de sus matrices de adyacencia. Al elevar a n la matriz de adyacencia buscamos caminos de longitud n en el grafo. La suma de estas matrices nos devuelve los caminos posibles en el grafo de un vértice otro. Veremos un ejemplo de esta posible representación de grafos usando matrices empleando el podertde computo de Scilab.
Desarrollamos el ejercicio usando los siguientes comandos desde SciNotes, un editor con las funciones propias de Scilab que nos permite guardar el trabajo hecho con extesiones .sci o .sce.
Con M la matriz de adyacencia del grafo definido.Y como resultados obtenemos en la consola de Scilab:
Ejecución de inicio:
cargando entorno inicial
-->M=[0,1,1,0,0;
-->zeros(1,2),1,zeros(1,2);
-->zeros(2,3),eye(2,2);
-->1,0,1,zeros(1,2)]
M =
0. 1. 1. 0. 0.
0. 0. 1. 0. 0.
0. 0. 0. 1. 0.
0. 0. 0. 0. 1.
1. 0. 1. 0. 0.
-->M^2
ans =
0. 0. 1. 1. 0.
0. 0. 0. 1. 0.
0. 0. 0. 0. 1.
1. 0. 1. 0. 0.
0. 1. 1. 1. 0.
-->M^3
ans =
0. 0. 0. 1. 1.
0. 0. 0. 0. 1.
1. 0. 1. 0. 0.
0. 1. 1. 1. 0.
0. 0. 1. 1. 1.
-->M^4
ans =
1. 0. 1. 0. 1.
1. 0. 1. 0. 0.
0. 1. 1. 1. 0.
0. 0. 1. 1. 1.
1. 0. 1. 1. 1.
-->L=M+M^2+M^3+M^4
L =
1. 1. 3. 2. 2.
1. 0. 2. 1. 1.
1. 1. 2. 2. 1.
1. 1. 3. 2. 2.
2. 1. 4. 3. 2.
cargando entorno inicial
-->M=[0,1,1,0,0;
-->zeros(1,2),1,zeros(1,2);
-->zeros(2,3),eye(2,2);
-->1,0,1,zeros(1,2)]
M =
0. 1. 1. 0. 0.
0. 0. 1. 0. 0.
0. 0. 0. 1. 0.
0. 0. 0. 0. 1.
1. 0. 1. 0. 0.
-->M^2
ans =
0. 0. 1. 1. 0.
0. 0. 0. 1. 0.
0. 0. 0. 0. 1.
1. 0. 1. 0. 0.
0. 1. 1. 1. 0.
-->M^3
ans =
0. 0. 0. 1. 1.
0. 0. 0. 0. 1.
1. 0. 1. 0. 0.
0. 1. 1. 1. 0.
0. 0. 1. 1. 1.
-->M^4
ans =
1. 0. 1. 0. 1.
1. 0. 1. 0. 0.
0. 1. 1. 1. 0.
0. 0. 1. 1. 1.
1. 0. 1. 1. 1.
-->L=M+M^2+M^3+M^4
L =
1. 1. 3. 2. 2.
1. 0. 2. 1. 1.
1. 1. 2. 2. 1.
1. 1. 3. 2. 2.
2. 1. 4. 3. 2.
Toda la teoría empleada proviene del texto Elementos de Matemática Discretas, V.V.A.A, Editorial Sanz y Torres.
martes, 3 de julio de 2012
Algunos textos interesantes
Resumen- En esta entrada introduciremos algunas
lecturas bastante acertadas para empezar trabajar con Maxima ( y wxMaxima) y
Scilab. Aunque son programas con paquetes de ayuda bastante completos, ha veces
se requiere un poco de ayuda para trabajar con ellos ( por no decir que su
lectura a veces resulta frustrante). El
autor agradecería al lector que si sabe de más me informe y e incluirlas en el
próximo artículo:
Graphics
with Máxima. Haager, Wilhem. Edición digital:
Primeros pasos en Maxima. Rodríguez Riotorto, Mario. Edición
digital:
www.telefonica.net/web2/biomates/maxima/max.pdf
Manual de uso de Máxima y wxMaxima en asignaturas de cálculo
diferencial,
Ecuaciones Diferenciales con Maxima, Vallejo, Jose Antonio.
Ediciones en pdf obtenidas en:
A Máxima-Gnuplot Interface. Rodríguez Riotorto, Mario.
Edición digital:
Casi todos los textos citados están bajo el dominio GNU free
luego se pueden descargar y divulgarse sin problemas. Las direcciones de obtención
no son únicas. Aquí solo se pretende facilitar un poco las cosas y tener una
guía fija para su obtención.
Por otra parte, tenemos los siguientes textos para trabajar
con Scilab, bastante escuetos pero de lectura complicada:
Introducción a Scilab. Mora Escobar, Hector Manuel. Edición
digital :
personal.us.es/echevarria/documentos/ApuntesScilab.pdf
Scilab pour les Lycées. Scilab Development Team. Edición digital:
(Muy básico, una serie de diapositivas con programas sencillos pero bastante útil)
Introduction
to Scilab. Scilab Development Team. Edición digital:
http://www.scilab.org/support/documentation/tutorials
Suscribirse a:
Entradas (Atom)


















