• No se han encontrado resultados

metodos numericos

N/A
N/A
Protected

Academic year: 2021

Share "metodos numericos"

Copied!
139
0
0

Texto completo

(1)

(2)

Copyright c 2014 Marlo Carranza

Publicado por Marlo Carranza

book-website.com

Material de consulta, para los estudiantes del curso de Métodos Numéricos de acuerdo al sílabus diseñado por la Facultad de Ciencias e Ingeniería de la Universidad de ciencias y Humanidades.

(3)

Universidad de Ciencias y

Humanidades

Facultad de Ciencias e ingeniería

Manual de Métodos Numéricos

con implementación en Matlab

Profesor

Marlo Carranza Purca

Lima - Perú Marzo -2014

(4)

Índice general

1. Introducción al Matlab 3

1.1. Operaciones con variables . . . 4

1.1.1. Formato . . . 6

1.1.2. Variables . . . 6

1.1.3. Algunas funciones matemáticas elementales . . . 7

1.2. Números Complejos . . . 8

1.3. Introducción al Álgebra lineal numérica . . . 9

1.3.1. Diversos tipos de matrices y propiedades . . . 10

1.3.2. Vectores y matrices con Matlab . . . 12

1.3.3. Vectores y matrices por bloques . . . 18

1.3.4. Algo de sistemas de ecuaciones . . . 20

1.4. Gráficos con MatLat . . . 21

1.4.1. Gráficos en coordenadas cartesianas . . . 21

1.5. Polinomios . . . 28

1.5.1. Evaluación de un polinomio . . . 28

1.5.2. Producto de polinomios . . . 29

1.5.3. División de polinomios . . . 29

1.5.4. Raíces de polinomios . . . 30

(5)

iii

1.6. Scripts y funciones . . . 32

1.7. Matemática Simbólica . . . 33

2. Aproximación y errores 43 2.1. Tipos de errores . . . 44

2.1.1. Número de cifras significativas . . . 47

2.2. Representación de números en la computadora . . . 48

2.2.1. Sistemas numéricos . . . 49

2.2.2. Aritmética del punto flotante . . . 51

2.2.3. Normalización de los números de punto flotante . . . 52

2.2.4. Operaciones en punto flotante . . . 53

2.3. Ejemplos . . . 53

3. Resolución de ecuaciones 57 3.1. Método de la Bisección . . . 59

3.1.1. Algoritmo de la bisección . . . 60

3.1.2. Ejercicios . . . 63

3.2. Método del punto fijo . . . 64

3.2.1. Algoritmo de iteración de punto fijo . . . 65

3.2.2. Algoritmo . . . 66

3.2.3. Existencia y unicidad . . . 66

3.2.4. Ejercicio . . . 70

3.3. Método de Newton . . . 71

3.3.1. Algoritmo . . . 72

3.3.2. Convergencia del método de Newton . . . 73

3.3.3. Variantes del método de Newton . . . 74

3.3.4. Ejercicios . . . 77

(6)

iv

4.1. Métodos directos . . . 78

4.1.1. Sistemas diagonales y triangulares . . . 78

4.1.2. Eliminación Gaussiana . . . 80

4.2. Métodos iterativos . . . 81

4.2.1. Método de Jacobi . . . 82

4.2.2. Método de Gauss Seidel . . . 83

4.2.3. Implementación . . . 87

5. Resolución de sistemas no lineales 91 5.1. Método de Newton . . . 91

6. Interpolación Numérica 94 6.1. Polinomio interpolador de Lagrange . . . 94

6.1.1. Formulación de Lagrange . . . 95

6.1.2. Implementación . . . 98

6.2. Formulación de Newton . . . 102

6.2.1. Interpolación lineal . . . 102

6.2.2. Interpolación cuadrática . . . 104

6.2.3. Forma general de los polinomios de interpolación de New-ton . . . 106

6.2.4. Implementación . . . 108

6.3. Interpolación por partes . . . 110

6.3.1. Trazadores lineales . . . 110

6.3.2. Trazadores cuadráticos . . . 112

7. Integración numérica 115 7.1. Fórmula del trapecio . . . 115

7.1.1. Fórmula del trapecio compuesta . . . 118

(7)

v

7.2.1. Fórmula de Simpson 1/3 . . . 121

7.2.2. Fórmula de Simpson compuesta . . . 121

7.2.3. Implementación . . . 122

7.2.4. Ejercicio, mecánica de la fractura . . . 123

8. Métodos de Runge - Kutta 126 8.1. Método de Euler . . . 127

(8)

Introducción

Un método numérico es un procedimiento mediante el cual se obtiene casi siempre de manera aproximada, la solución de ciertos problemas realizando cálculos algebraicos y lógicos. Tal procedimiento consiste de una lista finita de instrucciones precisas que especifican una secuencia de operaciones algebraicas y lógicas (algoritmo), que producen una aproximación de la solución del problema (solución numérica) o un mensaje acerca del problema. En los últimos treinta años la simulación se ha convertido, por méritos

propios, en uno de los tres pilares sobre los que se avanza en la ciencia (junto con la teoría y la experimentación). Esto es fruto del aumento espectacular de la capacidad de cálculo y de la disminución del coste de los ordenadores, pero también del avance en la formulación de métodos numéricos cada vez más precisos

Hay muchas empresas comercializando códigos de simulación e investigadores trabajando para construir modelos numéricos fiables. Por esto, los avances en las últimas décadas han sido espectaculares, no sólo en precisión, sino

también en el tipo de problemas que ahora somos capaces de abordar. Pero queda mucho por hacer, la realidad es extremadamente compleja y los

modelos matemáticos que se emplean han de enriquecerse. El objetivo es que la simulación sirva para comprender la realidad y para predecir su

comportamiento.

Los métodos numéricos, en general, tienen el atractivo de ofrecer una solución a problemas muy complejos que no pueden resolverse analíticamente, y en un entorno controlado de difícil manipulación experimental. Su debilidad está, a nuestro criterio, en creerse cualquier solución obtenida. Todos los métodos tienen error y se necesita capacidad crítica parar valorar los resultados numéricos y comprender los modelos matemáticos subyacentes. Los códigos de cálculo proporcionan resultados espectaculares y muy vistosos, no

necesariamente correctos. Un fallo en la selección del modelo matemático, o del método numérico puede dar lugar a resultados completamente erróneos. Entre otras de las ventajas que nos brindan los métodos numéricos, esta el

(9)

2

instalaciones de ensayo, y en el tiempo de cálculo ha sido tremendo. En segundo lugar, los métodos numéricos y la simulación, en general, permiten estudiar situaciones inexistentes, realizar ensayos virtuales y probar

prototipos, incluso en condiciones extremas sin peligro y con un costo

reducido. Si bien la simulación no puede acabar con los estudios teóricos ni la experimentación, no cabe duda de que los complementa, y nos ayuda a comprender mejor la naturaleza.

El lenguaje actual de los métodos numéricos es, en general, el análisis

funcional; en menor medida, y dependiendo de su aplicación, también juegan un papel muy relevante la geometría diferencial, el álgebra lineal y todo lo relacionado con la programación. El diseño y análisis de métodos numéricos es una rama de las matemáticas en la que se combinan aspectos muy diversos y cada campo de aplicación se apoya en mayor medida en una parte de las matemáticas.

(10)

1

Introducción al

Matlab

Durante las últimas décadas, el ordenador se ha convertido en una de las herramientas más potentes y útiles de que dispone el ingeniero, científico y muchas personas. Su utilización abarca desde la fase de diseño y validación experimental en un laboratorio, hasta la fase de construcción o producción industrial, pasando por la confección de planos y la redacción de los pliegos de condiciones en los que se utilizan diferentes equipos. Paralelamente a este auge también ha aparecido la necesidad de recurrir a diferentes, y cada vez más sofisticados, métodos numéricos en varias de las anteriores fases, este conocimiento le facilitara la comprensión de los lenguajes de programación así como el análisis e interpretación tanto de los resultados obtenidos como de los posibles errores de programación.

MatLab es una herramienta increíblemente poderosa, pero para usarlo con seguridad tiene que ser capaz de entender cómo funciona y ser muy preciso al introducir comandos. Cambiar la forma de introducir un comando, aunque sutilmente puede cambiar completamente su significado.

El objetivo principal de esta introducción es enseñarle a conversar con MatLab y comprender sus respuestas. Es posible interactuar con MatLab utilizando un "manual de instrucciones", lo cual está bien si la respuesta es lo que usted espera. Sin embargo, es mucho mejor aprender el idioma para que pueda entender la respuesta. Además es esencial aprender la gramática ( o la sintaxis ), lo que es tal vez más importante con los lenguajes de

programación convencionales; MatLab utiliza un intérprete para entender lo que le escribimos, que puede darnos sugerencias sobre dónde podría haber un error, a veces lo que se ha escrito tiene sentido para Matlab, pero no significa lo que usted espera, así que hay que tener cuidado.

Es crucial formular las ideas con claridad ( en su cabeza o mejor aun en papel) antes de intentar traducirlas en MatLab (o cualquier otro idioma). El nombre MatLab es una abreviatura de las palabras Matrix Laboratory. MatLab es un sistema interactivo para cálculos científicos y de ingeniería basado en las matrices. Con el se pueden resolver complejos problemas

numéricos sin necesidad de escribir un programa específico para ello. Además, el programa MatLab dispone, dependiendo de la versión, de diferentes

(11)

1.1. Operaciones con variables 4

