-
Universidad del ValleEscuela de Ingeniera de Sistemas y
ComputacinCurso: Mtodos NumricosDocente: Daniel Barragn
Clase Introduccin a la Programacin con Scilab
IntroduccinScilab fue creado en 1990 por investigadores en INRIA
(Institut national de recherche en informatique et en automatique)
y ENPC (cole nationale des ponts et chausses). Scilab es un
lenguaje de programacin de cdigo abierto, multiplataforma,
orientado a clculos numricos. Puede ser usado para procesamiento de
seales, anlisis estadstico, tratamiento de imgenes, simulacin de
fluidos, optimizacin y modelamiento y simulacin de sistemas
dinmicos.
Enlace de descarga:http://www.scilab.org/
Interfaz Grfica Scilab
-
Gua Bsica
Menu ayudaScilab permite visualizar la ayuda para un comando
determinado.--> help browsevar
Operaciones en la consolaScilab permite realizar operaciones
directamente en la consola y por defecto almacena los resultados en
una variable llamada ans.--> 24 12
ans = 12.-->
Si al final de una operacin se coloca un punto y coma, no se
visualizar el valor de ans.--> 24 12;-->
Historial de la consolaAl pulsar repetidamente la flecha arriba
podr visualizar cada uno de los comandos ingresados y
editarlos.
Limpiar la consolaScilab permite borrar el contenido de la
consola manteniendo almacenadas las variables.--> clc
Declaracin de variablesScilab permite definir variables en la
consola. La declaracin de variables diferencia maysculas de
minsculas.--> r = 4;--> R = 5;
Note que al colocar un punto y coma al final de las
declaraciones de r y R no se visualizan los valores ingresados.
Si escribe el nombre de la variable en la consola se visualizar
el valor almacenado.--> r
r = 4.--> R
R = 5.-->
Visualizacin de variables Scilab permite visualizar el estado de
las variables que hayan sido creadas en la consola.-->
browsevarEn la ventana de visualizacin de las variables deber
realizar doble clic en la variable deseada para ver su valor.
Borrar variablesScilab permite borrar todas las variables que
han sido declaradas
-
--> a = 5;--> aa = 5--> clear--> a!--error 4
Undefined variable: a
Nmeros ComplejosScilab permite la declaracin de nmeros
complejos.--> x = 2 + imult(2)
x = 2. + 2.i
Variables PredefinidasScilab contiene variable
predefinidas.--> %pi
%pi = 3.14.15927.
--> %ee = 2.7182818.
FormatoScilab permite cambiar el formato de representacin
numrica. Esto permite obtener ms precision en los calculos.-->
%pi
%pi = 3.14.15927.
--> format(16)--> %pi
%pi = 3.14.15926535898.
VectoresScilab permite la declaracin de vectores fila.--> t =
[0 2 4 6 8 10 12]
t = 0. 2. 4. 6. 8. 10. 12.
Scilab permite la declaracin de vectores columna.--> t = [0;
2; 4; 6; 8; 10; 12]t =
0.2.4.6.8.10.12.
Scilab permite transponer un vector.
-
--> t = [0 2 4 6 8 10 12]t = 0. 2. 4. 6. 8. 10. 12.
--> t't =
0.2.4.6.8.10.12.
Scilab permite acceder a un elemento de un arreglo especificando
un ndice.--> t(1)
ans = 0.Tenga en cuenta que en Scilab las posiciones de un
arreglo van desde 1 hasta el tamao del arreglo. Por tanto la
posicin 0 no existe.
Scilab permite declarar vectores de forma abreviada--> t =
1:5t = 1. 2. 3. 4. 5.
--> t = 1:0.5:3t = 1. 1.5 2. 2.5 3.
--> t = 10:-1:5t = 10. 9. 8. 7. 6. 5.
Scilab permite generar vectores con valores igualmente
espaciados.--> linspace(0,1,6)ans = 0. 0.2 0.4 0.6 0.8 1.
Scilab permite generar vectores con valores logaritmicamente
espaciados.--> logspace(0,1,6)ans = 1. 1.5848932 2.5118864
3.9810717 6.3095734 10.
MatricesScilab permite la declaracin de matrices.--> A = [2 4
6; 8 10 12; 14 16 18]A =
2. 4. 6.8. 10. 12.14. 16. 18.
Scilab permite acceder a un elemento de una matriz especificando
la fila y la columna.--> A(2,2)
ans = 10.
-
Scilab permite declarar matrices de ceros y unos.--> B =
zeros(3,3)B =
0. 0. 0.0. 0. 0.0. 0. 0.
--> C = ones(3,3)C =
1. 1. 1.1. 1. 1.1. 1. 1.
Scilab permite acceder de forma abreviada a las filas o columnas
de una matriz. Para imprimir todos los elementos de la segunda fila
de una matriz.--> A = [2 4 6; 8 10 12; 14 16 18];-->
A(2,:)
ans = 8. 10. 12.
Para imprimir todos los elementos de la segunda columna de una
matriz.--> A = [2 4 6; 8 10 12; 14 16 18];--> A(:,2)ans =
4.10.16.
Operaciones MatemticasScilab permite representar las siguientes
operaciones matemticas: ^ potenciacin, - negacin, * multiplicacin,
/ divisin, + suma y resta.--> c = 2*%pi
c = 6.2831853--> area = %pi*(5^2)
area = 78.539816
Scilab permite realizar el producto entre vectores.--> a = [1
2 3];--> b = [1 2 3]';--> resultado = a*b
resultado = 14.--> resultado = b*aans =
1. 2. 3.2. 4. 6.3. 6. 9.
Scilab permite realizar el producto entre un vector y una
matriz.--> A = [2 4 6; 8 10 12; 14 16 18];
-
--> b = [1 2 3]';--> A*bans =
28.64.100.
Scilab permite realizar el producto entre matrices.--> A = [2
4 6; 8 10 12; 14 16 18];--> B = [2 4 6; 8 10 12; 14 16
18];--> A*B
120. 144. 168.264. 324. 384.408. 504. 600.
Scilab permite dividir una matriz entre un valor.--> A = [2 4
6; 8 10 12; 14 16 18];--> A/2ans =
1. 2. 3.4. 5. 6.7. 8. 9.
Scilab permite usar el operador ^ en matrices.--> A = [2 4 6;
8 10 12; 14 16 18];--> A^2ans =
120. 144. 168.264. 324. 384.408. 504. 600.
Scilab permite de manera independiente usar el operador ^ en
cada uno de los elementos de una matriz.--> A = [2 4 6; 8 10 12;
14 16 18];--> A.^2
4. 16. 36.64. 100. 144.196. 256. 324.
Funciones IntegradasScilab contiene funciones integradas, las
cuales se emplean a travs de comandos y parametros de
entrada.--> sqrt(4)
ans = 2.--> sin(%pi/2)
ans = 1.--> acos(1)
ans = 0.--> abs(-5)
ans = 5
-
--> tanh(%pi)ans = 0.9962721
--> exp(1)ans = 2.7182818
Las funciones tambin pueden ejecutarse sobre matrices y
vectores--> F = [2 4 6; 8 10 12; 14 16 18];--> sum(F)
ans = 90.--> prod(F)
ans = 1.858D+08--> min(F)
ans = 2.--> max(F)
ans = 18.--> mean(F)
ans = 10.
TiempoScilab permite identificar el tiempo que tarda en
realizarse una operacin por medio de los comandos tic y toc.-->
tic--> tocans = 0.913
Graficacin--> g = 9.81--> m = 68.1--> cd = 0.25--> t
= [0:2:20]';--> v = sqrt(g*m/cd)*tanh(sqrt(g*cd/m)*t);-->
plot(t,v,'color','red','marker','>','linestyle',':');-->
title('Velocidad (v) Vs Tiempo (t)')--> xlabel('Tiempo
(t)')--> ylabel('Velocidad (v)')--> set(gca(),"grid",[1
1])
-
Para cambiar el tipo de lnea, el tipo de marcadores y el
color--> help LineSpec
Scilab permite visualizar mas de una grfica por ventana. En el
siguiente ejemplo se subdivide la ventana en 2 filas y 2
columnas.-->subplot(2,2,1)-->plot3d-->subplot(2,2,4)
-->surf
ScriptsScilab permite la creacin de scripts. Un script es un
conjunto de instrucciones o comandos almacenados en un archivo.
Para crear un script haga clic en el icono del lpiz que se muestra
en la figura.
-
Haga clic en el icono para guardar el script y asignele el
nombre ejemploclaseuno (sin espacios, ni caracteres especiales)
-
Digite las siguientes instrucciones y presione en guardar.
t = 0:2:12; v = ((9.8*68.1)/(12.5))*(1-exp(-(12.5/68.1)*t));
plot(t,v)
Ejecuta el script haciendo clic en el botn del icono del
triangulo.
Se debe visualizar la grfica que corresponde a los valores de t
contra v.
Digite las siguientes instrucciones, guarde las instrucciones en
un script de nombre ejemploclasedos y ejectelo.
-
x=2*sin(t)^7y=-4.5*cos(t).*(1+1.2*cos(t))+(cos(t)^2)^(1/8)+2.5plot(x,y)
FuncionesScilab permite la creacin de funciones. Para crear una
funcin se sigue el mismo procedimiento para la creacin de un
script.
Cree una carpeta de nombre Funciones en el escritorio.
Cree un nuevo archivo (script), asignele como nombre mifuncion y
almacnelo dentro de la carpeta Funciones que creo anteriormente.
Digite las siguientes instrucciones.
function mifuncion() printf('Soy una funcion');endfunction
Haga clic en el icono del triangulo
En la consola de scilab selecione el men File Change Current
Directory y seleccione como directorio actual la carpeta
Funciones
-
Digite en la consola el nombre de la funcin que creo
anteriormente (mifuncion):
Nota: Al digitar el comando pwd en la consola puede consultar el
directorio de trabajo actual
Parmetros de una funcin
Scilar permite crear funciones que reciben uno o ms datos.
Digite las siguientes instrucciones en un nuevo script y
almacnelo con el nombre sumatoria. Haga clic en el simbolo del
triangulo, si es necesario cambie el directorio actual de trabajo y
ejecutelo desde la consola con el comando sumatoria(1, 2, 5), donde
los nmeros 1, 2 y 5 son entradas a la funcin.
-
function sumatoria(valor1, valor2, valor 3) sumatoria = valor1 +
valor2 + valor3; printf('%d',sumatoria);endfuncion
Scilab permite crear funciones que retornan uno o ms datos.
Digite las siguientes instrucciones en un nuevo script y
almacenelo con el nombre operaciones. Haga clic en el smbolo del
triangulo, si es necesario cambie el directorio actual de trabajo y
ejectelo desde la consola con el comando [suma, mult] =
operaciones(2, 5), donde los nmeros 2 y 5 son entradas a la
funcin.
function [suma, mult] = operaciones(valor1, valor2) suma =
valor1 + valor2; mult = valor1*valor2;endfunction
Estructuras CondicionalesScilab permite el empleo de estructuras
condicionales (if, if-else, switch) en la creacin de scripts
Digite las siguientes instrucciones en un nuevo script y
almacenelo con el nombre espar. Haga clic en el smbolo del
triangulo, si es necesario cambie el directorio actual de trabajo y
ejectelo desde la consola con el comando espar(8), donde el nmero 8
es una entrada a la funcin.
function espar(numero)residuo = modulo(numero, 2);if residuo ==
0 then printf('%d es par',numero);else printf('%d es impar',
numero);endendfunction
Digite las siguientes instrucciones en un nuevo script y
almacenelo con el nombre leerOpcion. Haga clic en el smbolo del
triangulo, si es necesario cambie el directorio actual de trabajo y
ejectelo desde la consola con el comando leerOpcion(1), donde el
nmero 1 es una entrada a la funcin.
function leerOpcion(opcion) select opcion, case 1 then
disp('Opcion 1'); case 2 then disp('Opcion 2'); case 3 then
disp('Opcion 3'); else disp('Opcion no valida'); endendfunction
-
Estructuras de CiclosScilab permite el empleo de estructuras de
ciclos (for, while) en la creacin de scripts
Digite las siguientes instrucciones en un nuevo script y
almacenelo con el nombre listado. Haga clic en el smbolo del
triangulo, si es necesario cambie el directorio actual de trabajo y
ejectelo desde la consola con el comando listado(10), donde el
nmero 10 es una entrada a la funcin.
function listado(limite) for i = 1:2:limite printf('%d\n',i);
endendfunction
Digite las siguientes instrucciones en un nuevo script y
almacenelo con el nombre funcioneuler. Haga clic en el smbolo del
triangulo, si es necesario cambie el directorio actual de trabajo y
ejectelo desde la consola con el comando funcioneuler(12.5, 68.1,
2, 14), donde el nmero 12.5 corresponde al coeficiente de arraste,
el nmero 68.1 a la masa, el nmero 2 al stepsize, y el nmero 14 al
tiempo final a evaluar.
function funcioneuler(cd, mass, stepsize, tfinal)// Esta funcion
encuentra una solucion aproximada al problema// de caida libre
visto en clase.g = 9.81;v(1) = 0;t = 0:stepsize:tfinal;for
i=2:length(t) v(i) = v(i-1) +
(g-(cd/mass)*v(i-1))*(t(i)-t(i-1));endplot(t,v,'color','red','marker','>');xlabel("t,
s");ylabel("v, m/s");set(gca(),"grid",[1 1]);endfunction
Problemas1. Realice una funcin que reciba dos matrices y un
valor de opcin. Si la opcin es 1, retorne la suma de las matrices,
si la opcin es dos retorne la resta de las matrices y si la opcin
es tres retorne la multiplicacin de las matrices, si la opcin es
distinta retorne una matriz de ceros y muestre un mensaje de opcin
invalida.
2. Realice una funcin para encontrar una solucin aproximada por
medio del mtodo de euler empleando una relacin de segundo orden
para FU = cd*v^2.
3. Seleccione e implemente un ejercicio del anexo problema1.pdf
y un ejercicio del anexo problema2.pdf