UNIVERSIDAD NACIONAL DE TUCUMÁN Facultad de Ciencias Exactas y Tecnología Departamento de Electricidad, Electrónica y Computación Carrera de Ingeniería en Computación Métodos Numéricos (1) Métodos Numéricos utilizando Scilab Para estudiantes de ingenierías, ciencias y matemáticas Docente: Ing. Martín Goñi Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán Métodos Numéricos (2) 2 Scilab (1) Descripción de un problema de ingeniería Aproximación con un modelo matemático Formulación Scientific Computing Laboratory INRIA (Institut National de Recherche en Informatique et en Automatique) Sitio oficial: http://www.scilab.org Métodos numéricos y analíticos Soluciones Aplicaciones Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 3 Scilab (2) Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 4 Entorno (1) Sin costo. Disponible el código fuente. Amplia variedad de plataformas. Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 5 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 6 1 Entorno (2) Tipos de datos (1) chdir – cambia el directorio actual. clc – limpia la ventana de comandos. clf – limpia la venta de gráficos. interrupt – interrumpe la ejecución. resume – continua la ejecución. abort – finaliza la ejecución. help – ayuda. Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 7 53 bits mantisa (16 cifras decimales equivalentes) 11 bits exponente. No necesitamos declarar previamente a su uso. El componente básico es una matriz. Matriz: (m x n) - un conjunto de números ordenados en filas (m) y columnas (n). Escalar: matriz de 1 x 1. Vector fila: matriz de 1 x n Vector columna: matriz de m x 1 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán -->%pi %pi = 3.1415927 -->size(%pi) ans = ! 1. 1. ! 9 la 8 -->a=[1 2 3; 4 5 6] a = ! 1. 2. 3. ! ! 4. 5. 6. ! -->size(a) ans = ! 2. 3. ! a= [ 1 2 3 4 5 6 ] Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán Tipos de datos (4) Scilab maneja automáticamente. variables Tipos de datos (3) pi= 3. 1416 las Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán Tipos de datos (2) Doble precisión (8 bytes). 10 Nombres de variables aritmética compleja -->x=5+2*%i x = Deben comenzar con una letra. Longitud máxima: 24 caracteres. Sensibles a mayúsculas y minúsculas. Ej: A, BCD, C58, velocidad, tiempo1, etc. 5. + 2.i -->y=5*x+3 y = 28. + 10.i Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 11 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 12 2 Operadores matemáticos para escalares Símbolo Operación Scilab Operadores matemáticos para vectores (elemento a elemento) Ej ^ Potenciación a^b 2 ^ 4 = 16 * Multiplicación a*b 3 * 5 = 15 / División a/b 6/2=3 Símbolo Operación Scilab Ej + Suma vector – escalar A+b [4 6] + 3 = [7 9] * Resta vector – escalar A-b [8 3] – 6 = [2 -3] + Suma de vectores A+B [4 6] + [8 3] = [12 9] Resta de vectores A-B [4 6] - [8 3] = [-4 3] Multiplicación de vectores A .* B [3 6] .* [2 -3] = [6 -18] \ División izquierda a\b 4\8=2 ./ División de vectores A ./ B [3 7] ./ [8 5] = [3/8 7/5] = [0.375 1.4] + Suma a+b 2+6=8 .\ División izquierda de vectores A .\ B [3 7] .\ [8 5] = [3\8 7\5] = [2.667 0.7143] - Resta a-b 7–4=3 .^ Potenciación de vectores A .^ B [4 2] .^ 3 = [4^3 2^3] = [64 8] 3 .^ [2 5] = [3^2 3^5] = [9 243] [5 3] .^ [2 4] = [5^2 3^4] = [25 81] Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 13 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán Operadores matemáticos para matrices Operación Scilab Ej + Suma A+B [4 6 ; 8 5] + [2 3 ; 9 1] = [6 9 ; 17 6] - Resta A-b [4 6 ; 8 5] – [2 3 ; 9 1] = [2 3 ; -1 4] * Multiplicación A*B [4 6 ; 8 5] * [2 3 ; 9 1] = [62 18 ; 61 29] / División A/B [4 6 ; 8 5] / [2 3 ; 9 1] = [2 0 ; 1.481 0.56] \ División izquierda A\B [4 6 ; 8 5] \ [2 3 ; 9 1] = [1.57 -0.32 ; -0.71 0.71] Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán a = 1 3 5 F = 2 0 2 1 15 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 16 Operador dos puntos (2) 5 1 1 4 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán a +b = 3 7 11 a. b = 1 2 = 2 3 4 12 5 6 30 Crea una nueva matriz a partir de una existente. C = [1,2,5;-1,0,1;3,2,-1;0,1,4] F = C(:,2:3) = [2,5;0,1;2,-1;1,4] 2 5 0 1 2 1 1 4 b = 2 4 6 Pero a * b no esta definido (multiplicación inconsistente) porque las dimensiones son incorrectas. Necesita utilizar .* Operador dos puntos (1) C = 1 1 3 0 14 Ejemplo Símbolo .* Nombre_variable = inicio : paso : fin tiempo = 0.0 : 0.5 : 2.5 tiempo = [0.0,0.5,1.0,1.5,2.0,2.5] tiempo = 10 : -1 : 2 tiempo = [10,9,8,7,6,5,4,3,2] 17 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 18 3 Matrices especiales Gráficos (1) 1 0 0 eye(3) 0 1 0 0 0 1 1 1 1 ones(3) 1 1 1 1 1 1 0 0 zeros(3,2) 0 0 0 0 --> x = -2 : 0.01 : 3; --> y = sin(x); --> plot2d(x, y); 1 1 1 1 ones(2,4) 1 1 1 1 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 19 21 Extensión (.sce). Es un archivo ASCII que contiene una secuencia de instrucciones. No tienen parámetros de entrada ni de salida. Las variables son compartidas como el área de trabajo. exec (nombre del script). Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 22 Programas (3) Scripts Se puede cargar y guardar código en un archivo de texto. Existen dos tipos: scripts, funciones. Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán Programas (2) 20 Programas (1) fplot2d: obtiene la gráfica de una función definida por el usuario. Exportar gráfico. Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán Gráficos (2) Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán plot2d: grafica a partir de vectores. 23 Funciones Extensión (.sci). Pueden tener parámetros de entrada y de salida. Tiene una o más funciones. Las variables son locales a la función. Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 24 4 Programas (4) Archivos de datos Ejemplo de un script Ejemplo de una función A=[3 4 12; 8 9 7]; B=[30 14 2; 88 79 47]; disp(A+B) function [y] = cuadrado(x) y = x ^ 2; endfunction Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán --> a=eye(2,2);b=ones(a); --> save('val.dat',a,b); --> clear a --> clear b -->load (‘val.dat') 25 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán Entradas interactivas nombre = input(‘Ingrese su nombre: ','s'); edad = input(‘Ingrese su edad: '); email = input(‘Ingrese su email: ','s'); 27 28 Estructuras de programas El formato utilizado no afecta a la precisión interna, sólo a la forma en la que se presentan al usuario los resultados. format (tipo, longitud) Se imprime en pantalla automáticamente (a menos que se coloque ;) Utilice disp para imprimir una variable en pantalla. disp (3 * 6) disp(‘temperatura=’) Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán Formatos 26 Salidas La función input permite solicitar al usuario valores directamente desde la ventana de comandos. Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán Permite cargar o guarda los valores de las variables. tipo: Operadores de relación y lógicos. Secuencia Selección Iteración ‘e’: notación científica / ‘v’: formato variable longitud: número de dígitos Ej: format('v',10); Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 29 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 30 5 Operadores de relación Operadores lógicos Scilab Interpretación Scilab Interpretación == es igual a & and ~= <> no es igual a | or < es menor que ~ not <= es menor o igual a > es mayor que >= Es mayor o igual a Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán Constantes booleanas: %f, %t 31 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán Secuencia 32 Selección (1) Las instrucciones son ejecutadas secuencialmente desde el inicio hasta el final. a = 4 + 3 ^ 2; b = sqrt(a); c = a + b; if if (condición) sentencias end if (x < = -1.0 | x > = 1.0) y=0 end Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 33 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán Selección (2) Repetición (1) if – else if (condición) sentencias else sentencias end Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 34 for for indice = inicio : paso : fin sentencias end for i = 1 : 1 : m for j = 1 : 1 : n a(i,j) = (i + 1) ^ 2 * sin(0.2 * j * pi); end end 35 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 36 6 Repetición (2) Bibliografía while while condición sentencias end i=1 while i <= m j=1 while j <= n a(i,j) = (i + 1) ^ 2 * sin(0.2 * j * pi); end end Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 37 Héctor M. Mora Escobar - Introducción a SCILAB - Departamento de Matemáticas - Univ. Nacional de Colombia - 2002 Scilab Group - Introduction to Scilab - INRIA Meta2 Project/ENPC Cergrene Steven C. Chapra Raymond P. Canale Métodos Numéricos para ingenieros - Mc Graw Hill Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 38 7