MatLab: manejo de variables, el uso de funciones matemáticas, las operaciones entre arrays y el diseño de gráficas, esto nos permitirá

familiarizarnos de manera mas rápida de su entorno. además que posibilitará hacer un reconocimiento acerca de las reglas ortográficas y de las respectivas sintaxis de sus comandos y funciones más importantes.

1.1.

Operaciones con variables

A semejanza de C, C++ , MatLab tiene ciertas características

1. Hace diferencia entre las mayúsculas y las minúsculas en cuanto a los nombres de las variables, estas pueden empezar siempre con una letra y pueden constar de hasta 31 letras y números, considerándose al carácter

- como una letra.

2. Si una expresión termina en punto y coma ; se calcula su resultado, pero no se muestra en pantalla, y si esta se omite, entonces Matlab ejecutara la expresión y la mostrara en pantalla.

3. El carácter % se utiliza para insertar comentarios. Todo lo que sigue (en la misma línea) es ignorado.

4. Se pueden recuperar comandos anteriores navegando con las flechas ↑ y ↓.

5. clc , borra el contenido de la ventana de trabajo.

6. clear , borra todas las variables del espacio de trabajo, pero no la ventana de trabajo.

7. clear x,y, borra solo las variables x, y del espacio de trabajo, pero no la ventana de trabajo.

8. Exit , Se usa para salir de Matlab.

Además hay algunas variables y constantes especiales que se utilizan por defecto:

1. ans: Es la variable que se utiliza en los resultados. En la operación siguiente se puede recuperar este resultado volviendo a escribir ans. Esta variable se modifica en cuanto haya un nuevo resultado. 2. pi: El número π. ( No hay una variable para el número e , pero se

podría definir e = exp(1) ) .

(12)

1.1. Operaciones con variables 5

4. eps: Es el número más pequeño que utiliza el ordenador. 5. Inf: Infinito, aparece si hacemos 1/0 .

6. NaN: Mensaje de error (Not a Number), por ejemplo, 0/0 .

Las operaciones aritméticas entre escalares son efectuadas de manera natural usando los siguientes símbolos para las respectivas operaciones:

Adición + Potenciación ^ Multiplicación * División / 1. >> 3+4 ans = 7 2. >> 4*8 ans = 32 3. >> 5^2 ans = 25 4. >> 1/0

Warning: Divide by zero. ans =

Inf 5. 0/0

Warning: Divide by zero. ans = NaN 6. >> x=3+4 x = 7 7. >> x+10 ans = 17 8. >> pi ans = 3.1416

9. Comprueba la diferencia en-tre las operaciones

4/4 + 6, 4/(4 + 6) 3^5*2 , 3^(5*2) veamos a) >> 4/4+6 ans = 7 b) >> 4/(4+6) ans = 0.4000 c) >> 3^5*2 ans = 486 d ) >> 3^(5*2) ans = 59049 Ejemplo 1.

(13)

1.1. Operaciones con variables 6

1.1.1.

Formato

En general los resultados numéricos se muestran con cuatro cifras decimales, aunque todas las operaciones se ejecutan en doble precisión . Si se desean las salidas con toda la precisión disponible se debe insertar la

instrucción format long ; a partir de este punto todos los resultados se mostraran con 16 cifras significativas.

La instrucción, format rat , devuelve a partir de este lugar los resultados como la division de dos enteros.

Además, format short , devuelve la forma estándar de los cuatro decimales.

Veamos como representa Matlab el número π >> format long ; pi ans = 3.14159265358979 >> format short; pi ans = 3.1416 >> format rat; pi ans = 355/113 >> format;pi ans = 3.1416 Ejemplo 2.

1.1.2.

Variables

Matlab no necesita la declaración de variables como en un lenguaje tradicional. En principio todas las variables son reales, basta hacer uso de ellas para que queden declaradas.

(14)

1.1. Operaciones con variables 7 1. >> a=1; b=2; c=3; >> a+b ans = 3 >> a*c ans = 3 >> a+b+c ans = 6 >> a*b*c ans = 6

2. Dadas las variables y sus respectivos contenidos, a = 2, b = 5 y c = 10, calcule la expresión: E = 4ab2− 10c b veamos: >> a=2; >> b=5; >> c=10; >> E=4*a*b^2-10*c/b E = 180 Ejemplo 3.

Matlab no hace diferencia si las variables son enteras reales o de doble precisión, como suele ocurrir en otros lenguajes de programación como Pascal, C, C++ o Java entre los más destacados.

1.1.3.

Algunas funciones matemáticas elementales

Matlab tiene definidos diversos tipos de funciones, todas ellas clasificadas según el objeto o tipo de problema a resolver, los detalles de estas se irán desarrollando en el transcurso de las siguientes páginas. Veamos una lista de las funciones elementales mas usadas.

Función Matlab Función Matlab Función Matlab

|x| abs(x) ex exp(x)x sqrt(x)

sen(x) sin(x) cos(x) cos(x) tan(x) tan(x) 2z pow2(x) loge(x) log(x) log10(x) log10(x) signo(x) sign(x) arcos(x) acos(x) arctan(x) atan(x) senh(x) sinh(x) cosh(x) cosh(x) tanh(x) tanh(x) arcsinh(x) asinh(x) arc cos(x) acosh(x) arctanh(x) atanh(x)

(15)

1.2. Números Complejos 8

Verificar la identidad trigonométrica: sen2x + cos2x = 1 Nuestro código, sería:

>> x=0; >> r=sin(x)^2+cos(x)^2 r =1 >> x=1; >> r=sin(x)^2+cos(x)^2 r = 1 >> x=25; >> r=sin(x)^2+cos(x)^2 r =1 Ejemplo 4.

1.2.

Números Complejos

Cuando se trata de números complejos de la forma z = a + bi, donde a y b son reales, Matlab pone a disposición las siguientes operaciones que reducen las operaciones:

Función Matlab Función Matlab |z| abs(z) Imag(z) imag(z) Ángulo de z angle(z) Re(z) real(z)

(16)

1.3. Introducción al Álgebra lineal numérica 9

Dado el número complejo z = 3 + 4i , calcule: z, Imag(z), Ángulo(z), y |z| Veamos, se tiene : >> z=3+4*i z = 3.0000 + 4.0000i >> conjugada=conj(z) conjugada = 3.0000 - 4.0000i >> Real=real(z) Real = 3 >> Anglo=angle(z) Anglo = 0.9273 >> modulo=abs(z) modulo = 5 Ejemplo 5.

Calcule el valor de la siguiente expresión: w = |z|eθi, si z = 1 + i además, verifique si w = z. veamos : >> z=1+i z = 1.0000 + 1.0000i >> theta=angle(z); >> modulo=abs(z); >> w=modulo*exp(theta*i) w = 1.0000 + 1.0000i Ejemplo 6.

1.3.

Introducción al Álgebra lineal numérica

En la presente sección se recoge una serie de definiciones y resultados relativos a matrices, aunque una buena parte de ellos pueden ser conocidos, el hecho que esta recopilación busca fijar la notación utilizada, refrescar la memoria y tener a la mano resultados que vamos a requerir más adelante.

(17)

1.3. Introducción al Álgebra lineal numérica 10

1.3.1.

Diversos tipos de matrices y propiedades

En todo lo que sigue, K denota el cuerpo R de los números reales o C el cuerpo de los complejos, V = Kn, n ∈ N.

Una matriz es una colección de elementos aij ∈ K, dispuestos de la

siguiente forma A =         a11 a12 · · · a1n a21 a22 · · · a2n .. . ... . .. ... am1 am2 · · · amn        

es una, matriz real si K = R y compleja cuando K = C .

La matriz A tiene m filas y n columnas, es decir tiene dimension m × n en particular:

1. Un vector columna es una matriz de dimension m × 1 2. Un vector fila es una matriz de dimension 1 × n Definición 1.

Notación 1.1.

1. Una matriz A de dimensión m × n de elementos aij ∈ K se denota

A = (aij)m,ni,j=1 (i fila, j columna ). También denotaremos por (A)ij o

A(i, j) el elemento de de A que ocupa la fila i y la columna j

2. Escribiremos la matriz A = (a1, a2, . . . , an) donde ai ∈ Km representa la

columna i-ésima de A para i = 1, 2, . . . , n

3. El conjunto de todas las matrices de orden o dimension m × n con elementos en K con las operaciones de adición y multiplicación por un escalar lo denotaremos como Mm×n

(18)

1.3. Introducción al Álgebra lineal numérica 11

Si A = (aij) m,n

i,j=1 y B = (bij) m,n

i,j=1 son matrices de dimensión m × n

1. Se define la suma de matrices como la matriz A + B = (cij)m,ni,j=1 con cij = aij + bij

y el producto de una matriz A = (aij)m,ni,j=1 por un escalar λ ∈ K

como la matriz

λA = (λaij)m,ni,j=1

2. La matriz AT = (aji) n,m

j,i=1 se denomina matriz transpuesta de A.

3. Una matriz A se denomina matriz cuadrada o matriz de orden n. Diremos que una matriz es rectangular si no es cuadrada. 4. A es simétrica si A = AT.

5. La matriz A ∈ Mn es no singular si existe una matriz B ∈ Mn,

tal que AB = BA = I, la matriz B es llamada la inversa de A y se denota B = A−1.Las matrices no inversibles son singulares. 6. Una matriz A ∈ Mn es no singular si det(a) 6= 0

7. Si det(A) 6= 0 , la matriz inversa de A =   a y x b   es A−1 =      b −y −x a      det(A)

