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 () 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 2 Métodos Numéricos (2) Scilab () 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 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 4 Scilab (2) Entorno () 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
Entorno (2) 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. Tipos de datos () Doble precisión (8 bytes). 53 bits mantisa (6 cifras decimales equivalentes) bits exponente. No necesitamos declarar las variables previamente a su uso. Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 7 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 8 Tipos de datos (2) 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 x. Vector fila: matriz de x n Vector columna: matriz de m x Tipos de datos (3) -->%pi %pi = 3.45927 -->size(%pi) ans =!..! -->a=[ 2 3; 4 5 6] a =!. 2. 3.!! 4. 5. 6.! -->size(a) ans =! 2. 3.! pi= 3. 46 a=[ 2 3 4 5 6] Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 9 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 la aritmética compleja automáticamente. -->x=5+2*%i x = Nombres de variables Deben comenzar con una letra. Longitud máxima: 24 caracteres. Sensibles a mayúsculas y minúsculas. Ej: A, BCD, C58, velocidad, tiempo, etc. 5. + 2.i -->y=5*x+3 y = 28. +.i Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 2 2
Operadores matemáticos para escalares Símbolo Operación Scilab Ej ^ Potenciación a ^ b 2 ^ 4 = 6 * Multiplicación a * b 3 * 5 = 5 / División a / b 6 / 2 = 3 \ División izquierda a \ b 4 \ 8 = 2 + Suma a + b 2 + 6 = 8 - Resta a - b 7 4 = 3 Operadores matemáticos para vectores (elemento a elemento) 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] = [2 9] - Resta de vectores A - B [4 6] - [8 3] = [-4 3].* Multiplicación de vectores A.* B [3 6].* [2-3] = [6-8]./ División de vectores A./ B [3 7]./ [8 5] = [3/8 7/5] = [.375.4].\ División izquierda de vectores A.\ B [3 7].\ [8 5] = [3\8 7\5] = [2.667.743].^ 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 8] Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 3 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 4 Operadores matemáticos para matrices Ejemplo Símbolo Operación Scilab Ej + Suma A + B [4 6 ; 8 5] + [2 3 ; 9 ] = [6 9 ; 7 6] - Resta A - b [4 6 ; 8 5] [2 3 ; 9 ] = [2 3 ; - 4] * Multiplicación A * B [4 6 ; 8 5] * [2 3 ; 9 ] = [62 8 ; 6 29] / División A / B [4 6 ; 8 5] / [2 3 ; 9 ] = [2 ;.48.56] \ División izquierda A \ B [4 6 ; 8 5] \ [2 3 ; 9 ] = [.57 -.32 ; -.7.7] a= b= 2 a +b= 3 3 4 7 5 6 Pero a * b no esta definido (multiplicación inconsistente) porque las dimensiones son incorrectas. Necesita utilizar.* a. b= 2= 2 3 4 2 56 3 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 Operador dos puntos () Crea una nueva matriz a partir de una existente. C = [,2,5;-,,;3,2,-;,,4] F = C(:,2:3) = [2,5;,;2,-;,4] Operador dos puntos (2) Nombre_variable = inicio : paso : fin tiempo =. :.5 : 2.5 tiempo = [.,.5,.,.5,2.,2.5] C= 2 5 F = 2 3 2 2 4 5 4 tiempo = : - : 2 tiempo = [,9,8,7,6,5,4,3,2] Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 7 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 8 3
Matrices especiales Gráficos () eye(3) zeros(3,2) plot2d: grafica a partir de vectores. --> x = -2 :. : 3; --> y = sin(x); --> plot2d(x, y); ones(3) ones(2,4) 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 9 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 2 Gráficos (2) Programas () 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 2 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 22 Programas (2) Scripts 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). Programas (3) 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 23 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 A=[3 4 2; 8 9 7]; B=[3 4 2; 88 79 47]; disp(a+b) Ejemplo de una función function [y] = cuadrado(x) y = x ^ 2; function Permite cargar o guarda los valores de las variables. --> a=eye(2,2);b=ones(a); --> save('val.dat',a,b); --> clear a --> clear b -->load ( val.dat') Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 25 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 26 Entradas interactivas La función input permite solicitar al usuario valores directamente desde la ventana de comandos. nombre = input( Ingrese su nombre: ','s'); edad = input( Ingrese su edad: '); email = input( Ingrese su email: ','s'); Salidas 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 27 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 28 Formatos 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) tipo: e : notación científica / v : formato variable longitud: número de dígitos Ej: format('v',); Estructuras de programas Operadores de relación y lógicos. Secuencia Selección Iteración 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 3 5
Operadores de relación Operadores lógicos Scilab Interpretación Scilab Interpretación == es igual a ~= <> no es igual a < es menor que <= es menor o igual a > es mayor que >= Es mayor o igual a & and or ~ not Constantes booleanas: %f, %t Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 3 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 32 Secuencia Las instrucciones son ejecutadas secuencialmente desde el inicio hasta el final. a = 4 + 3 ^ 2; b = sqrt(a); c = a + b; if Selección () if (condición) if (x < = -. x > =.) y = 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 34 Selección (2) if else if (condición) else Repetición () for for indice = inicio : paso : fin for i = : : m for j = : : n a(i,j) = (i + ) ^ 2 * sin(.2 * j * pi); Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 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) while while condición i= while i <= m j= while j <= n a(i,j) = (i + ) ^ 2 * sin(.2 * j * pi); Bibliografía Héctor M. Mora Escobar - Introducción a SCILAB - Departamento de Matemáticas - Univ. Nacional de Colombia - 22 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 37 Ing. Martín Goñi - Métodos Númericos - Ingeniería en Computación - Universidad Nacional de Tucumán 38 7