guia sci lab

14
 Universidad del Valle Escuela de Ingeniería de Sistemas y Computac ión Curso: Métodos Numéricos Docente: Daniel Barragán Clase Introducción a la Programación con Scilab Introducción Scilab fue creado en 1990 por investigadores en INRIA (  Institut national de recherche en informatique et en automatique) y ENPC (  École nationale des ponts et chaussées). Scilab es un le ngu aj e de  programación de código abierto, multiplataforma, orientado a cálculos numéricos. Puede ser usado  para procesamiento de señales, análisis estadístico, tratamiento de imágenes, simulación de fluidos, optimización y modelamiento y simulación de sistemas dinámicos. Enlace de descarga: http://www.scilab.org/   Interfaz Gráfica Scilab

Upload: ortiz15

Post on 03-Nov-2015

216 views

Category:

Documents


0 download

DESCRIPTION

guía

TRANSCRIPT

  • 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