8. La Adjunta de una matriz A ∈ Mn es la traspuesta de la matriz

que resulta de sustituir cada uno de sus elementos por su cofactor, y se denota adj(A)

9. Si det(A) 6= 0 se cumple que A−1 = adj(A)|A|

10. A es ortogonal si AT = A−1 es decir AAT = ATA = I A = diag(aij) = diag(a11, a22, . . . , ann) =         a11 0 · · · 0 0 a22 · · · 0 .. . ... . .. ... 0 0 · · · ann         Definición 2.

(19)

1.3. Introducción al Álgebra lineal numérica 12

Si A = (aij) m,n

i,j=1 y B = (bij) m,n

i,j=1 son matrices de dimensión m × n

1. La matriz A es triangular superior (respectivamente inferior si ) aij = 0 para i > j (respectivamente i < j )

2. La matriz A es diagonal si aij = 0 cuando i 6= j, en este caso se

denota

3. La matriz A es de diagonal estrictamente dominante si |aii| >

Σnj=1,j6=i|aij| para i = 1, 2, . . . n

4. Se denomina traza de la matriz A al número tra(A) = Σn i=1aii

Definición 3.

Sean A, B matrices cuadradas de la misma dimension, se cumple 1. tra(AB) = tra(BA)

2. tra(A + B) = tra(A) + tra(B) 3. det(AB) = det(BA) = det(A) det(B) 4. det(λA) = λndet(A)

Teorema 7.

1.3.2.

Vectores y matrices con Matlab

Una de las cualidades de MatLab es el manejo de los vectores y las matrices, veremos algunos ejemplos

(20)

1.3. Introducción al Álgebra lineal numérica 13

1. Definiremos el vector fila

>> a=[1 2 3 4 5 ] a =

1 2 3 4 5

para indicar la n-ésima com-ponente de vector escribimos

>> a(3) ans =

3

Observe que se muestra el arreglo a como un vector fi-la con 5 columnas, además cada elemento puede ser se-parado por comas o espacios como el ejemplo mostrado. Si usted desea ver los prime-ros m elementos del vector a escribimos

>> a(1:3) ans =

1 2 3

2. A continuación tenemos otros formatos para definir vectores.

>> u=1:5 u =

1 2 3 4 5

3. Usaremos linspace para ge-nerar un vector

>> a=linspace(1,5,5) a =

1 2 3 4 5

4. Pero también se pueden de-finir vectores columna

>> v=[1; 2; 3; 4; 5 ] v = 1 2 3 4 5 Ejemplo 8. Matrices

Para generar matrices tenemos que introducir vectores fila de la misma dimensión, fila por fila, se usa el punto y coma ; para separar las filas.

(21)

1.3. Introducción al Álgebra lineal numérica 14

Generemos las matrices usando MatLab. A =      1 2 3 4 5 6 7 8 9 10 11 12      B =      0 2 1 4 5 0 1 0 2 0 3 7      tenemos >> A=[1 2 3 4; 5 6 7 8; 9 10 11 12] A = 1 2 3 4 5 6 7 8 9 10 11 12 >> B=[0 2 1 4; 5 0 1 0 ; 2 0 3 7] B = 0 2 1 4 5 0 1 0 2 0 3 7 Ejemplo 9. Operaciones

Existen en Matlat dos tipos de operaciones aritméticas, las operaciones aritméticas matriciales, que se rigen por las reglas del Álgebra lineal y las operaciones aritméticas a elemento, que se realizan elemento a elemento, veamos la tabla de que describe las operaciones.

Operación Símbolo Operación Símbolo

Suma de vectores y matrices + Resta de vectores y matrices -Producto de matrices * Multiplicación a elemento .* Potenciación de matrices ^ Potenciación a elemento .^ Cociente matricial / División a elemento . / Cociente matricial \ División a elemento .\

(22)

1.3. Introducción al Álgebra lineal numérica 15

1. Para generar matrices tene-mos que que introducir vec-tores fila de la misma canti-dad de componentes, fila por fila. se usa punto y coma pa-ra sepapa-ra las filas.

