Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Fı́sica Computacional.
Programación en Scilab.
James Fernando Insandara Tacan
217018078.
2019-B
¿Qué es Scilab?
Scilab es un software utilizado para hacer cálculos cientı́ficos que hace
uso de análisis numérico por medio de lenguaje de programación. Scilab nos
permite realizar visualización 2-D y 3-D, optimización, análisis estadı́stico,
diseño y análisis de sistemas dinámicos, entre otras herramientas de igual
relevancia.
1
Abrir Scilab
Figura 1: SciNotes
Para ver lo que escribimos en el ”blog” es necesario hacer uso del co-
mando disp(*), que nos enseñara en la consola lo que hemos realizado.
2
Si se desea añadir un texto, este inevitablemente debe estar contenido
por (”*texto*”) para que Scilab lo pueda reconocer como tal.
Para aclarar lo previamente mencionado haremos uso del siguiente
ejemplo.
3
Para acceder a estas variables es necesario hacer uso de un caracter
para poder ejecutarlos, como apreciamos en el siguiente ejemplo.
Figura 4: Números π, e, i.
Es posible hacer el cálculo de una raı́z cuadrada por medio del comando
sqrt(x).
Construccion de Vectores.
Un vector fila se crea a partir del uso de ”[]”que contendrán adentro
los n componentes del vector. Para dar forma a este vector, los compo-
nentes deben estar separados por un espacio.
4
La transpuesta de un vector se obtiene usando el carácter ’ junto al
nombre del vector que definimos previamente
5
Scilab permite generar vectores igualmente espaciados con el comando
linspace(x,y,z, donde x representa el valor de inicio, y el valor de
llegada y z el espacio entre cada valor, ejemplo.
Construcción de Matrices.
Existen diferentes maneras de crear matrices con Scilab, aquı́ explora-
remos las formas mas básicas sobre este tema para contextualizar al lector
sobre esta opción que permite el programa.
6
Figura 9: Creación manual de matriz A.
7
Figura 11: Matrices definidas por Scilab.
8
Contador FOR
Se usa para definir bucles, se usa de manera lineal:
for variable= expresión a seguir la instrucción, instrucción, end.
Puede ser usado para crear vectores fila regularmente espaciados, para
usar este lenguaje de programación, se recomienda:
Ejemplos:
Contador
9
Valores escalonados
Matrices
Condicionales.
IF
La declaración if evalúa una expresión lógica y ejecuta un grupo de de-
claraciones cuando la expresión es verdadera. Las condiciones pueden ser
10
numéricas o escritas de igual forma. Los comandoselseif y else proporcio-
nan la ejecución de grupos aleatorios de declaraciones. Se recomienda al usar
esta declaración:
== igual.
= diferente de.
Se pueden combinar estas combinaciones dependiendo de lo que desea-
mos conseguir.
Ejemplo:
Condición IF.
11
Floor
Esta opción toma únicamente la parte enero del número que elegimos.
Floor.
Round
Este comando aproxima un valor decimal a su valor entero más cercano.
Round.
12
Input
Da la opción a la entrada de teclado por parte del usuario, usando esta
herramienta puede formar cadenas siempre que el ”mensaje”de entrada
sea el correcto, sino el mensaje o solicitud devuelve una cadena vacı́a.
Input.
While
La clausula While debe estar terminada por un end.
Dado que while puede prolongarse por siempre, es necesario poner una
condición para que el programa se detenga.
13
Figura 20: While restringido.
Comando Testmatrix.
Crea algunas matrices particulares como lo son:
14
Declaración de Funciones.
Función.
Es un comando de Scilab que nos permite crear funciones con n varia-
bles dependientes y m variables independientes, se usa de la siguiente
forma:
function (salida)=(nombre función)(entrada)
Argumentos de la función.
endfunction
Tenga en cuenta que el nombre de la función debe respetar las reglas
de sintaxis. Las definiciones de las funciones se pueden anidar.
mprintf.
La función mprinft escribe operandos formateados en la salida estándar
de Scilab (Es decir la ventana de Scilab). Los operandos de argumento
están formados bajo el control del operando de formato.
mprinft es una interfaz para la versión con código C de la versión
printf.
15
Figura 23: Fúncion mprinft.
Print
La función print imprime variables en un archivo. Imprime Xi en el
archivo ’file-name’ con el formato actual, es decir, el formato utiliza-
do por scilab para mostrar las variables. Todos los tipos de variables
pueden ser print.
Creación de Gráficos.
Gráficos 2-D.
Los gráficos en 2-D de Scliab están fundamentalmente orientados a la
representación grafica de vectores y matrices. En el caso mas sencillo
los argumentos básicos de la función plot van a ser vectores, como
una matriz que se toma generalmente como un conjunto de vectores
columna.
Scilab dispone de dos funciones básicas para crear gráficos 2-D. Estas
funciones se diferencian principalmente por el tipo de implementación
que se utiliza en los ejes de las abscisas y ordenadas.
16
• title : Añade tı́tulo al dibujo.
• legend() : Define retı́culas para las distancias entre lineas o ejes
utilizados en la figura.
• xlabel : Titula al eje X.
• ylabel : Titula al eje Y.
• xgrid : Activa la inclusión de una cuadricula en el dibujo, se puede
descartar con el comando xgrid(’off’).
17
Fúncion Plot
Esta es la función clave de todos los graficos 2-D en Scliab, ya se ha
dicho que los elementos básicos de los gráficos bidimensionales son los
vectores. Se utilizan cadenas de 1,2 o 3 caracteres para indicar colores y
tipos de lı́nea. La función plot(), en sus diversas variables solo dibuja
vectores.
Por defecto los puntos del grafico se unen con una lı́nea continua, al
igual que el color de la linea (azul).
18
Figura 26: Función plot con dos vectores.
19
• plot(x,A) Dibuja las columnas o filas de A en ordenadas frente al
vector x en abscisas. Las dimensiones de A y x deben ser coheren-
tes.
- Si la matriz A es cuadrada, se dibujan columnas
- Si no lo es y las dimensiones de las filas coincide con las del
vector x. dibuja filas
• plot(A,x) Al igual que en la anterior definición, pero dibujando
columnas o filas de A en abscisas, frente al valor de x en ordenadas.
• plot(A,B) Dibuja las columnas de B en ordenadas frente alas co-
lumnas de A en abscisas, dos a dos. Las dimensiones de ambas
matrices deben coincidir.
20
Comando Subplot.
Una ventada de grafica se puede dividir en m particiones horizontales
y en n particiones verticales, con el objetivo de representar múltiples
gráficos en ella. Cada una de estas sub-ventanas tiene sus propios ejes,
aunque la otra gran mayorı́a de propiedades son comunes a toda la
figura. La forma general de este comando es:
subplot(m,n,i)
Se puede editar a cada subplot, como por ejemplo a los rótulos de sus
ejes.
21
Control de los ejes.
En algunas ocasiones puede ser interesante cambiar algunas opciones
de Scilab por defecto. El comando básico es:
Por defecto Scilab ajusta la escala de cada uno de los ejes de modo que
varié entre el mı́nimo y el máximo valor de los vectores a representar.
Para acceder a mayor informacion sobre como cambiar los parametros
de los ejes buscar en la ayuda de Scilab axes properties, que nos
brindara una lista de las posibilidades a editar en los ejes del gráfico.
22
subsection*Otras Funciones graficas 2-D.
Existen otras funciones graficas bidimensionales orientadas a generar
otro tipo de gráficos distintos de los que produce la función plot.
Estas funciones son:
23
Figura 31: Gráfico.
Graficos 3-D.
24
ello se va a definir una función de este tipo en un fichero llamado
test3d.sce. La fórmula será la siguiente:
f unctionz = test3d(x, y)
Función PARAM3D.
La función param3d es análoga a su homóloga bidimensional plot2d.
Su forma más sencilla es la siguiente:
param3d(x, y, z)
Que dibuja una lı́nea que une los puntos (x1,y1,z1), (x2,y2,z2), etc. Para
proyectarlos sobre un plano con el fin de representarla en la pantalla.
Al igual que en el caso bidimensional, se puede incluir una cadena de 1,
2 o 3 caracteres para determinar el color, los markers y el tipo de lı́nea,
además se puede utilizar matrices X. Y y Z de las mismas dimensiones.
param3d(X, Y, Z)
En cuyo caso se dibujan tantas lı́neas como columnas tienen estas ma-
trices, donde cada una de las cuales esta definida por las 3 columnas
homologas de dichas matrices.
25
A continuación se va a realizar un ejemplo sencillo que consiste en di-
bujar un cubo. Para ello se creara una matriz que contenta las aristas
correspondientes, definidas mediantes los vértices del cubo como una
lı́nea poligonal continua. La matriz A cuyas columnas son las coorde-
nadas de los vértices, y cuyas filas son las coordenadas x,y,z de los
mismos.
Dibujo de mallados
26
Representan respectivamente las coordenadas de Xy Y en todos
los puntos de la recta.
• La matriz Z se calcula apartide de las matrices coordenadas X y
Y.
• Se dibuja Z como funcion plot3d3, cuyos elementos son funcion
elemento a elemento de X y Y.
27
Grafica de ecuacion de silla de montar.
x y
( )2 − ( )2 − z = 0
a b
28
Comando ndgrid.
Construye matrices de n dimensiones replicandounos vectores de plan-
tilla, existen diferentes aplicaciones como lo son:
29
Figura 38: Comando ndgrid con texto.
Solucion de ecuaciones.
En muchas ocaciones para resolver un problema de fı́sica es necesario
saber lidiar de manera rapida a ecuaciones de segundo o tercer grado,
para estos casos proponemos la siguiente manera de resolucion.
30
√
−b ± b2 − 4ac
x=
2a
Reescribimos la formula en Scilab para tener un pograma que sea capaz
de resolver cualquier ecuacion de este tipo.
3k − l2
Q=
9
9lk − 27j − 2l3
R=
54
q p
3
S1 = R + Q3 + R2
q p
3
S2 = R − Q3 + R2
3. La solucion para la ecuacion cubica esta dada por las siguien-
tes expresiones:
S1 + S2 − l2
X(1) =
9
√
S1 + S2 l i 3
X(2) = − − + (S1 − S2)
2 3 2
√
S1 + S2 l i 3
X(3) = − − − (S1 − S2)
2 3 2
31
Reescribiendo las ecuacion en Scilab obtenemos lo siguiente.
Animacion en Scilab.
Fec.
Representa un grafico de pseudo color de una funcion definida en una
malla, que tiene como secuencia de llamado la siguiente expresion:
Los argumentos de esta secuencia son:
• X,Y
Corresponde a dos vectores de tamaño n, donde el punto (x(i),y(i))
representa las coordenadas del nodo i.
32
• func
Un vector de tamaño n: func(i) da el valor en el nodo i para la
funcion a la cual queremos el grafico de pseudo color. gives the
value at node i of the function for which we want the pseudo-color
plot.
• triangles
Es una matriz [Ntr, N+2], Una linea de triangulo especifica un
poligono convexo de los tringualos de malla
(j)=[number,nodo1,nodo2,...,nodoN,flag]. Donde nodo1,nodo2,...,
nodoN son el numero de nodo que constituyen el poligono, num-
ber es el número de poligonos y flag es un número entero no
utilizado en la funcion fec.
• optargs
Representa una secuencia de declaraciones key1,value1, key2,value2,...,
donde key1,key2... pueden ser uno de los siguientes comandos:
1. strf, leg,rect, nax muetra la funcion plot2d
2. zminmax Vector con dos componentes [zmin, zmax] (especial-
mente util en una animacion particular).
3. colminmax Vector de dos enteros positivos [colmin, colmax].
4. colout Vector de dos enteros [undermincol uppermaxcol].
5. mesh Numero booleano, de valor predeterminado (debe ser
verdadero si también desea mostrar la malla)
33
Matplot1.
Diagrama 2D de una matriz usando colores, cuya entrada de argumen-
tos es:
M atplot1(a, rect)
En donde,
34
Sgrayplot.
Grafica una superficie suave usando colores en 2-D,presenta una estruc-
tura de la siguiente forma:
35