A =      1 2 3 4 5 6 7 8 9      B =      0 2 4 6 1 3 5 7 0 1 2 3      A=[1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 B=[0 2 4; 1 3 5; 0 1 2] B = 0 2 4 1 3 5 0 1 2

2. Veremos operaciones con matrices >> S=A+B S = 1 4 7 5 8 11 7 9 11 >> EA=2*A EA = 2 4 6 8 10 12 >> P=A*B P = 2 11 20 5 29 53 8 47 86 >> T=A’ % transpuesta T = 1 4 7 2 5 8 3 6 9 >> PM=A^3 % potencia PM = 468 576 684 1062 1305 1548 1656 2034 2412 >> trace(A) % Traza ans = 15

3. Determinante de una matriz

D=[1 0 0;0 2 0;0 0 3] D = 1 0 0 0 2 0 0 0 3 >> det(D) ans = 6 4. Matriz inversa >> inv(D) ans = 1.0000 0 0 0 0.5000 0 0 0 0.3333 Ejemplo 10.

(23)

1.3. Introducción al Álgebra lineal numérica 16

Veamos algunos ejemplos

>> % operaciones de suma y producto >> suma = A+B

suma =

1 4 4 8

10 6 8 8

11 10 14 19

>> % suma caso especial >> casoEspecial=10+suma casoEspecial =

11 14 14 18

20 16 18 18

21 20 24 29

>> % prod escalar por matriz >> escalarmatriz=2*A escalarmatriz = 2 4 6 8 10 12 14 16 18 20 22 24 >> % transpuesta >> transpuesta=A’ transpuesta = 1 5 9 2 6 10 3 7 11 4 8 12 >> % producto de A por B >> Producto= A*transpuesta Producto = 30 70 110 70 174 278 110 278 446 >> % potencia E*E*E >> potencia=E^3 potencia = 1 14 0 8 Ejemplo 11. Operaciones a elementos

Ahora vamos a revisar las operaciones a elemento y vamos a ver las

diferencias con las operaciones ya vistas, pero antes veamos la tabla con la descripción de las operaciones que vamos a utilizar.

Operación Símbolo Multiplicación a elemento .* Potenciación a elemento .^ División a elemento . /

(24)

1.3. Introducción al Álgebra lineal numérica 17 >> E=[1 2 ; 3 4], F=[2 4 ; 8 16] E = 1 2 3 4 F = 2 4 8 16 >> % Producto a elemento >> E.*F ans = 2 8 24 64 >> % Division a elemento >> E./F ans = 0.5000 0.5000 0.3750 0.2500 >> %potenciacion a elemento >> P=E.^3 P = 1 8 27 64 Ejemplo 12.

Veamos algunos ejemplos de operaciones a elemento, Dadas las matri-ces A y B >> A=[2 4; 8 10] A = 2 4 8 10 >> B=[2 3; 1 1] B = 2 3 1 1 >> %potencia a elemento >> P=A.^2 P = 4 16 64 100 >> %producto a elemento >> A*B ans = 8 10 26 34 >> %division a elemento >> A./B ans = 1.0000 1.3333 8.0000 10.0000 >> %potencia variable >> %a elemento >> x=[1 2 3]; x.^x ans = 1 4 27 >> %potencia variable %a elemento >> y=[1 2; 3 4]; y.^y ans = 1 4 27 256 Ejemplo 13.

(25)

1.3. Introducción al Álgebra lineal numérica 18

1.3.3.

Vectores y matrices por bloques

Selección de elementos de un vector

V(n) Devuelve en n-ésimo elemento del vector

V([n,m,p]) Devuelve los elementos del vector situados en las posiciones n, m , p V(n:m) Devuelve los elementos del vector situados entre las posiciones n y m

>> V=[ 2 4 6 8 10 ];

% obtenemos 3era componente >> V(3) ans = 6 %obtenemos la 1, 3 5 comp. >> V([1 3 5]) ans = 2 6 10 % elementos de 3 a 5 posición >> V(3:5) ans = 6 8 10 Ejemplo 14.

Selección de los elementos de una matriz

A(m,n) Devuelve el elemento (m, n) de la matriz.

A([n,m],[p,q]) Devuelve la submatriz formada por la intersección de las filas n, m y las columnas p, q.

A(n,:) Devuelve la fila n. A(:,m) Devuelve la columna m.

(26)

1.3. Introducción al Álgebra lineal numérica 19 Sea la matriz >> A=[1:4; 5:8 ; 9:12 ] A = 1 2 3 4 5 6 7 8 9 10 11 12

>> % elemento fila 2, col 3 >> A(2,3) ans = 7 >> % extraemos la fila 1 >> A(1,:) ans = 1 2 3 4 >> % obtenemos la col 3 >> A(:,3) ans = 3 7 11 % obtenemos la submatriz >> A([2,3],[2,3]) ans = 6 7 10 11 % obtenemos la submatriz >> A(2:3,2:3) ans = 6 7 10 11 % obtenemos la submatriz >> A(:,2:3) ans = 2 3 6 7 10 11 Ejemplo 15.

Otras maneras de definir matrices . Matlat tiene otra formas de definir matices, dado que introducirlas por el teclado no es muy práctico sobre todo cuando la matriz es muy grande.

A = 1 2 3 4 5 6 7 8 9 >> B=[1 1 1; 2 2 2; 3 3 3] >> col=[A B] col = 1 2 3 1 1 1 4 5 6 2 2 2 7 8 9 3 3 3 >> fil=[A ; B] fil = 1 2 3 4 5 6 7 8 9 1 1 1 2 2 2 3 3 3 Ejemplo 16.

(27)

1.3. Introducción al Álgebra lineal numérica 20

Más matrices y funciones matriciales

zeros(m,n) Matriz nula de orden n × m

ones(m,n) Matriz formada por unos de orden n × m eye(n) matriz identidad de orden n.

tril(A) Parte triangular inferior de la matriz A triu(A) Parte triangular superior de la matriz A magic(n) Matriz mágica

vander(n) Matriz de Vandermonde inv(A) Matriz inversa de la matriz A. trace(A) Traza de la matriz A.

[fil,col]=size(A) Nos informa el número de filas y columnas. length(A) Nos da el mayor valor de la fila o de la columna. max(A) Proporciona el máximo de los elementos de A. min(A) proporciona el mínimo de los elementos de A.

1.3.4.

Algo de sistemas de ecuaciones

Para resolver sistemas lineales, en estos momentos se tienen muchas herramientas, pero en esta sección vamos a mostrar una forma de solución usando algunas funciones sencillas que nos ofrece MatLab.

         2x1+ 3x2− 4x3 = 3 x1− x2+ x3 = −0,5 4x1− 7x2+ 14x3 = 2

vamos a expresar el sistema en la forma      2 3 −4 1 −1 1 4 −7 14      | {z } A      x1 x2 x3      | {z } X =      3 −0,5 2      | {z } b

(28)

1.4. Gráficos con MatLat 21

Para resolver este sistema de ecuaciones realizamos las siguientes ac-ciones con Matlab

>> A=[2 3 -4;1 -1 1; 4 -7 14] A = 2 3 -4 1 -1 1 4 -7 14 >> b=[3 ; -0.5 ; 2 ] b = 3.0000 -0.5000 2.0000 % solución >> x=A\b x = 0.5000 2.0000 1.0000

% Solución con linsolve >> x= linsolve(A,b) x = 0.5000 2.0000 1.0000 Ejemplo 17.

1.4.

Gráficos con MatLat

MatLat produce gráficos de dos dimensiones, así como contornos y gráficos de densidad. Se pueden representar los gráficos y listar los datos, permite el control de colores, sombreado y otras características de los gráficos, también soporta gráficos animados. Como podemos ver los gráficos producidos por MatLat tienen muchas muy buenas características, inclusive son portables a otros programas

1.4.1.

Gráficos en coordenadas cartesianas

Estos gráficos se tratan como curvas que pasa por pares ordenados, pero finalmente Matlab lo que hace es trazar una poligonal lineal que pasa por estos puntos o pares ordenados.

(29)

1.4. Gráficos con MatLat 22

>> x=[7 9 3 1 5 20 5]; >> plot(x)

>>

Ejemplo 18.

1. plot(X) Representa los puntos (k, xk). Si X es una matriz hace lo

mismo para cada columna de la matriz si X es un vector complejo, representa real(X) frente a imag(X).

2. plot(X,Y) Representa los punto (X, Y ), si X y Y son matrices representa por filas o columnas los datos de X frente a los datos de Y , dependiendo si el otro otro vector es fila o columna.

3. plot(X,Y,S) Es la gráfica de plot(X,Y) con las opciones definidas en S, usualmente S se compone de tres caracteres entre tildas, el primero fija el color, el segundo fija la etiqueta o marca en el nodo el ultimo fija el carácter usado en el nodo.

4. plot(X1, Y2, S3, . . . , Xn, Yn, Sn) : Gráfica de las n curvas

superpuestas.

5. hold Permite montar o sobreponer varios gráficos usando una sola ventana.

hold on para activar hold hold off para desactivar hold

6. zoom Permite ampliar o disminuir el gráfico, se activa con zoom on y se desactiva con zoom off .

(30)

1.4. Gráficos con MatLat 23

Color Etiqueta trazo

y amarillo . puntos - sólido m magenta ◦ círculos : a puntos

c cyan x x- marcas -. guiones y puntos r rojo + signo + -- semisólidos g verde * estrellas

b azul s cuadrados w blanco d diamantes

k negro p estrella de cinco puntos

Graficar f (x) =√x + 4x3sen(x) en el intervalo [0, 5] >> x=0:0.2:5;

>> y=sqrt(x)+4*x.^2.*sin(x); >> plot(x,y)

(31)

1.4. Gráficos con MatLat 24

1. Graficar f (x) = ex − x sen(x2) + 2 en el intervalo [−3, 3], con

trazo de color rojo, etiquetas cuadradas y linea punteada

>> x=-3:0.4:3;

>> y=exp(x)-x.*sin(x^2)+2; >> plot(x,y,’rs:’)

2. Graficar las funciones y1 = −x sen(x2) + 2; y2 = abs(x) + 4 sen(x); y3 = x + 0,3x3 colocando el titulo, descripción de los

ejes y la leyenda. >> x=-3:0.4:3; >> y1=-x.*sin(x.^2)+2; >> y2=abs(x)+4.*sin(x); >> y3=x+0.3.*x.^3; >> plot(x,y1,x,y2,x,y3);

>> title(’Gráfico de tres funciones’); >> xlabel(’Eje x’);

>> ylabel(’Eje y ’);

>> legend(’-xsen(x^2)+2’,’abs(x)+4sen(x)’,’x+0.3x^3’); Ejemplo 20.

(32)

1.4. Gráficos con MatLat 25

1. Graficaremos la función f (x) = sen(x) conjuntamente con la función h(x) = cos(x) en el intervalo [−2π; 2π]

Los gráficos respectivos los mostraremos en la misma ventana.

>> x=linspace(-2*pi,2*pi,100); >> y1=sin(x); >> y2=cos(x); >> plot(x,y1,’red’); >> hold on; >> plot(x,y2,’blue’);

>> title(’funciones: seno y coseno’); >> legend(’ seno(x)’, ’cos(x)’);

Gráfica de una función definida a trozos 2. Graficar la función f la cual viene definida a trozos

f (x) =          x2 si x < 0, 1 si 0 ≤ x < 1 −x + 2 si 1 ≤ x

Generamos una tabla de valores en el dominio en el que queramos dibujar la función

>>x=linspace(-2,3,3000);

Y ahora definimos la función, multiplicando cada trozo por el índice lógico que describa el lugar en el que queremos dibujarlo,

>>y=(x.^2).*(x<0)+1.*((0<=x)&(x<1))+(-x+2).*(1<=x); Ejemplo 21.

(33)

1.4. Gráficos con MatLat 26

Y ahora la dibujamos. Resulta conveniente hacerlo con puntos, asteris-cos o cruces porque, de otra forma, no aparecerán las discontinuidades >>plot(x,y,’.’),grid on,title(’Función definida a trozos’) escribimos en matlab el código

>>x=linspace(-2,3,3000);

>>y=(x.^2).*(x<0)+1.*((0<=x)&(x<1))+(-x+2).*(1<=x);

>>plot(x,y,’.’),grid on,title(’Función definida a trozos’) Ejemplo 22.

Obtención de puntos desde el gráfico

Una vez que se ha realizado una gráfica, podemos necesitar conocer las coordenadas de algunos puntos de la misma. Por ejemplo, el lugar

aproximado en el que están los máximos y mínimos, o si queremos añadir alguna recta o una poligonal al dibujo. Para conseguir esto, se puede utilizar el comando ginput .

Escribiendo

[x, y] = ginput(N )

Donde N es el número de puntos cuyas coordenadas queremos obtener. Después de ejecutado el comando habrá que pulsar con el botón izquierdo del ratón sobre el dibujo tantas veces como puntos hayamos especificado. Las coordenadas de esos puntos quedarán almacenadas en las variables [x; y].

(34)

1.4. Gráficos con MatLat 27

Búsqueda de ceros de una función

La localización de ceros o raíces de una función está ligada a la al cambio de signo de dicha función, como lo muestra el Teorema Bolzano, el será visto en el Capítulo 3.

Efectuar una localización gráfica de los ceros de la función f (x) = ex(x2− 1) en el intervalo [−5; 5]

x=linspace(-5,5,100); >> y=exp(x).*(x.^2-1); >> plot(x,y,’b’);

Ahora hacemos un pequeño cambio x=linspace(-5,5,100); >> y=exp(x).*(x.^2-1); >> plot(x,y,’b’); hold on ; plot([-5,5],[0,0],’r’); zoom on Ejemplo 23.

(35)

1.5. Polinomios 28

1.5.

Polinomios

Una expresión que tiene la siguiente forma

(1.1) P (x) = a0xn+ a1xn−1+ · · · + an−1x + an

es llamada polinomio. Definición 4 (Polinomio).

Los polinomios son usados ampliamente en los tópicos de matemáticas y cursos de naturaleza computacional, como el curso de métodos numéricos esto se justifica por la facilidad de manipulación y de implementación en cualquier lenguaje de programación, por ejemplo es fácil de evaluar, derivar e integrar analíticamente como numéricamente, claro que los polinomios tienen algunos inconvenientes como la tendencia a oscilar cuando el grado es grande, en Matlab se introduce a través de sus coeficientes pero considerando el polinomio completo y ordenado en forma decreciente

El polinomio P (x) = x3+ 4x2− 6x + 7 en Matlab se introduce así

>> p=[ 1 4 -6 7 ] Ejemplo 24.

1.5.1.

Evaluación de un polinomio

polyval(p,x) evalúa el polinomio P en x P es un vector de longitud n + 1 , cuyos elementos son los coeficientes del polinomio

Vamos a evaluar el polinomio P (x) = x3 + 4x2− 6x + 7 en diferentes

valores para x >> sumacoeficientes=polyval(p,1) sumacoeficientes = 6 >> terminoindep=polyval(p,0) terminoindep =7 Ejemplo 25.

(36)

1.5. Polinomios 29

1.5.2.

Producto de polinomios

Usamos la instrucción conv(p,q) que multiplica los polinomios p y q

Cargamos los polinomios p(x) = x + 1 y q(x) = x − 1 >> p =[1 1]

>> q=[1 -1]

% Calculamos p=(x+1)^2=x^2+2x+1 >> binomiocuadrado=conv(p,p) binomiocuadrado = 1 2 1

% Calculamos la diferencia de cuadrados (x+1)(x-1) >> difcuadrados=conv(p,q) difcuadrados = 1 0 -1 % calculamos (x+2)(x+3) >> a=[1 2]; >> b=[1 3]; >> multiplicamos=conv(a,b) multiplicamos = 1 5 6 Ejemplo 26.

1.5.3.

División de polinomios

La instrucción [Q,R]=deconv(D,d) realiza la división de los polinomios D(x) entre d(x), obteniéndose el cociente Q y el residuo R

Vamos a dividir el polinomio p(x) = x3 − 1 entre d(x) = x2 + x + 1

para lo cual hacemos >> p=[1 0 0 -1]; >> d=[1 1 1]; >> [q,r]=deconv(p,d) q = 1 -1 % cociente r = 0 0 0 0 % residuo Ejemplo 27.

(37)

1.5. Polinomios 30

1.5.4.

Raíces de polinomios

roots(P) calcula las raíces del polinomio P (x)

Vamos a calcular las raíces del polinomio p(x) = x3 + 6x2 + 11x + 6 para ello realizamos los pasos siguientes

>> p=[1 6 11 6] >> raices=roots(p) raices = -3.0000 -2.0000 -1.0000 Ejemplo 28.

poly(vectorRaiz) Calcula el polinomio de raíces vectorRaiz

Vamos a calcular el polinomio p(x) cuyas raíces vienen dadas por el vector vectorRaiz

vectorRaiz=[-3 -2 -1];

>> polinomio=poly(vectorRaiz) polinomio = 1 6 11 6

Ejemplo 29.

1.5.5.

Derivada e integral de un polinomio

polyder(p) calcula la derivada de un polinomio

Calcular la derivada de f (x) = 4x3− x2− 3x − 2 >> p=[4 -1 -3 -2]; >> derivada=polyder(p) derivada = 12 -2 -3 Ejemplo 30.

(38)

1.5. Polinomios 31

polyint(p) calcula la integral de un polinomio.

Calculamos la integral de f (x) = 4x3− x2− 3x − 2 >> p=[4 -1 -3 -2];format rat >> integral=polyint(p) integral = 1 -1/3 -3/2 -2 0 Ejemplo 31. Graficar el polinomio p(x) = x3− x p=[1 0 -1 0]; >> x=linspace(-3,3,200); >> y=polyval(p,x); >> plot(x,y) >> legend(’polinomio x^3-x’) >> raices=roots(p); >> hold on >> plot(raices,zeros(1,3),’or’) >> legend(’polinomio x^3-x’,’raices’) >> plot(x,0) Ejemplo 32.

(39)

1.6. Scripts y funciones 32

Graficar el polinomio p(x) = x3 + 6x2+ 11x + 6 para ello realizamos los pasos siguientes

>> p=[1 6 11 6]; >> x=linspace(-6,2,600); >> y=polyval(p,x); >> plot(x,y) >> legend(’polinomio x^3+6x^2+11x+6’) >> raices=roots(p); >> hold on >> plot(raices,zeros(1,3),’or’) >> legend(’polinomio x^3+6x^2+11x+6’,’raices’) >> plot(x,0) Ejemplo 33.

1.6.

Scripts y funciones

Creación de archivos tipo m

Hasta el momento solo hemos visto pequeños ejemplos en cuanto al código, pero para códigos mas complejos donde se tenga que hacer correcciones esta tarea se tornara muy difícil, MatLab soluciona este problem a creando un archivo de de texto sin formatear (script ) en el cual se escriben todas las sentencias MatLab ejecutara todas las ordenes, especificando el archivo respectivo como si hubiesen sido escritos directamente en la ventana de comandos de MatLat.

Archivos como funciones

MatLat nos proporciona un formato para crear nuestras propias funciones, estas pueden definirse en un archivo de texto (archivo con extensión M ), que a su vez lo tenemos a disposición en cualquier instante, están funciones tienen la virtud de tener argumentos de salida.

(40)

1.7. Matemática Simbólica 33

Implementación de un programa

Calcule el valor de la hipotenusa de un triángulo rectángulo a partir de sus dos catetos

1. Cree un script . Para esto vamos a crear el archivo m, desde el menu de file seleccionamos new y vamos a crear un nuevo archivo eligiendo la opción m file luego digitamos el programa

Con [ctrl]+[s] guardamos como hipot.m , ejecución en la ventana de comandos >> hipot cateto a= 3 cateto b= 4 hip = 5

2. Cree una función. Para la función vamos a crear el archivo m,

Con [ctrl]+[s] guardamos como hipotenusa.m , ejecución en la ventana de comandos

>> h=hipotenusa(3,4) h =

5

(41)

1.7. Matemática Simbólica 34

cálculo de raíces de polinomios, evaluar límites, derivadas integrales, transformada de Laplace entre otros muchas opciones muy importantes. Variables Simbólicas

Función Descripción

syms x, y, . . . , z Convierte las variables en simbólicas

syms x, y, . . . , z real Convierte las variables en simbólicas con valores reales syms x, y, . . . , z unreal Convierte las variables en simbólicas con valores no reales syms Lista de variables simbólicas en el espacio de trabajo x = syms(0x0) Convierte la variable x en simbólica

pretty(x) Convierte la expresión matemática x en escritura matemática simplif y(E) Simplifica la expresión E

vpa(E, n) Devuelve la expresión E con n dígitos decimales

poly2sym(A) Devuelve al arreglo A como un polinomio simbólico en x

Considere las funciones f = 2a3− 5, g = a2+ 2, h = a3− 5a2+ 6a,

calcular P = f + g + h >> syms a >> f=2*a^3-5; >> g=a^2+2; >> h=a^3-5a^2+6a; >> h=a^3-5*a^2+6*a; >> w=f+g+h w = 3*a^3-3-4*a^2+6*a >> pretty(w) 3 2 3 a - 3 - 4 a + 6 a Ejemplo 34.

(42)

1.7. Matemática Simbólica 35 Simplificar la expresión 1−x1−x42 >> syms x >> E=simplify((1-x^4)/(1-x)); >> E=simplify((1-x^4)/(1-x)); >> pretty(E) 3 2 x + x + x + 1 Ejemplo 35. >> P=poly2sym([5 1 4 6 7]) p=5*x^4+x^3+4*x^2+6*x+7 pretty(P) 4 3 2 5 x + x + 4 x + 6 x + 7 Ejemplo 36. Sea la matriz M = [x ed; ex d] >> syms x d >> M=[ x exp(d); exp(x) d]; >> D=det(M) D = x*d-exp(d)*exp(x) >> pretty(D) x d - exp(d) exp(x) Ejemplo 37.

Sea la función f (x) = 13 − x3, calcule f (2) >> f=’13-x^3’;

>>p= subs(f,2) p= 5

(43)

1.7. Matemática Simbólica 36

Función Descripción

subs(f, a) Evalúa la función f en el valor a

subs(f, a, b) Sustituye en la función f el valor de a por el de b compose(f, g) Función compuesta de f y g

f inverse(f ) Calcula la función inversa

limit(Sn, inf ) Calcula el limite de la sucesión Scuando n tiende a ∞ limit(f, a) Calcula el limite de la función f cuando x tiende al valor de a limit(f, a) Calcula el limite de la función f cuando x tiende al valor de a dif f (f, x) o dif f (f ) Calcula la derivada de la función f respecto a x

dif f (f, n) Calcula la n ésima derivada de la función f respecto a x taylor(f, n, x) Calcula el desarrollo de la serie de Maclaurin de orden n − 1

para la función f en la variable x

taylor(f, n, x, a) Calcula el desarrollo de la serie de Taylor de orden n − 1 para la función f en la variable x alrededor del punto a

Sea la función f (x) = 13 − x3, calcule f (2)

>> syms x >> f=13-x^3 ; >> p=subs(f,2) p = 5 Ejemplo 39. >> f=@(x)(x+6) f = @(x)(x+6) >> f(2) ans = 8 Ejemplo 40.

(44)

1.7. Matemática Simbólica 37

Considere las funciones f (x) = x + 4 y g(x) = x3+ 1 Calcule f (g(x)) >> clear >> syms x >> f=x+4; >> g=x^3+1; >> h=compose(f , g) h = x^3+5 >> h=compose(g , f) h = (x+4)^3+1 >> pretty(h) 3 (x + 4) + 1 >> simplify(h) ans = x^3+12*x^2+48*x+65 Ejemplo 41.

Considere las funciones f (x) = 2x3x+x3+62+4, calcule l´ımn→∞f (x)

syms x f=(2*x^3+x^2+4)/( x^3+6); limit(f ,inf) ans = 2 Ejemplo 42.

Considere la función f (x) = x4− cos(x) + e−x2

, calcular f0(x) >> syms x >> f=x^4-cos(x)+exp(-x^2); >> df=diff(f) df = 4*x^3+sin(x)-2*x*exp(-x^2) Ejemplo 43.

(45)

1.7. Matemática Simbólica 38

Considere la función f (x) = sen(xy) + e−x2 + y3, calcular dxdf, dydf, dxdyd2f ,

d2f dx2 >> syms x y >> f=sin(x*y)+exp(-x^2)+y^3; >> dxf=diff(f,x) dxf = cos(x*y)*y-2*x*exp(-x^2) >> dxyf=diff(diff(f,x),y) dxyf = -sin(x*y)*x*y+cos(x*y) >> dxxf=diff(diff(f,x),x) dxxf = -sin(x*y)*y^2-2*exp(-x^2)+4*x^2*exp(-x^2) Ejemplo 44.

Considere la función f (x) = sen(x).Calcular la serie de Maclaurin de orden 5 >> syms x >> t5=taylor(sin(x)) t5 = x-1/6*x^3+1/120*x^5 Ejemplo 45.

Considere la función f (x) = cos(x), calcular la serie de Taylor de orden 3, alrededor del punto x = 2

>> syms x

>> t3=taylor(cos(x),4,x,2) t3 =

cos(2)-sin(2)*(x-2)-1/2*cos(2)*(x-2)^2+1/6*sin(2)*(x-2)^3 Ejemplo 46.

(46)

1.7. Matemática Simbólica 39

Función Descripción

int(f, x) Calcula la integral indefinida de de f respecto de la variable x

int(int(f, x), y) Calcula la integral indefinida de de f respecto de x luego respecto de y

int(int(f, y), x) Calcula la integral indefinida de de f respecto de y luego respecto de x

int(· · · int(int(f, x), y) · · · , z) Calcula la integral indefinida respecto de x, luego de y , · · · hasta la variable z

int(f, x, a, b) Calcula la integral definida respecto de x de a hasta b

int(int(f, x), a, b), y, c, d) Calcula la integral definida doble para a ≤ x ≤ b y c ≤ y ≤ d

Calcular la integral indefinida de la función f (x) = cos(x), >> clear >> syms x >> f=cos(x); >> If=int(f,x) If = sin(x) Ejemplo 47.

Calcular la integral indefinida de la función f (x) = sen(x), >> clear >> syms x >> h=sen(x); >> Ih=int(h,x) Ih = -cos(x) Ejemplo 48.

(47)

1.7. Matemática Simbólica 40

Calcular la integral indefinida de la función f (x) = tan(x) − x2, >> clear >> syms x >> h=tan(x)-x^3; Ih=int(h,x) Ih = -log(cos(x))-1/4*x^4 Ejemplo 49.

Calcular R R (xy2− tan(x))dydx, >> clear >> syms x y >> f=x*y^3-tan(x); >> If=int(int(f,y),x) If = 1/8*x^2*y^4+y*log(cos(x)) Ejemplo 50. Función Descripción

dsolve(0E0) Resuelve la ecuación diferencial E respecto de x, por defecto

dsolve(0E0,0C0) Resuelve la ecuación diferencial E con valores iniciales C

dsolve(0E0,0C1, C2, . . . , Cn0) Resuelve la ecuación diferencial E con valores

iniciales C1, . . . Cn

laplace(f ) Calcula la transformada de Laplace de la función f

(48)

1.7. Matemática Simbólica 41

Calcular y0− by = 0,con valores iniciales y(2) = 1 >> clear

>> syms y b

>> y=dsolve(’Dy=b*y’,’y(2)=1’) y = 1/exp(2*b)*exp(b*t)

Ejemplo 51.

Calcular (y0)2+ y2 = 1,con valores iniciales y(0) = 0 >> clear >>y=dsolve(’Dy^2+y^2=1’,’y(0)=0’) y = -sin(t) sin(t) Ejemplo 52. Calcular y00+ 5y0− 6 = 0 >> clear >> y=dsolve(’D2y+5*Dy-6=0’) y = -1/5*exp(-5*t)*C1+6/5*t+C2 Ejemplo 53. Calcular f (x) = ex >> clear >> syms x >> y=laplace(exp(x)) y = 1/(s-1) Ejemplo 54.

(49)

1.7. Matemática Simbólica 42

Calcular la transformada inversa de Laplace de f (s) = s2−s−63

>> clear >> syms s >> y=ilaplace(3/(s^2-s-6)) y = 6/5*exp(1/2*t)*sinh(5/2*t) >> pretty(y) 6/5 exp(1/2 t) sinh(5/2 t) Ejemplo 55.

Calcular la transformada inversa de Laplace de f (s) = s−11 >> clear

>> syms s

>> ilaplace(1/(s-1)) y = exp(t)

(50)

2

Aproximación y

errores

Introducción

P. Henrici da una definición aproximada del Análisis numérico como, la teoría de los métodos constructivos en Análisis matemático, haciendo un especial énfasis en la palabra constructivos, durante mucho tiempo, las matemáticas fueron totalmente constructivas, pues su único objetivo era llegar a la solución de problemas concretos. No obstante, a medida que los problemas sujetos a la investigación matemática crecían en alcance y generalidad, los matemáticos fueron interesándose, cada vez más, por cuestiones como la existencia, unicidad y propiedades cualitativas de las solución, antes que por su construcción. Una de las causas que condujeron a esta situación fue la escasa capacidad de cálculo que hacía inútil el diseño de algoritmos constructivos de la solución de problemas complejos. No obstante cuando surgieron los primeros ordenadores, se impulso nuevamente el diseño de nuevos algoritmos numéricos.

El análisis numérico es una disciplina que contempla el desarrollo y evolución de métodos para calcular, a partir de ciertos datos numéricos, los resultados requeridos, los ingredientes del esenciales en un problema de Análisis

numérico pueden resumirse en el siguiente diagrama:

Como ejemplo podemos pensar en el problema del calculo del sen(x), pero con bastante frecuencia nos encontramos con distintos algoritmos para construir la información de salida que se requiere, así volviendo al ejemplo anterior para aproximar el sen(x) podemos usar el algoritmo que se obtiene de hacer un desarrollo de Taylor a la función sen(x) ≈ x − x3!3 +x5!5

(51)

2.1. Tipos de errores 44 x=linspace(-6,6,1000); y=x-x.^3/6+x.^5/120; yy=sin(x); plot(x,y,’r’); hold on ;

plot(x,yy);legend(’aproximación por Taylor’,’función sin’); axis([-5,5,-6,6])

Por lo tanto para escoger entre los diversos algoritmos disponibles deben estudiarse los aspectos teóricos que contribuirán a la elección del algoritmo mas adecuado a cada caso concreto. En general, los criterios fundamentales para preferir un criterio frente a otro son la rapidez y la precisión o

equivalentemente el error

2.1.

Tipos de errores

Los errores numéricos surgen del uso de aproximaciones para representar operaciones y cantidades matemáticas exactas.

1. Error de truncamiento o discretización .

Los errores de truncamiento o discretización provienen, por ejemplo, de la sustitución de una expresión continua por otra discreta (por ejemplo al aproximar la derivada de f por una expresión en diferencias),

f0(x0) ≈

f (x0+ h) − f (x0)

h Usando el desarrollo de Taylor de f :

f (x0+ h) = f (x0) + f0(x0)h + f00(x0)h2 + f 000(x 0)h3 + · · ·

(52)

2.1. Tipos de errores 45 de donde f (x0+ h) − f (x0) h = f 0 (x0) + f00(x0)h 2! + f000(x0)h2 3! + · · · Así el error cometido es

f (x0 + h) − f (x0) h − f 0 (x0) = f00(x0)h 2! + f000(x0)h2 3! + · · · = O(h) 2. Error de redondeo .

Estos se originan debido a que la computadora emplea un numero determinado de cifras significativas durante los cálculos. Los numeros irracionales como

π ≈ 3, 14159265358979323846... o

e ≈ 2, 71828182845904523536028747135266249775724709369995... , entre muchos, no pueden representarse con un número infinito de cifras significativas, por lo tanto, no pueden ser representados de

manera exacta en la computadora, además como la computadora usa la base 2 , no pueden representar exactamente algunos números en base 10. Esta discrepancia por la omisión de cifras significativas se llama error de redondeo.

Para ambos tipos de errores, la relación entre el resultado exacto o verdadero y el aproximado está dado por

Valor verdadero = Valor aproximado + Error

de aquí se tiene

(2.1) Errort= valor_verdadero − valor_aproximado

Una desventaja en esta definición es que no se toma en consideración el orden de la magnitud del valor que se estima . Por ejemplo, un error de un

centímetro es mucho mas significativo si se esta midiendo un remache o si esta una cirugía. Una manera de tomar en cuenta las magnitudes de las cantidades que se evalúan consiste en normalizar el error respecto al valor verdadero, es decir

Errorrelativof raccionalverdadero = error_verdadero valor_verdadero también se se puede expresar así

(2.2) εt=

error_verdadero valor_verdadero100 %

(53)

2.1. Tipos de errores 46

Suponga que se tiene que medir la longitud de un puente y la de un remache, y se obtiene 9999 y 9 cm, respectivamente si lo valores ver-daderos son 10000 y 10 cm.

1. Calcule el error verdadero

2. EL error relativo porcentual verdadero en cada caso. Resolución.

1. El error en la medición del puente es Et = 10000 − 9999 = 1 cm.

y en el remache es Et = 10 − 9 = 1 cm.

2. El error relativo porcentual en el puente es εt= 100001 100 % = 0,01 %

y para el remache es εt= 101100 % = 10 %

Por lo tanto, aunque ambas medidas tienen un error de 1 cm. el error relativo porcentual, es mucho mayor .

se concluye entonces que se ha hecho un buen trabajo en la me-dición del puente, mientras en la meme-dición del remache se hizo un mal trabajo.

Ejemplo 57 (Cálculo de errores).

El subíndice t de Errort y de εt significa que el error a sido normalizado al

error verdadero; pero en situaciones reales no se conoce el valor exacto , entonces en dichos casos, una alternativa el normalizar el error usando la mejor aproximación posible al valor verdadero, es decir, para la misma aproximación

(2.3) εa=

error_aproximado valor_aproximado100 %

donde el εa significa que el error a sido normalizado a un valor

aproximado.Uno de los retos que enfrentan los métodos numéricos es la estimación del error en ausencia del conocimiento de los valores verdaderos. Por ejemplo ciertos métodos numéricos usan un método iterativo para

calcular los resultados, en tales casos se hace una aproximación considerando la aproximación anterior. Este proceso se efectúa varias veces o de forma iterativa esperando cada vez una mejores aproximaciones.

(2.4) εa =

aproximacion_actual − aproximacion_anterior aproximacion_actual 100 % A menudo no nos importa el sigo del error, mas bien nos importa que su valor absoluto sea menor que una tolerancia prefijada εs, en tales casos, los

(54)

2.1. Tipos de errores 47

cálculos se repiten hasta que

(2.5) |εa| < εs

Si se cumple lo anterior entonces se considera que el resultado obtenido está dentro del nivel aceptable fijado previamente εs

2.1.1.

Número de cifras significativas

Las cifras significativas de un número son la primera no nula y todas las siguientes. Así pues, 2,350 tiene cuatro cifras significativas mientras que 0,00023 tiene sólo dos. Es conveniente relacionar los errores con el número de cifras significativas en las aproximaciones.

Se tendrá la seguridad de que el resultado es correcto en al menos n cifras significativas.

(2.6) εs = (0,5 × 102−n) %

Teorema 58 (Scarborough, 1966).

En matemáticas con frecuencia las funciones se representan mediante series infinitas, por ejemplo, la función exponencial se calcula usando

(2.7) ex ≈ 1 + x + x 2 2! + x3 3! + · · · + xn n!

Así cuanto más términos se le agreguen a la serie, la aproximación será cada vez más una mejor estimación del valor de ex.

Empezando con el primer termino de ex = 1 y agregando término por término estime el valor de e0,5.

1. Calcule los errores relativo, porcentual verdadero y normalizado a un valor aproximado usando las ecuaciones 2.2 y 2.4 respecti-vamente. Observe que el valor verdadero de e0,5 = 1,648721 . . ..

2. Agregue términos hasta que el valor absoluto del error aproxi-mado εa sea menor que un criterio de error preestablecido εs con

tres cifras significativas, use la ecuación 2.6

(55)

2.2. Representación de números en la computadora 48

La ecuación 2.6 se emplea para determinar el criterio de error que asegura un resultado sea correcto en al menos tres cifras significativas:

εs = (0,5 × 102−3) % = 0,05 %

por lo tanto, se agregaran tantos términos a la serie hasta que εa sea menor

que este valor.

1. La primera estimación es ex = 1

2. La segunda estimación es ex = 1 + x, y para e0,5 = 1 + 0,5 = 1,5 De aquí se tiene un error relativo porcentual según la ecuación 2.2

εt=

1,64721 − 1,5

1,648721 100 % = 9,02 %

La ecuación 2.4 , se utiliza para determinar una estimación aproximada del error por

εa =

1,5 − 1

1,5 100 % = 33,3 %

Com el εa no es menor que el valor requerido εs se debe seguir

agregando términos y continuar los cálculos. tenemos la siguiente tabla.

Términos Resultados εt( % ) εa( % ) 1 1 39.3 2 1.5 9.02 33.3 3 1.625 1.44 7.69 4 1.645833333 0.175 1.27 5 1.648437500 0.0172 0.158 6 1.648697917 0.00142 0.0158

Así después de usar seis términos, el error aproximado es menor que εs= 0,05 % y el cálculo termina, aunque esto es cierto la mayoría de las

veces.

2.2.

Representación de números en la

computadora

Numéricamente los errores de redondeo se relacionan de manera directa con la forma en que se guardan los números en la memoria de la

computadora.Casi siempre la representación y la aritmética computacional son satisfactorias y pasan inadvertidas. La unidad fundamental mediante la

(56)

2.2. Representación de números en la computadora 49

cual se representa la información se llama palabra, esta consiste en una cadena de cadena de caracteres de dígitos binarios ( bits ), solo puede tomar dos valores 0 o 1 , encendido o apagado; positivo o negativo o

cualquier otra dicotomía electrónicamente viable, es por eso que se usa la representación binaria.

2.2.1.

Sistemas numéricos

Un sistema numérico es una convención para representar cantidades, Debido a que tenemos diez dedos en las manos es que usamos el sistema de base 10, que utiliza 10 dígitos, ( 0, 1, 2, 3, 4, 4, 6, 7, 8, 9 ) para representar números.

25 = 20 + 5 = 2 × 10 + 5 345 = 300 + 40 + 5 = 3 × 103+ 4 × 10 + 5 86439 = 80000+6000+400+30+9 = 8×104+6×103+4×102+3×10+9 547,154 = 5 × 102+ 4 × 101+ 7 × 100+ 1 × 10−1+ 5 × 10−2+ 4 × 10−3 En el sistema binario 101,101 = 1×22+0×22+1×20+1×20+1×2−1+0×2−2+1×2−3 = 5,625 en base 10. Ejemplo 60. Representación Entera

Veamos como los enteros se representan en la computadora, el método más sencillo se denomina método de magnitud con signo y emplea el primer bit de una palabra para indicar el signo, con 0 para positivo y 1 para negativo los bit sobrantes se usan para guardar el número

La representación de un entero decimal −173 en una computadora de 16 bits usando el método de de magnitud con signo es :

1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 Ejemplo 61.

(57)

2.2. Representación de números en la computadora 50

determine el rango de enteros de base 10 que pueda representarse en una computadora de 16 bits.

Resolución.

De los 16 bits, se tiene el primer bit para el signo. Los 15 bits restantes pueden contener los números de binarios de 0 a 111111111111111 , el límite superior se convierte en un entero decimal.

(1 × 214) + (1 × 213) + · · · + (1 × 23) + 1 × 21+ 1 = 32767 = 215− 1 Así en una computadora de 16 bits una palabra puede guardar en memoria un entero decimal del rango de −32767 a 32767 pero el cero esta definido como 0000000000000000, sería redundante usar el número 1000000000000000 para definirlo por lo tanto se usa para definir otro entero negativo adicional y el rango va de −32768 a 32767.

En las computadoras convencionales se prefiere usar la técnica del complemento de 2 que incorpora el signo dentro de la magnitud del número, en lugar de emplear un bit adicional para representar el más o menos.

Ejemplo 62.

Notación decimal en coma flotante

−623,45 = −62,345 × 101 = −6,2345 × 102 nos quedamos con esta ultima

notación, denominada notación decimal en coma flotante normalizada, caracterizada por que la fracción es un número comprendido entre 1 y 10 y escribimos simplemente

−6,2345 + 2, en general será :

±m ± E; 1 ≤ m < 10, E ∈ N ∪ {0} También se emplea el siguiente criterio

1

34 = 0,029411765 . . . se guarda en base 10 con un punto flotante que

únicamente puede guardar 4 lugares decimales entonces se guardaría como

1

34 = 0,0294 × 10

0 tenemos un cero inútil a la derecha del punto decimal, el

número puede normalizarse así

1

34 = 0,2941 × 10

−2 en este caso 1

b ≤ m < 1 con b : base.

Note que este proceso introduce un error de redondeo. Observación 2.1.

R se representa mediante un conjunto finito de números racionales que se representan como números en punto flotante o números máquina. Un número en punto flotante tiene la forma ±m · bc, donde b−1 < m < 1 o 1 < m < b.

En un número de punto flotante podemos distinguir:

(58)

2.2. Representación de números en la computadora 51

2. Base

3. Mantisa o parte fraccionaria

Con el criterio anterior determine un conjunto hipotético de números con punto flotante para una máquina que usa palabras de 7 bits, el pri-mer bit lo usa para el signo del núpri-mero, los siguientes tres para el signo y la magnitud del exponente y los últimos tres para la magnitud de la mantisa. Veamos que, el número mas pequeño posible se representa en la figura

0 1 1 1 1 0 0

El cero inicial señala que la cantidad es positiva. El 1 en la segunda casilla indica que el exponente es tiene signo negativo. Los unos en el tercero y cuarto lugar dan un valor máximo en el exponente.

1 × 21+ 1 × 2 = 3 , por lo tanto el exponente es −3.

Por lo tanto la mantisa esta especificada por el 100 en los tres últimos lugares lo cual nos da

1 × 2−1+ 0 × 2−2+ 0 × 2−3 = 0,5

En este sistema hipotético, el número mas pequeño en base 10 es +0,5× 2−3 = 0,0625, esto deja en evidencia

Ejemplo 63.

1. El rango de cantidades que puede representarse es limitado, como el caso de los enteros, hay números grandes positivos y negativos que no pueden representarse.

2. Existe sólo un número finito de cantidades que pueden representarse dentro de un rango. Así el grado de precisión es limitado. Es evidente que los números no pueden representarse de manera exacta.

2.2.2.

Aritmética del punto flotante

Por simplicidad, en lo que sigue, supongamos números máquina decimales: ±0.d1d2. . . dk× 10n, con 1 ≤ d1 ≤ 9; 0 ≤ di ≤ 9, i = 2; . . . ; k

Se puede normalizar cualquier número real positivo y para convertirlo en y = 0.d1d2. . . dkdk+1dk+2× 10n

(59)

2.2. Representación de números en la computadora 52

1. En el corte simplemente se eliminan todos los dígitos a partir del dk+1 .

2. En el redondeo se agrega 5 × 10n−(k+1) a y y luego se realiza el corte. Es decir,

a) si dk+1 ≥ 5 agregamos 1 a dk y cortamos,

b) si dk+1 < 5 simplemente cortamos.

El número π es un número irracional, luego tiene una expresión decimal infinita de la forma π = 3,14159265 . . . . En forma decimal normalizada es

π = 0,314159265 . . . × 10

El número π en punto flotante con cinco dígitos y corte se representa por

f l(π) = 0,31415 × 101 = 3,1415 Con redondeo será

f l(π) = (0,31415 + 0,00001) × 101 = 3,1416

El error cometido al reemplazar un número por su forma en punto flotante recibe el nombre de error de redondeo independientemente de si se ha aplicado el método de corte o de redondeo.

Ejemplo 64.

2.2.3.

Normalización de los números de punto flotante

1. Para los casos donde se emplea el corte.

(2.8) |x − f l(x)|

|x| ≤ E

2. Para los casos donde se emplea el redondeo.

(2.9) |x − f l(x)| |x| ≤

E 2

donde E se denomina épsilon de la maquina, el cual se calcula como

(2.10) E = b1−t

donde b número base.

(60)

2.3. Ejemplos 53

Épsilon la maquina

Calcule el épsilon de la máquina para el ejemplo 63.

El sistema de punto flotante hipotético anterior, emplea valores de base 2, y el número de bits para la mantisa t = 3 por lo tanto el épsilon de la máquina debe ser

E = 21−3= 0,25 Ejemplo 65.

2.2.4.

Operaciones en punto flotante

Representamos las operaciones en la computadora mediante: ⊕, , ⊗, . Supondremos una aritmética de dígitos finitos (equivale a realizar operaciones exactas sobre representaciones de punto flotante, y luego convertir el

resultado exacto en su representación de punto flotante), viene definida por:

2.3.

Ejemplos

1. Encontrar la expresión decimal de los números binarios a) 11,11

b) 111.101

2. Encontrar la expresión binaria de los números decimales a) 0,1

b) 5.3

3. Efectue 0,1557 × 101+ 0,4381 × 10−1 .

El número de la mantisa de menor exponente se modifica de tal forma que los exponentes sean los mismos, alineamos los puntos decimales.

0,1557 × 101 0,004381 × 101

se obiene 0,160081 × 101 y cortando queda 0,1600 × 101 4. Efectue 0,3641 × 102− 0,2686 × 102 .

0,3641 × 102 −0,2686 × 102

(61)

2.3. Ejemplos 54

5. Efectue 0,7642 × 103− 0,7641 × 103 .

0,7642 × 103

−0,7641 × 103

se obtiene 0,0001 × 103 el cual se puede expresar así 0,1000 × 100. Así, en este caso, se agregan tres ceros no significativos, lo cual introduce un error sustancial de calculo debido a que las manipulaciones siguientes actúan como si los ceros fueran significativos.

6. Efectúe 0,1363 × 103× 0,6423 × 10−1 .

Aquí los exponentes se suman y las mantisas se multiplican .

0,1363 × 103× 0,6423 × 10−1 = 0,08754549 × 102 = 0,87545490 × 101 y cortando resulta 0,8754 × 101

7. Un número grande de cálculos interdependientes .

Investigar el efecto de error de redondeo en un gran número de cálculos interdependientes, desarrolle un programa que sume un número 100000 veces. Sume el número 1 con simple precisión y 0,00001 con precisiones simple y doble .

x1=1;suma1=0;suma2=0; x2=0.00001;

for i=1:100000 , suma1=suma1+x1; suma2=suma2+x2; end suma1 = 100000 suma2 = 1.0000 suma2 = 1.0000 format long e >> suma2 suma2 = 9.999999999980838e-001

(62)

2.3. Ejemplos 55

8. suma de un número grande y uno pequeño.

Vamos a sumar un número pequeño 0,0010 con un número grande 4000 usando una computadora hipotética con una mantisa de 4 dígitos yun expoente de 1 dígito. Normalizamos los números, tenemos

0,4000 × 104

0,0000001 × 104

obtenemos 0,40000001 × 104 el cual se corta a 0,4000 × 104 así resulato como i no hubieramos sumado nada. Este tipo de error uede ocurrir cuando de suman series infinitas, por ejemplo si el término inicial de la série es relativamente grande en comparación con los demás términos, luego que se han sumado unos pocos terminos, estamos en la situación de sumar una cantidad pequeña con una grande.

Una manera de reducir este tipo de errores consiste en sumar la serie en sentido inverso, es decir en orden ascendente en lugar del orden

descendente.

9. Cancelación por resta Resolución de la ecuación x2+ 62,10x + 1 = 0 , Las raíces aproximadas son

(63)

2.3. Ejemplos 56

y el error relativo es ahora:

0,0161072 + 0,1611 × 10−1

0,0161072 ≈ 2 × 10

−4

En el caso de que b fuera negativo las cosas ocurrirían exactamente al contrario. Para x1 obtendríamos una buena aproximación y para x2

habría que considerar la segunda opción.

Problemas

1. La división por un número muy pequeño (o la multiplicación por un número muy grande) da un error absoluto muy grande.

2. La sustracción de números casi iguales da errores relativos muy grandes. 3. La propagación de estos errores al resto de cálculos.

Podemos evitar estos problemas:

1. Minimizando el número de operaciones, 2. Ordenando adecuadamente las operaciones, 3. Replanteando el problema en otros términos.

Conclusiones

1. Los cálculos numéricos pueden ser inexactos.

2. El error final de un proceso de cálculo efectivo es fruto de la

acumulación de distintos tipos de errores. Unos iniciales (de entrada, redondeo de los datos, truncadura del problema, ...) y otros generados a lo largo del proceso.

3. El aumento de la precisión (aumento de las unidades de memoria para almacenar los números), en general reduce el error final. No obstante, a veces conviene sacrificar precisión frente a economía de tiempo o de recursos. (Un equilibrio entre precisión suficiente y coste adecuado se le suele llamar eficiencia).

4. Hay operaciones o procesos de cálculo que propagan fuertemente los errores de redondeo, operaciones o algoritmos inestables (inestabilidad numérica).

5. Hay problemas que tienen una naturaleza que los hace especialmente sensibles a la variación de los datos, problemas mal condicionados. Para cierto tipo de problemas se puede definir una medida de esta

(64)

3

Resolución de

ecuaciones

Introducción

En este capítulo, vamos a ver como podemos resolver ecuaciones con una incógnita, pero desde el punto de vista de los métodos numéricos, recordemos que desde la época escolar aprendimos resolver la ecuación

(3.1) f (x) = ax2+ bx + c = 0 usando la fórmula (3.2) x = −b ± √ b2− 4ac 2a

donde los valores calculados con la fórmula (3.2) son llamados raíces de la ecuación (3.1) , que son los valores que hacen que a la ecuación igual a cero es decir verifican la ecuación. Aunque la formula para resolver la ecuación cuadrática es útil para resolver la ecuación (3.1), existen muchas otras ecuaciones donde las raíces no se pueden calcular tan fácilmente como por ejemplo

1. Ecuaciones de la curiosidad de los alumnos e−x− 2x = 0, xx= 2

2. Ecuación de Kepler

x − e sen x − b = 0

donde x: Posición de la tierra, e : Excentricidad de la orbita Ejemplo 66.

Referencias

Documento similar

PRINCIPALES MODIFICACIONES EN EL ESTATUTO DE LA FUN­ CION PUBLICA FEDERAL..... DESARROLLOS PO

Entonces la serie de Fourier, correspon- diente a esta función, es convergente en todos los puntos y además la suma de dicha serie S ( x ) es igual al valor de la función f ( x ) en

quiero también a Liseo porque en mi alma hay lugar para amar a cuantos veo... tiene mi gusto sujeto, 320 sin que pueda la razón,.. ni mande

Para ello, trabajaremos con una colección de cartas redactadas desde allí, impresa en Évora en 1598 y otros documentos jesuitas: el Sumario de las cosas de Japón (1583),

Sanz (Universidad Carlos III-IUNE): &#34;El papel de las fuentes de datos en los ranking nacionales de universidades&#34;.. Reuniones científicas 75 Los días 12 y 13 de noviembre

Modelo con todas las variables estacionarias, I(0), en el que se incluye, como una variable más del modelo, los errores del la ecuación cointegrada retrasada en un periodo,

(17) En la Exposición de Motivos de este Real Decreto se hace una magistral exposi- ción del sistema de función pública y de la regla del mérito y capacidad que ha de inspirar

3. En resumen, el análisis de los datos estudiados en este apar- tado confirma que las condiciones de distribución de cada tipo de su- bordinada pueden ser explicadas sobre la base