Métodos Numéricos
Ing.: Willam Caiza
Copyright © 2015 por Ing. William Caiza. Todos los derechos reservados. reservados.
Métodos Numéricos
Ing.: Willam Caiza
Dedicatoria
ESTA PÁGINA ES OPCIONAL.
Métodos Numéricos
Ing.: Willam Caiza
CAPITULO I:INTRODUCCIÓN .................................................................................................................. 5 1.1 NÚMEROS DECIMALES ........................................................................................................................ DECIMALES ........................................................................................................................ 5 1.1.2. NOTACIÓN DECIMAL .............................................................. ....................................................... 6 1.1.3. NOTACIÓN BINARIA ............................................................... ....................................................... 7 1.2 ANÁLISIS DE ERRORES DE ERRORES........................................................... ........................................................... .............................................................. .. 14 1.1.1 ERROR DE TRUNCAMIENTO ..................................................................................................... 14 1.3 SERIE DE SERIE DE TAYLOR TAYLOR ................................................................................................................................... ................................................................................................................................... 14 1.3.1. TEOREMA DE TAYLOR .................................................................................................................. 15 1.3.2. POLINOMIO DE TAYLOR PARA FUNCIONES DE DOS VARIABLES ................................................. 20 1.3.3. TEOREMA DEL POLINOMIO DE TAYLOR: ...................................................................................... 24
CAPITULO II: RESOLUCIÓN DE ECUACIONES NO LINEALES ...................................................... 26 2.1. INTRODUCCIÓN .................................................................................................................................... INTRODUCCIÓN .................................................................................................................................... 26 2.2 MÉTODO DE LA DE LA BISECCIÓN ................................................................................................................... BISECCIÓN ................................................................................................................... 26 2.3. ERROR EN EL EN EL MÉTODO DE LA DE LA BISECCIÓN ........................................................................................... ........................................................................................... 27 2.4 MÉTODO DE LA DE LA FALSA POSICIÓN................................................................ POSICIÓN ................................................................ ........................................... 31 2.5 MÉTODO DEL PUNTO FIJO .................................................................................................................... FIJO .................................................................................................................... 37 2.6 MÉTODO DE NEWTON-RAPHSON DE NEWTON-RAPHSON ......................................................................................................... ......................................................................................................... 43 2.7 RAÍCES 2.7 RAÍCES MÚLTIPLES ................................................................................................................................ MÚLTIPLES ................................................................................................................................ 49 EJERCICIOS RESUELTOS Y PROPUESTOS Y PROPUESTOS ...................................................................................................... ...................................................................................................... 54 CAPITULO III: SISTEMA DE SISTEMA DE ECUACIONES LINEALES ...................................................................... 58 3.1 INTRODUCCIÓN ..................................................................................................................................... INTRODUCCIÓN ..................................................................................................................................... 58 3.1.1 MATRIZ ESCALONADA ................................................................................................................... 58 3.1.2 MATRIZ ESCALONADA REDUCIDA ................................................................................................. 59 3.1.3 RANGO DE A .................................................................................................................................. 60 3.2 CARACTERIZACIÓN DE LOS DE LOS SISTEMAS POR SU SOLUCIÓN ..................................................................... SOLUCIÓN ..................................................................... 61 3.2.2 SISTEMAS CON SOLUCIÓN ............................................................................................................ 61 3.2.3 SISTEMAS CON SOLUCIÓN ÚNICA ................................................................................................. 61 3.2.4 SISTEMAS CON INFINITO NÚMERO DE SOLUCIONES .................................................................... 62 3.3 METODO DE GAUSS .............................................................................................................................. 67 3.3.1 ELIMINACIÓN GAUSSIANA GAUSSIANA Y PIVOTEO PIVOTEO ......................................................................................... 68 3.3.2 PIVOTEO Y MULTIPLICADORES ........................................................... ........................................... 68 3.4 ELIMINACIÓN DE GAUSS DE GAUSS JORDAN JORDAN.............................................................. .............................................................. ........................................... 74 CAPITULO IV: AJUSTE IV: AJUSTE DE CURVAS ........................................................................................................ 87 4.1 INTRODUCCIÓN. .................................................................................................................................... INTRODUCCIÓN. .................................................................................................................................... 87 4.2 MÉTODO DE LOS DE LOS MÍNIMOS CUADRADOS ............................................................................................. CUADRADOS ............................................................................................. 87 4.3 SUPUESTOS O HIPÓTESIS DEL MODELO DE REGRESIÓN DE REGRESIÓN LINEAL............................................................ LINEAL............................................................ 88 4.4 GENERALIZACIÓN DE MODELOS DE MODELOS LINEALES ......................................................................................... LINEALES ......................................................................................... 100 4.4.1 MODELO POTENCIAL ................................................................ ................................................... 100 4.5 REGRESIÓN MÚLTIPLE ........................................................................................................................ ........................................................................................................................ 102 4.5.1 MÉTODO DE MÍNIMOS CUADRADOS PARA LA REGRESIÓN MULTILINEAL ................................. 102 4.6 MÉTODO DE MÍNIMOS DE MÍNIMOS CUADRADOS PARA LA REGRESIÓN MATRICIAL .............................................. MATRICIAL .............................................. 107 4.6.1 DERIVACIÓN MATRICIAL ............................................................................................................. 107 EJERCICIOS PROPUESTOS .......................................................................................................................... PROPUESTOS .......................................................................................................................... 116 ........................................................ ...................................................... 121 CAPITULO V: INTERPOLACIÓN ........................................................ 5.1 INTERPOLACIÓN .................................................................................................................................. INTERPOLACIÓN .................................................................................................................................. 121 5.2 INTERPOLACIÓN INVERSA. ................................................................................................................. 121 5.3 INTERPOLACIÓN DE NEWTON DE NEWTON ............................................................................................................. ............................................................................................................. 124 5.4 INTERPOLACIÓN DE LAGRANGE DE LAGRANGE .......................................................................................................... .......................................................................................................... 129 5.5 INTERPOLACIÓN POR SPLINES. ........................................................................................................... SPLINES. ........................................................................................................... 135 5.5.1 SPLINE LINEAL. ............................................................................................................................ 135 5.5.2 SPLINE CUADRÁTICO ................................................................................................................... 137 5.5.3 SPLINE CUBICO ............................................................................................................................ 141
CAPITULO VI: DERIVACIÓN NUMÉRICA ...................................................................................... 145
Métodos Numéricos
Ing.: Willam Caiza
6.1 DIFERENCIACIÓN NUMÉRICA .............................................................................................................. NUMÉRICA .............................................................................................................. 146 6.2 ERRORES POR TRUNCAMIENTO Y REDONDEO Y REDONDEO AL AL APROXIMAR APROXIMAR LA DERIVADA..................................... DERIVADA..................................... 148 6.3 INTEGRACIÓN NUMÉRICA ................................................................................................................... NUMÉRICA ................................................................................................................... 149 6.4 REGLA DEL TRAPECIO .......................................................................................................................... 150 6.5 REGLA DE SIMPSON DE SIMPSON 1/3 ...................................................................................................................... 1/3 ...................................................................................................................... 158 6.6 REGLA SIMPSON 3/8 ........................................................................................................................... 3/8 ........................................................................................................................... 161 6.7 REGLA 6.7 REGLA DE BOOLE DE BOOLE ................................................................................................................................. ................................................................................................................................. 163 6.8 INTEGRACION DE ROMBERG .............................................................................................................. 165 6.9 CUADRATURA DE GAUSS DE GAUSS ..................................................................................................................... ..................................................................................................................... 167 6.10 DESARROLLO DE LA FÓRMULA DE GAUSS-LEGENDRE DE DOS PUNTOS ........................................... 168 6.11 TRASLACIÓN DE LA DE LA CUADRATURA DE GAUSS DE GAUSS – LEGENDRE ............................................................... ............................................................... 170 EJERCICIOS PROPUESTOS .......................................................................................................................... PROPUESTOS .......................................................................................................................... 174 CAPITULO VII: ECUACIONES DIFERENCIALES ECUACIONES DIFERENCIALES ORDINARIAS ORDINARIAS DE DE PRIMER PRIMER ORDEN ................... ................... 177 7.1 ECUACIONES DIFERENCIALES ORDINARIAS DE PRIMER DE PRIMER ORDEN .......................................................... ORDEN .......................................................... 177 7.2 7.2 MÉTODOS DE RUNGE-KUTTA DE RUNGE-KUTTA .............................................................................................................. .............................................................................................................. 177 7.2.1 MÉTODO DE EULER ..................................................................................................................... 177 7.3 ANÁLISIS 7.3 ANÁLISIS DEL ERROR PARA EL MÉTODO DE EULER DE EULER ........................................................... ................... 184 7.3.1 ERRORES DE TRUNCAMIENTO .................................................................................................... 184 7.4 MEJORAS DEL MÉTODO DE EULER DE EULER ...................................................................................................... ...................................................................................................... 184 7.4.2 MÉTODO DE HEUN ...................................................................................................................... 186 7.5 MÉTODO DE RUNGE-KUTTA DE RUNGE-KUTTA DE SEGUNDO DE SEGUNDO ORDEN ............................................................................. ORDEN ............................................................................. 187 7.6 MÉTODOS DE RUNGE-KUTTA DE RUNGE-KUTTA DE TERCER DE TERCER ORDEN............................................................. ORDEN ............................................................. ................... 191 7.7 MÉTODOS 7.7 MÉTODOS DE RUNGE-KUTTA DE RUNGE-KUTTA DE CUARTO DE CUARTO ORDEN .............................................................................. ORDEN .............................................................................. 192 7.8 MÉTODOS DE RUNGE-KUTTA DE RUNGE-KUTTA DE ORDEN DE ORDEN SUPERIOR......................................................... SUPERIOR ......................................................... ................... 194 EJERCICIOS PROPUESTOS .......................................................................................................................... PROPUESTOS .......................................................................................................................... 195 ANEXOS ..................................................................................................................................................... ANEXOS ..................................................................................................................................................... 199 EJERCICIOS DE LAPLACE CON ECUACIONES DIFERENCIASLES POR LAPLACE ............................................. 200
ANEXO I: MULTIPLICADORES DE LAGRANGE L AGRANGE ........................................................................... 204 1 MULTIPLICADORES DE LAGRANGE ......................................................................................................... 204 1.1 CONCEPTOS FUNDAMENTALES ............................................................. ......................................... 204 1.2 PROCEDIMIENTO .............................................................. .............................................................. 205 1.3 DETERMINACIÓN DE LA ECUACIÓN DE LAGRANGE ....................................................................... 205 1.4 ECUACION GENERAL DE LOS MULTIPLICADORES DE LAGRANGE................................................... 206
ANEXO II: SISTEMA DE SISTEMA DE ECUACIONES NO LINEALES “METODO DE NEWTON” ..................... 213 1. SISTEMA DE ECUACIONES NO LINEALES “METODO DE NEWTON” ........................................................ 213 2. APLICACIONES DEL MÉTODO DE NEWTON-RAPHSON .......................................................................... 220 3. CONCLUSIÓN ......................................................................................................................................... 221
ANEXO III: INTRODUCCIÓN A INTRODUCCIÓN A LA LA PROGRAMCIÓN PROGRAMCIÓN DE MATLAB .......................................... .......................................... 222 1. INTRODUCCIÓN ............................................................ ................................................................. ........ 222 1.1 CARACTERISTICAS BASICAS.............................................................................................................. BASICAS.............................................................................................................. 223 1.1.1 COMANDOS BASICOS ............................................................. ................................................... 223 1.2 CARACTERES ESPECIALES Y COMANDOS Y COMANDOS............................................................... ............................................................... .............................. 223 2. VECTORES Y FUNCIONES Y FUNCIONES.................................................................................................................. .................................................................................................................. 223 2.1 VECTORES ................................................................................................................................... 223 2.2 FUNCIONES .................................................................................................................................... 224 3. MATRICES ........................................................................................................................................ MATRICES ........................................................................................................................................ 228 4 OPERADORES RELACIONALES.............................................................. RELACIONALES .............................................................. ................................................... 229 5 INTRODUCCIÓN A INTRODUCCIÓN A LA INTERFACE GRÁFICA INTERFACE GRÁFICA DE USUARIO DE USUARIO (GUI)............................................................... (GUI) ............................................................... 232 6 EJEMPLOS BASICOS A BASICOS A LA INTRODUCCION A INTRODUCCION A MATLAB.......................................................... MATLAB .......................................................... ................... 233
Métodos Numéricos
Ing.: Willam Caiza
CAPÍTULO I: INTRODUCCIÓN 1.1 NÚMEROS DECIMALES Comúnmente los seres humanos, realizamos los cálculos aritméticos usando el sistema numérico decimal (base 10); las computadoras hacen los cálculos aritméticos usando el sistema numérico binario (base 2). Al traducir los tipos numéricos existentes a notación binaria queda claro que las operaciones realizadas no necesariamente son exactas por lo tanto van acumulando diferentes errores en cada una de las operaciones. A continuación se describe los tipos de datos que existen y por ende error que existe en las operaciones al pasar de notación decimal a binario.
COMPLEJOS
REALES
RACIONAL
IRRACIONAL
ENTEROS
ENTEROS POSITIVOS
CERO
IMAGINARIOS
FRACCIONARIOS
ENTEROS NEGATIVOS
DECIMAL FINITO
DECIMAL INFINITO
SEMI PERIÓDICAS Imagen 1. Notación Decimal
En el nivel superior se encuentra los números complejos. Ejemplo: Podría ser , donde la parte real es 3 y la parte imaginaria es 4.
34
PERIÓDICAS
Métodos Numéricos
Ing.: Willam Caiza
, , ∈ .…
Todo número real se puede clasificar en un número racional e irracional, un número racional es de la forma escribir de la forma
y un número es irracional cuando no se puede
, ejemplo
.
Todo número racional se puede clasificar en entero y fraccionario, los números enteros se clasifican en enteros positivos o naturales, cero y enteros negativos. Los números fraccionarios se clasifican en decimal finito e infinito, es decimal finito si el residuo es cero. Las fracciones de decimal infinito se clasifican en periódicas y semi-periódicas. Las fracciones periódicas como , se puede obtener su fracción que es igual al cociente cuyo numerador es igual al número menos la parte periódica (33-3), y el denominador es tantos nueves como cifras (una) tenga la parte periódica (9).
3,3333…3,3
Ejemplo 1:
3 3339 309 3,2455555…3,245
Las fracciones semi-periódicas como , se puede obtener su forma fraccionaria, cuyo numerador es igual al número menos sin la parte periódica (3245-324), el denominador es tantos nueves como cifras tenga la parte periódica y tantos ceros como cifras tenga la parte no periódica (dos).
Ejemplo 2:
2921 3,245 3245324 900 900 1.1.2. NOTACIÓN DECIMAL
Nuestra costumbre es escribir toda expresión numérica en base 10, descrita a continuación.
−− ⋯ ⇒ ,,,,…, ⇒ − …
Ejemplo 3: La expresión 1563 en base 10 se puede escribir
Métodos Numéricos
Ing.: Willam Caiza
15631563 1×10 5×10 6×10 3×10
.
1.1.3. NOTACIÓN BINARIA Toda máquina realiza operaciones con 0 y 1 por lo tanto es fundamental al menos conocer los detalles de las transformaciones de binario a base 10 y viceversa. Todo número binario se puede representar de la siguiente forma:
Ejemplo 4:
−− ⋯ ⇒ ,
Transformar el número de base 2 a un número en base 10
1 0 0 1 1×2 0×2 0×2 1×2 ⇒80019 Ejemplo 5:
Transformar el número de base 10 a un número en base 2
100 1 1 0 0 1 0 0 100 2 0 50 2 0 25 2 1 12 2 0 6 2 0 3 1
2 1
Comprobación:
1 1 0 0 1 0 0643200400⇒100 1×2 1×2 0×2 0×2 1×2 0×2 0×2
Regla de transformación de un número en notación base 10 con decimales a binario. 1. Se transforma la parte entera binaria.
Métodos Numéricos
Ing.: Willam Caiza
2. Se sigue con la parte fraccionaria multiplicando por el número 2; si el resultado es mayor o igual a 1 se anota un 1; si es menor que 1 se anota un 0. (El producto se realiza con la parte original decimal y con la parte fraccionaria de las sucesivas multiplicaciones, hasta que la parte fraccionaria sea cero). 3. Después de realizar cada multiplicación, se coloca los números obtenidos en el orden de su obtención. 4. Algunos números se transforman en dígitos periódicos. Ejemplo 6: Transformar
6
Parte Entera
6 2 0 3 1
,
a binario.
2 1
Verificación:
420 1×2 1×2 0×2 −−0×2−−1 0×2×2−−1×2 0×2 0×2 0 41 0 5 00 16 16 , Parte Entera
Parte Fraccionaria
0,0,36125×20, 6 25⇒ 25×21, 2 5⇒ 0,0,255×20, 5 ⇒ ×21⇒ 0×20⇒ 0×20⇒ 0,3125 Parte Fraccionaria
Métodos Numéricos con MatLab
Ing. William Caiza
⇒, , … 3. 5 3539 329
Ejemplo 7:
Dado el siguiente número periódico 3. Transformarlo a fracción.
Verificamos
Parte Entera 32 9 50 3,55…
50 Ejemplo 8:
Dado el siguiente (3.2 )
Verificamos Parte Entera 293 90 230
3,255…
500 500
293 3.25 32532 90 90 5
=3.2
Ejemplo 9:
. 13 5 3950 89 10 3 30 30 . 6.100003125 ∗10000 63125 12625 2525 505 101 10000 2000 400 80 16
Conversión de
Ejemplo 10:
Conversión de
9
Métodos Numéricos con MatLab
Ejemplo 11: Conversión de Parte Entera 6 2 0 3 2 1 1
.
Ejemplo 12:
Conversión de 5.3
Parte Entera 5 2 1 2 2 0 1
Ing. William Caiza
a binario Parte Fraccionaria 0.3125*(2)= 0.625 = 0 0.625*(2)= 1.25 = 1 0.25*(2)= 0.5 = 0 0.5*(2)= 1 = 1
: 110
6.3125 110.0101 534153 5288 2644 990 990 495 a binario
: 101.
101 12 02 12 4
+ 0 +1 =5
41
Parte Fraccionaria 0.3 0.341*(2)= 0.682 = 0 0.682*(2)= 1.364 = 1 0.364*(2)= 0.728 = 0 0.728*(2)= 1.456 = 1 0.456*(2)= 0.912 = 0 0.912*(2)= 1.824 = 1 0.824*(2)= 1.648 = 1 0.648*(2)= 1.296 = 1 0.296*(2)= 0.592 = 0 0.592*(2)= 1.184 = 1 0.184*(2)= 0.368 = 0 0.368*(2)= 0.736 = 0 0.736*(2)= 1.472 = 1 0.472*(2)= 0.944 = 0 0.944*(2)= 1.888 = 1 0.888*(2)= 1.776 = 1
Sin importar q sea periódica
10
Métodos Numéricos con MatLab
Ing. William Caiza
Verificación
41 12− 12− 12− 12− 12− 14 161 641 1281 2501 ⋯ 87 6416421 256 256 0.3
= 01010111
Implementación en Matlab PROGRAMA TRANFORMACIONES DE DECIMAL A BINARIO
Imagen 2: Transformaciones Decimal a Binario
11
Métodos Numéricos con MatLab
Ing. William Caiza
TRANSFORMAR DE BINARIO A DECIMAL function pushbutton1_Callback(hObject, eventdata, handles) num=str2num(get(handles.edit1,'string'));
[1] [2]
numero=num2str(num); ent=num2str(floor(num)); decimal=num2str(num-floor(num));
[3] [4] [5]
bin=dec2bin(num); dec=num-floor(num); entbin=num2str(bin);
[6] [7] [8]
set(handles.text4,'string',ent); set(handles.text5,'string',decimal); set(handles.text6,'string',numero); set(handles.text1,'string',entbin);
[9] [10] [11] [12]
if dec~=0 for i=1:10 a=dec*2; binario(1,i)=floor(a); b=a-floor(a); dec=b; end
[13] [14] [15] [16] [17] [18] [19]
set(handles.text2,'string',num2str(binario)); final=[ num2str(bin) ',' num2str(binario)]; EXPLICACIÓN set(handles.text3,'string',final); else set(handles.text3,'string',bin); end
[20] [21] [22] [23] [24] [25]
[1]. Definición del botón a usar. [2]. Obtiene los datos ingresados como cadena de caracteres y lo transforma en un numero base 10 [3]. Transforma el número ingresado en cadena de caracteres [4]. Obtiene la parte entera del numero ingresado mediante el comando “floor” y lo transformo en cadena de caracteres [5]. Obtiene la parte decimal del número ingresado y transformo en cadena de caracteres [6]. Obtiene el numero binario de la cantidad entera me diante el comando “dec2bin” [7]. Obtengo la parte decimal del número ingresado [8]. Transforma el número binario de la parte entera a cadena de caracteres [9]. Muestra la parte entera base 10 [10]. Muestra la parte decimal base 10 [11]. Muestra el número ingresado base 10 [12]. Muestra el número binario de la parte entera [13]. Si la parte decimal base 10 es diferente de cero realiza el siguiente proceso [14]. Define la cantidad de elementos binarios [15]. Multiplica por 2 el decimal base 10 [16]. Guarda la parte entera del resultado de la multiplicación en un vector [17]. Obtiene la nueva parte decimal [18]. Define la variable con la nueva parte decimal base 10 [20]. Muestra el vector [21]. Junta la numero binario de la parte entera con el vector [22]. Muestra el numero ingresado en binario si hubiera decimales
12
Métodos Numéricos con MatLab
Ing. William Caiza
[24]. Muestra el numero ingresado en binario si no hubiera decimales
TRANSOFORMAR: (BINARIO A DECIMAL) function pushbutton2_Callback(hObject, eventdata, handles) num=str2num(get(handles.edit2,'string')); set(handles.text12,'string',num2str(num));
[1] [2] [3]
entbin=round(num); set(handles.text10,'string',num2str(entbin));
[4] [5]
binent=bin2dec(num2str(entbin)); set(handles.text7,'string',binent);
[6] [7]
dec=num-entbin; set(handles.text11,'string',num2str(dec));
[8] [9]
if dec~=0 || dec==0 d=str2num(get(handles.text11,'string')); n=length(num2str(d))-2; c=0; for i=1:n a=dec*10; b=round(a)*2^(-i); c=c+b; dec=a-round(a); end set(handles.text8,'string',num2str(c)); end final=binent+c; set(handles.text9,'string',num2str(final));
[10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23]
[1]. Define el botón a usar [2]. Transforma la cadena de caracteres ingresada en numero [3]. Muestra el número binario ingresado [4]. Obtiene la parte entera del número binario ingresado [5]. Muestra la parte entera del número binario [6]. Transforma la parte entera base 2 a número base 10 mediante el comando “bin2dec”
[7]. Muestra la parte entera en número base 10 [8]. Obtiene la parte decimal del número ingresado [9]. Muestro la parte decimal del número binario ingresado [10]. Si la parte decimal es igual o diferente de cero realiza el siguiente proceso [11]. Obtiene la parte decimal en base 2 como cadena de caracteres y lo transformo en número base 2 [12]. Determina la cantidad de números existen al lado derecho de la coma “, “
[16]. Obtiene la cantidad decimal base 10 que representa el digito decimal base 2 [17]. Usa un acumulador para todas las cantidades base 10 de cada uno de los dígitos base 2 [18]. Define el nuevo número decimal base 2 [20]. Muestra la cantidad del acumulador [22]. Suma la parte entera base 10 con la parte decimal base10 [23]. Muestra el resultado total del número en base 10
13
Métodos Numéricos con MatLab
Ing. William Caiza
1.2 ANÁLISIS DE ERRORES En la práctica del cálculo numérico es importante tener en cuenta que las soluciones calculadas por el computador no son soluciones matemáticas exactas. La precisión de una solución numérica puede verse disminuida por diversos factores y la comprensión de estas dificultades puede guiarnos a menudo a desarrollar o construir algoritmos numéricos adecuados. Supongamos que absoluto como:
̂p
(estimador) una aproximación de p, entonces se define el error
| | | | | |
Y además tenemos el error relativo, el mismo que es un porcentaje de la diferencia entre su valor real y su aproximación:
|||| ∗ | | | | ∗
1.1.1 ERROR DE TRUNCAMIENTO
La noción de error de truncamiento se refiere normalmente a los errores que se producen cuando una expresión matemática complicada se reemplaza por una fórmula más simple,
1 ! ! ! ⋯
por ejemplo la siguiente función como la siguiente
se puede remplazar por una expresión más sencilla , mediante su serie de Mc-Claurin.
1.3 SERIE DE TAYLOR La serie de Taylor se basa en ir haciendo operaciones según una ecuación general y mientras más operaciones tengan la serie más exacto será el resultado que se está buscando.
14
Métodos Numéricos con MatLab Toda función puede ser expresada como un polinomio de orden
Ing. William Caiza
, la serie de Taylor
proporciona un medio para predecir el valor de una función en un punto. 1.3.1. TEOREMA DE TAYLOR
1 ′ ′′ ! ! ! .. !
Dada la función f y sus
derivadas son continuas, se dice que la expresión siguiente
es el polinomio de Taylor de orden n y alrededor de a.
Donde Si
0
es el error de la serie de Taylor
, tenemos la serie de McLaurin:
′ ! .. ! ..
Ejemplo 13: Encontrar la serie de McLaurin
0 0 0 cos0⇒ ⇒01 0 cos⟹ 1 ! ! ! ⋯
Ejemplo 14:
Encontrar la serie de McLaurin
15
Métodos Numéricos con MatLab
Ing. William Caiza
0cos001 ⇒0 0 01 ⇒ cos 0 00 ⇒ 0 cos0 ⇒0 1 ! ! ! ⋯ Implementación en Matlab Programa Mclaurin
Imagen 3: Serie de McLaurin
INICIAR: function pushbutton1_Callback(hObject, eventdata, handles) clc; f=char(inputdlg('ingrese funcion')); n=str2double(inputdlg('ingrese numero de expresiones para la serie')); ev=taylor(sym(f),'order',n); fun=char(ev); set(handles.text4,'string',fun); set(handles.text3,'string',f);
[1] [2] [3] [4] [5] [6] [7] [8]
[1]. Definición del botón a usar [2]. Limpiar la ventana de datos existentes [3]. Crea una cuadro de texto para ingresar la función
16
Métodos Numéricos con MatLab
Ing. William Caiza
[4]. Crea una cuadro de texto para el ingreso de la cantidad de expresiones [5]. Usa el comando “Taylor” bajo la condición de “a=0” para crear el polinomio bajo los
parámetros anteriormente ingresados. [6]. Convierte en un elemento de tipo Char al polinomio obtenido [7]. Muestra el polinomio obtenido [8]. Muestra la función ingresada
GRAFICAR: function pushbutton2_Callback(hObject, eventdata, handles) x=-5:0.05:5; fun=get(handles.text3,'string'); f=inline(fun); plot(x,f(x),'r'); hold on; pol=get(handles.text4,'string'); polinomio=inline(pol); l=length(x); for i=1:l y(i)=polinomio(x(i)); end plot(x,y,'b');
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]
[1]. Definición del botón a usar [2]. Establece la escala en el eje X del Axes [3]. Obtiene la cadena de caracteres de la Función [4]. Convierte la cadena de caracteres en una función [5]. Grafica la función en el Axes [6]. Mantiene el grafico de la función [7]. Obtiene la cadena de caracteres del polinomio [8]. Convierte la cadena de caracteres en una función [11]. Evalúa el polinomio en todos los puntos que contiene la escala del eje X [13]. Grafica el polinomio en el Axes EVALUAR: function pushbutton3_Callback(hObject, eventdata, handles) valor=str2double(inputdlg('Ingrese el valor de x')); pol=get(handles.text4,'String'); polinomio=inline(pol); resul=polinomio(valor); resultado=num2str(resul); set(handles.text5,'String',resultado);
[1] [2] [3] [4] [5] [6] [7]
[1]. Definición del botón a usar [2]. Crea una cuadro de texto para ingresar el valor donde desea evaluar el polinomio [3]. Obtiene la cadena de caracteres del polinomio [4]. Convierte la cadena de caracteres en una función [5]. Evalúa el polinomio en el numero ingresado
17
Métodos Numéricos con MatLab
Ing. William Caiza
[6]. Convierte el valor obtenido en una cadena de caracteres [7]. Muestra el resultado
Ejemplo 15:
, 1! 2! ! ⋯ 3,5 3,5 3,5 3,53,5 3! 5! 0. 3 , 5 7 3098 E | ∶ 3 , 5 0. 3 5078 0. 3 50780. 7 30981| .|0.350780.730981 | E |0.35078| ∗100 . Encuentre
, utilizando la serie de Taylor con 3 términos
Ejemplo 16:
⋯ ! ! ! , , , 1) 2) 3) 4) 5)
Encuentre la serie de Taylor del Encuentre el valor de la serie en Encuentre el valor de la serie en Encuentre el error Conclusión
!− !− !− Sen x Sen a Cos a x a !− Senx x ! ! ! ! ⋯ 1)
2)
18
Métodos Numéricos con MatLab
Ing. William Caiza
3 . 4 5 3 . 4 5 3 . 4 5 3 . 4 5 Sen3.453.45 3! 5! 7! 9! 0.284384 !.− !.− Sen 3 . 4 5 Sen 3 Cos 3 3 . 4 53 !.− 0, 3 03788 3 , 4 5 0, 3 03541 0. 0.3035410. 284381 ∗100 0.30541 ∗100 . 3% 3,45 3 03388 0.3035410. ∗100 0. 3 0541 . % 3)
4)
El valor exacto de
, calculadora en radianes.
El error para
El error para
5)
de
Conclusión:
Cuando el valor de a es cercano a x el valor disminuye notablemente. Ejemplo 17:
√ ,√ ; , 1! 2! ! ⋯ (2√ √ ) ∗ √ ∗ (4√ √ ) ( ) √ (√ ) (√ ) ∗ 2! 1.- Encontrar la serie de Taylor del
2.- Encontrar el valor de la serie en
con 5 términos
1.
2.
19
Métodos Numéricos con MatLab
Ing. William Caiza
(√ 3.45) (√ 3.4)2√ (√ 33.4.4) ∗ 3.453.4 3 . 4 ∗ ( 3 . 4 ) ( 3 . 4 ) 3. 4 53. 4 √ √ √ 43.4√ 3.4 ∗ 2! (√ 03.9.4592040, 5)0,958967958967 0.959204 ∗100 . % Ejemplo 18:
Demostrar
0 1 ′ 0 0 0 0 0 1 2! 3! 4! .. 1 2! 4! 6! ⋯ 3! 5! ⋯ Funci nn esrecalaldear varde variablieablvecte vectoriaolrial Definición sea :ℝ →ℝ∗∗Funci 1.3.2. POLINOMIO DE TAYLOR PARA FUNCIONES DE DOS VARIABLES ó ó
20
Métodos Numéricos con MatLab
Ing. William Caiza
, : , , , , ! , ! , , , ! , , , , .. . El polinomio de Taylor de orden n asociado a
Ejemplo 19: Dada la función
, , ∀, ∈ℝ ℝ+, , ,
Vamos a ilustrar la utilidad de los polinomios de Taylor de grados 2 y 3 en el punto (0 , 1), a los que denotaremos con
), respectivamente.
Haciendo uso del Teorema de dichos p olinomios vienen dados por las siguientes expresiones:
, 0,1 0,1 1 1 2 0,1 1 0,1 21 0,1 , 0,1 0,1 1 1 2 0,1 1 0,1 21 0,1 1 6 0,1 3 1 0,1 31 0,1 1 Nótese que
21
Métodos Numéricos con MatLab
Ing. William Caiza
0 , 1 3 1 0 , 1 1 , , 6 [3 1 0,1 1 ] PROGRAMA:
:ℝ, →ℝ Dada la función de:
, ;, :
Encontrar el polinomio de Taylor de grado 3 asociado y evaluado Implementación en Matlab PROGRAMA DE LA SERIE DE TAYLOR
Imagen 4: Serie de Taylor
CALCULAR function pushbutton1_Callback(hObject, eventdata, handles) clc; fun=char(get(handles.edit1,'String')); orden=str2double(get(handles.edit2,'String')); a=str2double(get(handles.edit3,'String')); pol=taylor(sym(fun),'ExpansionPoint',a,'order',orden); final=char(pol); set(handles.text1,'String',final);
[1] [2] [3] [4] [5] [6] [7] [8]
22
Métodos Numéricos con MatLab
Ing. William Caiza
[1]. Definición del botón a usar [2]. Limpia la ventada de datos existentes [3]. Obtiene la cadena de caracteres de la función ingresada y la convierte en un elemento tipo Char. [4]. Obtiene orden o grado de la expresión que se desea obtener [5]. Obtiene el valor de “a”, necesario para la Serie de Taylor [6]. Usa el comando “Taylor” para crear el polinomio bajo los parámetros anteriormente ingresados.
[7]. Transforma en un elemento tipo Char el polinomio obtenido. [8]. Muestra el polinomio resultante de la Función
GRAFICAR: function pushbutton2_Callback(hObject, eventdata, handles) x=-100:0.05:100; fun=get(handles.edit1,'string'); f=inline(fun); plot(x,f(x),'r'); hold on; funcion=get(handles.text1,'string'); polinomio=inline(funcion); g=length(x); for i=1:g h(i)=polinomio(x(i)); end plot(x,h,'b');
[1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13]
[1]. Definición del botón a usar [2]. Establece la escala en el eje X del Axes [3]. Obtiene la cadena de caracteres de la Función [4]. Convierte la cadena de caracteres en una función [5]. Grafica la función en el Axes [6]. Mantiene el grafico de la función [7]. Obtiene la cadena de caracteres del polinomio [8]. Convierte la cadena de caracteres en una función [11]. Evalúa el polinomio en todos los puntos que contiene la escala del eje X [13]. Grafica el polinomio en el Axes
EVALUAR: function pushbutton3_Callback(hObject, eventdata, handles) eval=str2double(inputdlg('Ingrese el valor de x')); pol=get(handles.text1,'String'); polinomio=inline(pol); resul=polinomio(eval); resultado=num2str(resul); set(handles.text2,'String',resultado);
[1] [2] [3] [4] [5] [6] [7]
23
Métodos Numéricos con MatLab
Ing. William Caiza
[1]. Definición del botón a usar [2]. Crea una cuadro de texto para ingresar el valor donde desea evaluar el polinomio [3]. Obtiene la cadena de caracteres del polinomio [4]. Convierte la cadena de caracteres en una función [5]. Evalúa el polinomio en el número ingresado [6]. Convierte el valor obtenido en una cadena de caracteres [7]. Muestra el resultado 1.3.3. TEOREMA DEL POLINOMIO DE TAYLOR:
, , +, , ∈ , , ∈ + (!) + | −| || ≤ +! + , Sea
existe en
,
donde
Es el residuo, con
yc
. Entonces para todo x
es el polinomio de Taylor
∈
entre c y x, el teorema no permite evaluar exactamente el
residuo, pero si permite acotarlo.
Ejemplo 20:
| | || ≤ ||; ∈ , . ||≤.
Obtener el polinomio de Taylor de orden 2 de para
alrededor de π, acotar el error
y calcular el error.
24
Métodos Numéricos con MatLab
Ing. William Caiza
|| ≤. . . Observación: Para calcular el valor de una función para x el valor de a, deberá estar alrededor de x. EJERCICIOS PROPUESTOS Ejercicios de notación decimal Escribir en notación decimal las siguientes cantidades: 1. 374= 2. 17350= 3. 1,0243= 4. 745,36= 5. 1357, 924= Transformar de notación binaria a notación decimal: 1. 2. 3. 4. 5.
10011011 10011001 1100100 10011001 0101
Series de Taylor
cos 2 logcos f x + − − f x f x +
1. Calcular el polinomio de Taylor de la función 2. Calcúlese la serie de Taylor de
3. Encuentre una serie de Taylor para 4.
)
Encuentre la serie de Taylor para
5. Encontrar la serie de Taylor para la función Series de Mc- Claurin
1. Hallar el polinomio de Mc- Claurin para polinomio general.
, para n=0, n=1, n=2, n=3, y el
2. Encuentre una serie de Mc- Claurin para 3. Encontrar la serie de Mc- Claurin para 4. Encontrar la serie de Mc- Claurin para 5. Encontrar la serie de Mc- Claurin para
25
Métodos Numéricos con MatLab
Ing. William Caiza
CAPÍTULO II: RESOLUCIÓN DE ECUACIONES NO LINEALES 2.1. INTRODUCCIÓN Una ecuación no lineal es aquella que esta la representada genéricamente en la forma
0
.Esto no quiere decir que sea una función exactamente nula, simplemente es
una representación de las ecuaciones a utilizar. Tras esta forma genérica, se esconde el
0 0
problema a analizar en el capítulo, que es: “Dada una función
posible, algún valor A estos valores
para el que se verifique que
que cumplen
determínese, si es
”.
se los llama raíces o ceros de la función
.
2.2 MÉTODO DE LA BISECCIÓN Descripción del método
Dado un intervalo [a, b], la primera aproximación a la raíz es el punto medio del intervalo y se calcula como la suma de los dos puntos dividido para 2, de esta manera se encuentra un nuevo punto c1 considerado un valor raíz aproximado de la función. Luego se verifica si
f a ×f c <0 f a ×f c <0 f c ×f b <0
, esto implicaría que la nueva raíz se encuentra en el intervalo
a, c
por lo tanto la nueva aproximación seria el punto medio de dicho intervalo. Y seguiríamos verificando si el
o
, en el intervalo que cumpla las
definiciones anteriores se procederá otra vez a encontrar el punto medio que es la siguiente mejor aproximación a la raíz, así sucesivamente hasta obtener una aproximación que satisface la tolerancia deseada.
26
Métodos Numéricos con MatLab
Ing. William Caiza
Imagen 2.1: Descripción grafica del método de la bisección.
Las aproximaciones deseadas forman una sucesión que convergen a la raíz.
c,c, c, … . , c ⇒ xconver ⇒x ge a la raíz
Algoritmo de la bisección
Se elige un intervalo [a, b] de forma que la función cambie de signo al evaluarse en esos puntos, inicialmente el punto a y el punto b se pueden escoger realizando el gráfico de la función. La primera aproximación a la raíz es
C
y se obtiene:
C a b2
Condiciones para determinar el siguiente subintervalo donde se encuentra la raíz. a) Si
f abf cc <0 , a a f aaf CC >0 , b b f af C 0
tanto b) Si
tanto c) Si
, entonces la raíz se encuentra dentro del subintervalo ;
, entonces la raíz se encuentra dentro del subintervalo ;
, la raíz es igual a
C
a, c c, b
, por lo
, por lo
, termina el cálculo.
2.3. ERROR EN EL MÉTODO DE LA BISECCIÓN El error utilizado para el método de la bisección será un error relativo porcentual:
27
Métodos Numéricos con MatLab
Ing. William Caiza
%−×
z
Ejemplo 1:
Encontrar los ceros de la función
y = -exp(x)tan(x)
200 150 100 50 0 -50 0
0,5
1
1,5
2
2,5
3
3,5
-100
Imagen 2.2: Grafico del método de la Bisección
Cuadro de datos: Iteración i 1
ai 2,5
ci 3
bi 3,5
f(ai) 9,100594625
f(ci) 2,863123854
f(bi) -12,40457277
error
2
3
3,25
3,5
2,863123854
-2,806866513
-12,40457277
0,076923077
3
3
3,125
3,25
2,863123854
0,377681716
-2,806866513
-0,04
4
3,125
3,1875
3,25
0,377681716
-1,113015188
-2,806866513 0,019607843
5
3,125
3,15625
3,1875
0,377681716
-0,344213907
-1,113015188
6
3,125
3,140625
3,15625
0,377681716
0,022370524
-0,00990099 -0,344213907 0,004975124
7
3,140625
3,1484375
3,15625
0,022370524
-0,159484883
-0,344213907
8
3,140625
3,14453125
3,1484375
0,022370524
-0,068201474
9
3,140625 3,142578125 3,14453125
0,022370524
-0,022826983
0,00248139 -0,159484883 0,001242236 -0,068201474 0,000621504
Tolerancia 0,001 siga procesando
siga procesando siga procesando siga procesando siga procesando siga procesando siga procesando siga procesando
Imagen 2.3: Tabla de datos.
28
Métodos Numéricos con MatLab
f af C >0; a C , b b f a f C <0; b C , a a
Ing. William Caiza f(ai)
f(ci)
f(bi)
9,100594625 2,863123854 -12,40457277 2,863123854 -2,806866513 -12,40457277 2,863123854 0,377681716 -2,806866513
Implementación en Matlab
CODIGO DEL MÉTODO DE LA BISECCIÓN function grafica_Callback(hObject, eventdata, handles) clc; funcion=get(handles.funcion,'string'); f=inline(funcion); x=-5:0.2:5; n=length(x); for i=1:n y(i)=f(x(i)); end plot(x,y), hold on; plot([-5 5],[0 0],'r'); grid on; plot([0 0],[-20 20],'r');
[1] [2] [3] [4]
[5] [6]
function calcular_Callback(hObject, eventdata, handles) funcion=get(handles.funcion,'string'); f=inline(funcion); a=str2double(get(handles.a,'string')); b=str2double(get(handles.b,'string')); tol=str2double(get(handles.tolerancia,'string')); cont=0; if f(a)*f(b)<0 error=1; e=0; while abs(error)>=tol cont=cont+1; c=(a+b)/2; error=(c-e)/c; e=c; if f(a)*f(c)<0 b=c; end if f(b)*f(c)<0 a=c; end if (f(a)*f(c)==0)~=(f(b)*f(c)==0) error=0.0000001; end end set(handles.raiz,'string',c); set(handles.iteraciones,'string',cont); else set(handles.raiz,'string','el intervalo no contiene raiz'); end
[7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19]
[20]
[21]
[22] [23] [24]
29
Métodos Numéricos con MatLab
Ing. William Caiza
Descripción del programa Acción del botón graficar [1]. Se obtiene la función escrita en el cuadro de texto. [2]. Se convierte en inline la función para que sea evaluada en cada punto. [3]. Se dan valores al eje x de -5 a 5 con separación de 0.2, además se obtiene n con la longitud de estos valores. [4]. Se evalúa automáticamente la función en cada valor de x, así se obtiene los valores de y. [5]. Se grafican los valores de (x, y) como pares coordenados. [6]. Se resalta los ejes con un color rojo.
Acción de Botón Calcular [7]. Se obtiene la función escrita en el cuadro de texto. [8]. Se convierte en inline la función para que sea evaluada en cada punto. [9]. Obtener el valor del punto a del intervalo. [10]. Obtener el valor del punto b del intervalo. [11]. Obtiene el valor de tolerancia escrita en el cuadro de texto. [12]. Declarar un contador para saber el número de iteraciones realizadas por el método (Opcional). [13]. Verificar que el intervalo [a, b] este bien tomado, para continuar con el método. [14]. Dar un valor inicial a la variable error ( Error Relativo Porcentual). [15]. Inicializar una variable e, que ayudará en el cálculo del error relativo. [16]. Comparar el error con la tolerancia, para continuar las iteraciones. [17]. Cálculo del punto medio del intervalo. [18]. Cálculo del error relativo. [19] y [20]. Encontrar el nuevo intervalo para la siguiente iteración. [21]. En el caso de coincidir el punto medio con el valor raíz, se detiene el método dando un valor muy pequeño al error. [22]. Mostrar en un cuadro de texto el valor raíz. [23]. Mostrar el número de iteraciones realizadas en el método en un cuadro de texto. [24]. Mostrar en el cuadro de texto correspondiente a la raíz, un mensaje que indica que el intervalo no contiene raíz.
Imagen 2.4: Método de la Bisección
30
Métodos Numéricos con MatLab
Ing. William Caiza
Imagen 2.5: Método de la Bisección
2.4 MÉTODO DE LA FALSA POSICIÓN Descripción del método: Como en el método de la bisección, consideramos que f(a) y f (b) tienen distinto signo. En el método de la bisección se usa el punto medio del intervalo [a, b] para llevar a cabo las iteraciones hasta obtener la raíz. Con el método de la falsa posición, suele conseguirse una aproximación mejor encontrando el punto (c, 0), en el que la recta secante L pasa por los puntos (a, f(a)), (b, f (b)) y el eje x.
Imagen 2.6: Gráfica del método de la falsa posición.
31
Métodos Numéricos con MatLab
Ing. William Caiza
Algoritmo de la falsa posición Para hallar la abscisa c, igualamos las dos fórmulas de la recta entre los puntos a, c y los puntos c, b para la pendiente m de la recta secante L. Encontremos la expresión para el método de la falsa posición. Sea los puntos
(a,f a) yy b,b,fbb m f bb fa a 1 c,c, 0 y (b,(b, f b) m 0fc bb 2 f bb fa a fc bb ⇒ c b(f(f b f a)f ) f bb a c ff bbb f aa b⇒ cb ff bba b fa C b f f bbb f aa ∀k1,2,3,…
Sean los puntos
Igualando las dos expresiones obtenemos
Por lo tanto generalizando generalizando la expresión anterior tenemos: tenemos:
Donde
C
forma una sucesión que converge a la raíz de la función.
Las 3 posibilidades son las mismas que en el caso anterior: a) Si f(a) y f(c) tienen distintos signos, entonces hay un cero (raíz) en [a, c]. b) Si f(c) y f (b) tienen distinto signo, entonces hay un cero (raíz) en [c, b]. c) Si f(c)=0, entonces c es una raíz. Error en el método de la Falsa Posición El error utilizado para el método de la falsa posición será un error absoluto:
Convergencia del Método de Falsa Posición
C=∞=
De la deducción anterior, tenemos que la aproximación la cual puede converger. converger.
C
, es una sucesión de la forma
32
Métodos Numéricos con MatLab
Ing. William Caiza
b a |C C−|. ∗
Sin embargo, aunque la longitud del intervalo se hace más pequeño, es posible que no tiende a 0. El criterio de parada usada en el método de la bisección no es útil por lo tanto se utilizará aproximaciones sucesivas de Ejemplo 2: Encontrar los ceros de la función
tan(x)*cos(x) 1,5 1 0,5 0 -4
-2 -0,5 0
2
4
6
8
-1 -1,5 Figura 2.7: grafica 2.7: grafica ejercicio
tann ∗cos ∗cos
.
Si f(c) y f (b) tienen distinto signo, entonces hay un 0 en [c, b]; por lo tanto c=a y b=b.
iteración
a
c
b
f(a)
f(c)
1
2
3,0915281
4
0,9092974
2
2
3,1550996 3,0915281
0,9092974
3
2
3,1381931 3,1550996
0,9092974
4
3,1381931 3,1415927 3,1550996
0,0033995
f(b) error 0,0500436 0,7568025 0,0135065 0,0500436 0,0635715 siga calculando 0,0033995 0,0135065 0,0169065 siga calculando -7,74E-08 0,0135065 0,0033996 raíz
5
3,1381931 3,1415927 3,1415927
0,0033995
1,489E-13
-4,64E-08
7,74E-08
tolerancia 0,01
raíz
Imagen 2.8: Cuadro 2.8: Cuadro de datos en Excel
Ejemplo 3: Encontrar los ceros de la función
^∗ 33
Métodos Numéricos con MatLab
Ing. William Caiza
Imagen 2.9: Grafica 2.9: Grafica de la función
Si f(c) y f (b) tienen distinto signo, entonces hay un 0 en [c, b]; por lo tanto c=a y b=b.
a
c
b
f(a)
f(c)
f(b)
error
2
3,01825205
4
-5,03124022
-0,41954488
4,85087143
3,01825205
3,09640286
4
-0,41954488
-0,15627869
4,85087143
0,07815081
NO RAIZ
3,09640286
3,12460513
4
-0,15627869
-0,05914648
4,85087143
0,02820226
NO RAIZ
3,12460513
3,13515021
4
-0,05914648
-0,02249033
4,85087143
0,01054508
NO RAIZ
3,13515021
3,13914145
4
-0,02249033
-0,00856574
4,85087143
0,00399124
NO RAIZ
Figura 2.10: 2.10: Cuadro de Datos en Excel
34
Métodos Numéricos con MatLab
Ing. William Caiza
Implementación en Matlab
CODIGO DEL MÉTODO DE LA FALSA POSICIÓN function grafica_Callback(hObject, eventdata, handles) clc; funcion=get(handles.funcion,'string'); f=inline(funcion); x=-5:0.2:5; n=length(x); for i=1:n y(i)=f(x(i)); end plot(x,y), hold on; plot([-5 5],[0 0],'r'); grid on; plot([0 0],[-20 20],'r');
[1] [2] [3] [4]
[5] [6]
function calcula_Callback(hObject, eventdata, handles) funcion=get(handles.funcion,'string'); f=inline(funcion); a=str2double(get(handles.a,'string')); b=str2double(get(handles.b,'string')); tol=str2double(get(handles.tolerancia,'string')); cont=0; if f(a)*f(b)<0 error=1; e=0; while abs(error)>=tol cont=cont+1; c=b-(f(b)*(b-a))/(f(b)-f(a)); error=e-c; e=c; if f(a)*f(c)<0 b=c; end if f(b)*f(c)<0 a=c; end if (f(a)*f(c)==0)~=(f(b)*f(c)==0) error=0.0000001; end end set(handles.raiz,'string',c); set(handles.iteraciones,'string',cont); else set(handles.raiz,'string','el intervalo no contiene raiz'); end
[7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19]
[20]
[21]
[22] [23] [24]
Descripción del programa Acción del botón graficar [1]. Se obtiene la función escrita en el cuadro de texto.
35
Métodos Numéricos con MatLab
Ing. William Caiza
[2]. Se convierte en inline la función para que sea evaluada en cada punto. [3]. Se dan valores al eje x de -5 a 5 con separación de 0.2, además se obtiene n con la longitud de estos valores. [4]. Se evalúa automáticamente la función en cada valor de x, así se obtiene los valores de y. [5]. Se grafican los valores de (x, y) como pares coordenados. [6]. Se resalta los ejes con un color rojo.
Acción de Botón Calcular [7]. Se obtiene la función escrita en el cuadro de texto. [8]. Se convierte en inline la función para que sea evaluada en cada punto. [9]. Obtener el valor del punto a del intervalo. [10]. Obtener el valor del punto b del intervalo. [11]. Obtiene el valor de tolerancia escrita en el cuadro de texto. [12]. Declarar un contador para saber el número de iteraciones realizadas por el método (Opcional). [13]. Verificar que el intervalo [a, b] este bien tomado, para continuar con el método. [14]. Dar un valor inicial a la variable error (Error Absoluto). [15]. Inicializar una variable e, que ayudará en el cálculo del error absoluto. [16]. Comparar el error con la tolerancia, para continuar las iteraciones. [17]. Cálculo del valor de C (raíz), aplicando la fórmula del método. [18]. Cálculo del error absoluto. [19] y [20]. Encontrar el nuevo intervalo para la siguiente iteración. [21]. En el caso de coincidir el punto medio con el valor raíz, se detiene el método dando un valor muy pequeño al error. [22]. Mostrar en un cuadro de texto el valor raíz. [23]. Mostrar el número de iteraciones realizadas en el método en un cuadro de texto. [24]. Mostrar en el cuadro de texto correspondiente a la raíz, un mensaje que indica que el intervalo no contiene raíz.
Imagen 2.11: Método 2.11: Método Falsa Posición
36
Métodos Numéricos con MatLab
Ing. William Caiza
Imagen 2.12: Método falsa posición 2
2.5 MÉTODO DEL PUNTO FIJO Descripción del método Un punto fijo de una función g es un número p para el cual se cumple: A manera explicativa: Sea
gxgx1 1 2x2 21 21221 px1
, demuestre que x=1 es un punto fijo de la
función, evaluando se expresa entonces, si consideramos
g1g 1x ggxxxfx p es raíz
, obteniendo
,
obtenemos que x=1 es un punto fijo de la función
Dado un problema de buscar una raíz f (p)=0, podemos definir una función un x de la función f, con un punto fijo p de diversas formas, por lo tanto sea
.
despejando si
la función g tiene un punto fijo en p entonces, p es una raíz de f(x), al despejar de la expresión
f x xgx, f x f p pgp pp0
anterior tenemos
y
es cero en p=x, entonces
, como p es punto fijo de g, se demuestra que
de f.
37
Métodos Numéricos con MatLab
Ing. William Caiza
Algoritmo grafico del método del punto fijo
Imagen 2.13: Método del punto fijo
′ <1
Elegimos un punto aleatorio una x de la función dando así el punto
y lo evaluamos en una función
dada. El valor
que resulta de despejar
se refleja en la función
, y regresará el eje x
que será la primera aproximación de la raíz.
Condición de convergencia de la función Luego de obtener la función punto
, se determina su primera derivada, luego se evalúa en un
que cumpla la siguiente condición:
converge.
, determinándose así que la función
Algoritmo del punto fijo
Error en el método del Punto Fijo
+
El error utilizado para el método del punto fijo será un error absoluto:
Ejemplo 4: Dada la ecuación
x 4x 100
, encuentre una expresión x=g(x)
38
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Desarrollo:
Despeje 1
Despeje 2
Despeje 3
4 10 1 04 || ± 1 04 1 0 4 1 410 10 4 2 gx 104 104 104 3 g x 1 0 4 √10 2 2√10 2 0
Verificando el despeje 1 en la ecuación:
39
Métodos Numéricos con MatLab
Ing.: Willam Caiza
0 2√10 2 2 1 0 0 2 1 0 4 10 4 100 Ejemplo 5: Dada la función Desarrollo
x x x 4x7
encontrar las raíces por el método del punto fijo.
Despejando x se obtienen 3 ecuaciones:
x x 4x7 1 x x 4x7 2 x 7x4 x 3 gx x 4x7 47−2 4
DEMOSTRACIÓN DEL TEOREMA DE CONVERGENCIA EN LA ECUACIÓN (2)
Derivando la función
Graficando la función
′ ()=1/3 (^2−4+7)^(−2/3) (2−4) 0,5 0,4 0,3 0,2 0,1 0 -6
-4
-2
-0,1 0
2
4
6
-0,2 -0,3 -0,4 -0,5
40
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Imagen 2.14: Grafica de la función
En la gráfica de la función se puede observar que el valor en el eje Y se mantiene en el intervalo de [-1; 1], por lo tanto la función converge. Graficando la función
g(x)= =√(&^−+) 15 10 5 0
-4
-3
-2
-1
-5
0
1
2
3
4
5
-10 -15 -20 -25
Imagen 2.15: Grafica del método del punto fijo
k 0 1 2 3 4 5 6 7 8 9
pk pk+1=g(pk) Pk pk+1=g(pK) 2 0,75 2 1,4422496 0,75 1,7851563 1,4422496 1,4904708 1,7851563 1,1244694 1,4904708 1,4827081 1,1244694 1,7106543 1,4827081 1,4839157 1,7106543 1,2300964 1,4839157 1,4837268 1,2300964 1,6629582 1,4837268 1,4837563 1,6629582 1,2916589 1,4837563 1,4837517 1,2916589 1,6283503 1,4837517 1,4837524 1,6283503 1,3334784 1,4837524 1,4837523 1,3334784 1,6017551 1,4837523 1,4837523 Imagen 2.16: Cuadro de datos en Excel
Implementación en Matlab
41
Métodos Numéricos con MatLab
Ing.: Willam Caiza
CODIGO DEL MÉTODO DE PUNTO FIJO clc; syms x; n=0; error=100; p=0; f=inline(get(handles.funcion1,'string')); g=inline(get(handles.funcion2,'string')); x=str2double(get(handles.ingresovi,'String')); tolerancia = str2double(get(handles.tolerancia,'String')); i=1; while (error >tolerancia) n=n+1; x=g(x); p(i)=x; error=abs(f(x)); i=i+1; end set(handles.uitable1,'data',p'); x=-5:0.1:5; n=length(x);
[1]
[2] [3] [4]
[5] [6] [7] [8]
[9] [10]
for i=1 :n y1(i)=f(x(i)); y2(i)=g(x(i)); end
[11]
plot(handles.axes1,x,y1); hold(handles.axes1,'on'); plot(handles.axes1,[-7 7],[0 0],'r'); plot(handles.axes1,[0 0],[-15 15],'r'); plot(handles.axes2,x,y2); hold(handles.axes2,'on'); grid on;
[12]
Acción de Botón Punto Fijo [1]. Inicialización de variables y simbolización de x. [2]. El error debe ser del 100% para inicial el bucle. [3]. Inicialización de los valores de la tabla. [4]. Ingreso de funciones y valor inicial. [5]. Bucle funciona mientras el error sea mayor a la tolerancia. [6]. Obtención del valor de x de la función G. [7]. Valores de la variable de la tabla. [8]. Calculo del nuevo valor del error absoluto. [9]. Asignación de los valores en la tabla. [10]. Valores en x para las gráficas. [11]. Obtención de los valores en y para las gráfica. [12]. Asignación de puntos para las gráficas.
42
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Imagen 2.17: Método de Punto Fijo
2.6 MÉTODO DE NEWTON-RAPHSON Descripción del método
Si
f x, f x,f′ x
son continuas cercas de una raíz p, esta información sobre la naturaleza de
f(x) puede usarse para desarrollar algoritmos que produzcan sucesiones más rápidamente.
p
que converjan a p
Imagen 2.18: Grafica del método de newton Raphson
Algoritmo del método Newton-Raphson
43
Métodos Numéricos con MatLab
Sea
yf x
Ing.: Willam Caiza
x x fx m 0fp p p 1 ; mf p 2
los puntos ( ,0) y ( ,
Igualando tenemos que:
) entonces la pendiente es igual:
f p 0fp p p pp f pf p pf pf pp pf pf fp p p f p p p ff pp
p f∈C a, b p∈a,b ⇒p gp− p− ff p− ; k1,2,…
Este proceso puede repetirse para obtener la sucesión
que converge a p.
TEOREMA: Supongamos que la función , es decir la función f debe ser continua e integrable en el intervalo [a, b] y debe existir un número tal que f (p)=0
Error Del Método del Newton-Raphson
El error utilizado para el método del Newton-Raphson será un error absoluto:
Ejemplo 6: Aplicar el método de Newton-Raphson para resolver la siguiente ecuación
ln x 0.7 ln x 0.l7 0 ⇒f x n x 0.7 Desarrollo:
44
Métodos Numéricos con MatLab
Ing.: Willam Caiza
( )=ln ^2 −0.7 4 2 0 -3
-2
-1
0
1
2
3
4
5
6
-2 -4 -6 Imagen 2.19: Grafica Del Método De Newton Raphson
f x 2x p+ p ff pp l n 2 7 p+ 2 0. 22 ⟹p+ 1.3137 p+ p ff pp l n 1 . 3 137 p+ 1.3137 1.321370.7 ⟹p+ 1.415 ERROR |x x| ERROR |1.4151.3137| ⇒0.101 p+ p ff pp 45
Métodos Numéricos con MatLab
Ing.: Willam Caiza
l n 1 . 4 15 p+ 1.415 1.42150.7 ⟹p+ 1.419 ERROR |x x| ERROR |1.4191.415| ⇒0.004 p+ p ff pp l n 1 . 4 19 p+ 1.419 1.42190.7 ⟹p+ 1.419 ERROR|x x| ERROR|1.4191.419|⇒0
Resumen del ejercicio en Excel k 0 1 2 3
p(k) 2 1,31370564 1,41505556 1,41906187
p(k+1) 1,31370564 1,41505556 1,41906187 1,4190676
ERROR 0,10134993 0,00400631 0
Imagen 2.20: Cuadro de datos en Excel
Ejemplo 7: Aplicar el método gráfico de Newton-Raphson para resolver la siguiente ecuación
Para la
DESARROLLO: Evaluando en
1.5
cos cos
(punto inicial)
46
Métodos Numéricos con MatLab
Obteniendo
Ing.: Willam Caiza
0. 1.5cos 1 . 5 1 . 5 9 26 1.1.056820. 1.95261. cos1.55 1.0682 0.9262.4571 00.9262. 4 571 2.65 2.65 2.65 cos2.65 2.65 1.3536 2.652.65cos2.650.4095 0.40951.35362.65 1.35363.17754 01.35363.17754 2.34
Para obtener la raíz y=0
Evaluando en
Obteniendo
Para obtener la raíz y=0
Graficando las funciones obtenidas
47
Métodos Numéricos con MatLab
Ing.: Willam Caiza
7 6 5 4 3 2 1 0 -3
-2
-1
-1
0
1
2
3
4
5
-2 -3 f(x)
Ltg1
Ltg2
Imagen 2.21: Grafica de las funciones
Implementación en Matlab
CODIGO DEL MÉTODO DE NEWTON-RAPHSON function boton1_Callback(hObject, eventdata, handles) i=1; cont=0; valorfinal=0; funcion=char(get(handles.ingresa1,'String')); tolerancia=str2double(get(handles.edit4,'String')); po=str2double(get(handles.edit4,'String')); f=inline(funcion); df=diff(sym(funcion)); dff=inline(df); p(1)=po; ea(1)=100; while abs(ea(i))>= tolerancia p(i+1)=p(i)-(f(p(i))/(dff(p(i)))); ea(i+1)=abs((p(i+1)-p(i))/p(i+1)*100); i=i+1; cont=i; valorfinal=double(p(i)); end set(handles.resultado,'string',valorfinal'); x=[0:0.25:8]; ezplot(f,x); grid on; set(handles.uitable1,'data',p'); i=0;
[1]
[2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16]
Descripción del programa
48
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Acción de Botón Calcular [1]. Inicialización de variables i y cont. [2]. Se obtiene la función escrita en el cuadro de texto y se transforma de cadena de caracteres (String) a carácter (char). [3]. Obtener el valor de la tolerancia que se va a utilizar en los cálculos. [4]. Punto inicial a usar en el método. [5]. Se convierte en inline la función para que sea evaluada en cada punto. [6]. Se obtiene la derivada de la función usando la función diff y convirtiendo la función en un objeto simbólico para poder usar diff(). [7]. Se coloca al punto p(1) como el valor de po. [8]. Se da un valor inicial para el error de ea(1)=100. [9]. Se inicia el bucle de repetición para los cálculos del método en la tolerancia antes colocada. [10]. Uso de la fórmula del método de Newton Raphson, se usa las derivadas de la función evaluadas en el punto y almacenadas en un vector. [11]. Obtención del error relativo para cada iteración. [12]. Cálculo del error relativo. [13]. Valores obtenidos. [14]. Salida del resultado. [15]. Gráfica de la función. [17]. Ingreso de valores a la tabla.
Imagen 2.22: Método de Newton_Raphson
2.7 RAÍCES MÚLTIPLES Una raíz múltiple corresponde a un gráfico que es tangencial al eje x.
49
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Multiplicidad par
Multiplicidad impar
30
150
25
100
20
50
15
0
10
-6
-4
-2
5 -4
-2
0
2
4
6
-100
0 -6
-50
0
2
4
6
-150
Imagen 2.23: Multiplicador par y impar
En general, el grafico de la multiplicidad impar cruza el eje x, mientras que la multiplicidad par no la cruza. Dificultad del método de raíces múltiples El hecho de que la función no cambie de signo en raíces múltiples pares impide que converge en métodos cerrados. Tanto
como su derivada se aproxima a cero en la raíz, esto afecta a los
métodos de newton Rapshon y secante los cuales contienen derivada en el numerador. El método de Newton Rapshon y la secante convergen el punto lineal, en vez de formar cuadrática cuando hay raíces múltiples. Ejemplo 7: Multiplicidad par.
x2
Sea f(x)= ( , como se puede apreciar en el gráfico el cero es un punto que topa tangencialmente al eje de las x, por lo tanto esta función es de multiplicidad 2.
f(x)=(x-2)^2 30 25 20 15 10 5 0 -4
-2
0
2
4
6
8
Imagen 2.24: Multiplicidad Par
50
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Ejemplo 8: Multiplicidad impar. Sea f(x)=(x-2) ^3, se puede apreciar en el gráfico que el cero topa y corta tangencialmente al eje de las x.
f(x)=(x-2)^3 20 10 0 -2
-1
-10
0
1
2
3
4
5
-20 -30 -40 Imagen 2.25: Multiplicidad Impar
Algoritmo del método Newton-Raphson modificado El método de Newton Raphson, tiene que ser modificado para ser utilizado en raíces múltiples.
u x+ x u′x − Sea
(1)
Y,
Remplazando (1) en (2)
(2)
f x x+ x f x fff′′xx xf x f x f ′ x x+ x f′x(f x f xf x) x+ x (f xfxff′ xxf x)
Ejemplo 10:
51
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Encontrar los ceros de la siguiente función
f(x)=(x-3)(x-1)^2 40 20 0 -3
-2
-1
0
1
2
3
4
5
6
-20 -40 -60
Imagen 2.26: Multiplicidad Impar
k 1 2 3 4 5 6
p(k) 0 1,10526316 1,00308166 1,00000238 1 1
p(k+1) 1,10526316 1,00308166 1,00000238 1 1 1
ERROR 0,10218149 0,00307928 2,3815E-06 3,7313E-11 0
Imagen 2.27: Cuadro del método de raíces múltiples
Implementación de Matlab
52
Métodos Numéricos con MatLab
Ing.: Willam Caiza
CODIGO DEL MÉTODO DE NEWTON-RAPSON MODIFICADO function grafica_Callback(hObject, eventdata, handles) clc; funcion=get(handles.funcion,'string'); f=inline(funcion); x=-5:0.2:5; n=length(x); for i=1:n y(i)=f(x(i)); end plot(x,y), hold on; plot([-5 5],[0 0],'r'); grid on; plot([0 0],[-20 20],'r'); function calcula_Callback(hObject, eventdata, handles) funcion=get(handles.funcion,'string'); f=inline(funcion); x1=str2double(get(handles.x1,'string')); tol=str2double(get(handles.tolerancia,'string')); cont=0; syms x; pd=diff(funcion,x); g=inline(pd); sd=diff(pd,x); h=inline(pd); error=1; while abs(error)>=tol cont=cont+1; x2=x1-(f(x1)*g(x1))/((g(x1))^2-f(x1)*h(x1)); if f(x2)==0 error=0.0000000001; else error=x2-x1; x1=x2; end set(handles.raiz,'string',x2); set(handles.iteraciones,'string',cont); end
[1] [2] [3] [4]
[5] [6]
[7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20]
[21] [22] [23] [24]
Descripción del programa Acción del botón graficar [1]. Se obtiene la función escrita en el cuadro de texto. [2]. Se convierte en inline la función para que sea evaluada en cada punto. [3]. Se dan valores al eje x de -5 a 5 con separación de 0.2, además se obtiene n con la longitud de estos valores. [4]. Se evalúa automáticamente la función en cada valor de x, así se obtiene los valores de y. [5]. Se grafican los valores de (x, y) como pares coordenados. [6]. Se resalta los ejes con un color rojo.
Acción de Botón Calcular [7]. Se obtiene la función escrita en el cuadro de texto.
53
Métodos Numéricos con MatLab
Ing.: Willam Caiza
[8], [14] y [16]. Se convierte en inline la función para que sea evaluada en cada punto. [9]. Obtener el valor de un punto escogido en un intervalo abierto. [10]. Obtiene el valor de tolerancia escrita en el cuadro de texto. [11]. Declarar un contador para saber el número de iteraciones realizadas por el método ( Opcional). [12]. Declarar la variable x como simbólica, esto nos ayudará para derivar respecto a x. [13]. Obtener la primera derivada de la función escrita en el cuadro de texto. [15]. Obtener la segunda derivada de la función, derivando la primera derivada de f. [17]. Dar un valor inicial al error del método (error absoluto). [18]. Comparar el error con la tolerancia, para continuar las iteraciones. [19]. Encontrar el valor de x2 (raíz) utilizando el algoritmo del método. [20]. Evaluar si x2 es un valor raíz, caso contario dar las condiciones para la siguiente iteración. [21]. Calculo del error absoluto. [22]. Dar el valor de x2 a la variable x1 para la siguiente iteración. [23].mostrar el valor raíz en el cuadro de texto correspondient. [24]. Mostrar el número de iteraciones realizadas en el método en un cuadro de texto.
Imagen 2.28: Newton Raphson Modificado
EJERCICIOS RESUELTOS Y PROPUESTOS Método de la bisección 1.- Use el método de la bisección para resolver la siguiente función olerancia de 0,001.
X -1,3
xxcosx
con una
f(x) -1,5675
54
Métodos Numéricos con MatLab
-1 -0,7 -0,4 -0,1 0,2 0,5 0,8 1,1 1,4 1,7 2 2,3
-1,5403 -1,46484 -1,32106 -1,095 -0,78007 -0,37758 0,103293 0,646404 1,230033 1,828844 2,416147 2,966276
Ing.: Willam Caiza
METODO DE LA BISECCION 5 4 3 2 1 0 -3
-2
-1
-1
0
1
2
3
4
5
-2 xa
xr
xu
f(xa)
f(xr)
f(xu)
error
tolerancia
0,5
0,65
0,8
-0,377583
-0,1460838
0,103293
0,65
0,725
0,8
-0,146084
-0,0234994
0,103293
0,1034483
NO HAY RAIZ
0,725
0,7625
0,8
-0,023499
0,039389
0,103293
0,0491803
NO HAY RAIZ
0,725
0,74375
0,7625
-0,023499
0,007815
0,039389
-0,0252101 NO HAY RAIZ
0,725
0,734375
0,74375
-0,023499
-0,0078747
0,007815
-0,012766
0,734375
0,739063
0,74375
-0,007875 -3,704E-05 0,007815 0,0063432 Imagen 2.29: Método de la Bisección
0,01
NO HAY RAIZ EXISTE RAIZ
Ejercicios propuestos
Determine las raíces reales de
Gráficamente.
xl0 xu1
ε ε 10%
Usando el método de la bisección para localizar la raíz más pequeña. Empleando los valores iniciales de y hasta que el error estumado se encuentre debajo de = Solución: Xr=0,34375
Determine las raíces reales de la siguiente función:
f x 2682,3x88x 45,4x 9x 0,65x xl0,5 xu1
Gráficamente.
Usando el método de la bisección para localizar la raíz más grande con valores iniciales de y
ε 10%
, empleando los
Solución: Xr=0,59375
Método de la Falsa Posición
55
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Ejercicios resueltos:
Planteamiento del problema. Con el método de la falsa posición determine la raíz:
f c .. 1e−.40 xl 12 xu 16. xl 12 fxl 6.0699 xu 162.2688f1x216 u –2.2688 xr16 6.0669 2.2688 14.9113 0.89 fxl fxr –1.5426 x xu 14.9113 xl 12 f x l 6. 0 699 xu 0.14.92113543f1x214. u –0.91132543 xr14.9113 6.0669 0.2543 14.7942 0.09 0.79
Solución: Se empieza el cálculo con los valores iniciales Primera iteración:
Que tiene un error relativo verdadero de Segunda iteración:
y
por ciento.
Por lo tanto, la raíz se encuentra en el primer subintervalo y r se vuelve ahora el límite superior para la siguiente iteración,
El cual tiene errores relativos verdaderos y aproximados de y por ciento. Es posible realizar iteraciones adicionales para hacer una mejor aproximación de las raíces.
Mediante el método de la falsa posición encontrar la raíz de con una toleracia de 0,001
56
Métodos Numéricos con MatLab
X -1 -0,5 0 0,5 1 1,5 2 2,5 3 3,5 4 4,5
f(x) -0,4459714 1,0296615 1 -0,8881871 -1,5340136 0,439492 1,8731155 0,2142836 -1,8991619 -0,9037196 1,5889671 1,4458242 a 0 0,2648043 0,2648043 0,2648043
Ing.: Willam Caiza
2,5 2 1,5 1 0,5 0 -2
-1
-0,5 0
1
2
3
4
5
-1 -1,5 -2 -2,5
c b f(a) 0,2648043 0,5 1 0,3987234 0,5 1,17445865 0,3658251 0,3987234 1,17445865 0,3626483 0,3658251 1,17445865
f(c) f(b) error 1,174459 -0,888187 -0,382472 -0,888187 0,1339191 -0,038133 -0,382472 0,0328983 -0,001805 -0,038133 0,0031769
Ejercicios propuestos
Determine la raíz real de:
. –. xa1 xu3 r2,378601 4,3 5,7 .% r 3,872979 Empleando tres iteraciones en el método de la falsa posición, con valores iniciales de . Calcule el error aproximado y el error verdadero en cada iteración. Solución: X
,
a
,
Calcule la raíz cuadrada positiva de usando el método de la falsa posición con . Emplee como valores iníciales y .
Solución: X
57
Métodos Numéricos con MatLab
Ing.: Willam Caiza
CAPITULO III: SISTEMA DE ECUACIONES LINEALES 3.1 INTRODUCCIÓN 3.1.1 MATRIZ ESCALONADA Definición.- Sea A una matriz n×m, A es escalonada si satisface las dos condiciones siguientes:
Las filas nulas estan por debajo de las filas no nulas. Una fila es nula si todas sus entradas son ceros; una fila es no nula si por lo menos una de sus componentes es distinta de cero.
El primer elemento distinto de cero de cada fila no nula está a la derecha del primer elemento diferente de cero de las filas precedentes.
Ejemplo 1:
0 00 200 303 [ 0 0 0 0 0 0
400 603 00 00
450 00 ]
Se puede observar que la primera fila es no nula; la segunda fila también es no nula pero el primer elemento no nulo es el -3 y está a la derecha del elemento no nulo -2 de la primera fila; las demás filas son nulas y están debajo de las filas no nulas.
Ejemplo 2:
3 2 7 5 1 000 000 400 710 609 58
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Se puede observar que la primera fila es no nula; la segunda fila también es no nula pero el primer elemento no nulo es el -4 está a la derecha del elemento no nulo 3 de la primera fila; además en la tercera fila el primer elemento no nulo es 1 y está a la derecha del primer elemento no nulo de la segunda fila -4; la última fila es nula y está debajo de las filas no nulas. Ejemplo 3:
3 2 5 1 0 0 0 00 50 40 070 Se puede observar que la primera fila es no nula; la segunda fila es nula por lo tanto no es matriz escalonada ya que debería estar debajo de las matrices no nulas. Ejemplo 4:
3 2 5 4 00 51 32 43 Se puede observar que la tercera fila es no nula pero el primer elemento no nulo -5 no está a la derecha del primer elemento no nulo de la segunda fila 1 no nula.
Definición.- Una matriz A de dimensión n × m, es escalonada reducida si es escalonada y además todo elemento en una columna, arriba y abajo del primer elemento no nulo que debe ser 1, es cero. Ejemplo 5:
A=
00 10 00 01 00 54 00 00 00 00 10 50 59
Métodos Numéricos con MatLab
Ing.: Willam Caiza
La primera fila es no nula y el primer elemento es 1 y dentro de esa columna son ceros; la segunda fila es no nula y el primer elemento no nulo es un 1 y los demás elementos de esa columna son ceros y además el 1 está a la derecha del valor no nulo 1 de la primera fila; la tercera fila es no nula y el elemento no nulo es un 1 y los demás elementos de esa columna son ceros y además el elemento no nulo 1 está a la derecha del elemento no nulo 1 de la segunda fila; la cuarta fila es nula y está al final de todas las filas no nulas. Ejemplo 6:
10 01 53 64 La matriz B es una matriz escalonada reducida por filas.
Definición.- Sea A una matriz n×m, se llama rango de A y se denota Rng (A) al número de filas no nulas de la matriz en la forma escalonada reducida equivalente a A.
Ejemplo 7:
∙ ∙ ⟵ ⟵ ≈ ⟵∙ ∙ ∙ ≈ ⟵ ≈ ⟹ Encuentre el rango de la matriz A.
Se puede observar que la primera, segunda y tercera filas de la matriz A son no nulas por lo que esta matriz no se encuentra en su forma escalonada reducida procediendo a realizar las operaciones para obtener dicha forma. Entonces, se tiene que hacer 0 al primer elemento no nulo de la segunda fila, para lo cual restamos 2 veces la fila 1 de la fila 2; luego para hacer 0 al primer elemento y tercer
60
Métodos Numéricos con MatLab
Ing.: Willam Caiza
elemento no nulo de la tercera fila sumamos la fila 1 a la fila 3; después para hacer 0 al segundo elemento no nulo de la tercera fila sumamos 2 veces la fila 1 más 3 veces la fila 3. Finalmente se obtendrá una matriz escalonada reducida, en la cual se observa que se tiene 2 filas no nulas, concluyendo que el rango de la matriz A es 2. 3.2 CARACTERIZACIÓN DE LOS SISTEMAS POR SU SOLUCIÓN 3.2.1 SISTEMAS QUE NO TIENEN SOLUCIÓN El problema de decidir si un sistema de ecuaciones lineales tiene solución o no, es el problema de reconocer si tiene ecuaciones inconsistentes o no. Y esto se reconoce fácilmente cuando el sistema tiene la forma escalonada y se observa al menos una ecuación de la forma: 0x1 + 0x2 + · · · + 0x n = b, b≠0. Se puede observar en la ecuación anterior que cero está igualado a una constante lo cual es una falsedad ya que el cero no puede ser igual a una constante diferente de cero. También resulta fácil de reconocer que hay ecuaciones inconsistentes, en un sistema en su forma inicial, cuando dos de ellas tienen iguales coeficientes asociados a las mismas variables y la constante a la derecha es distinta, como se puede observar:
3x3x2x2x3x3x35
En general, un sistema de ecuaciones no tiene solución si: Rng (A) < Rng (A, b) ↔ AX = b, el
sistema es incompatible.
Un sistema AX = b se dice que es consistente si: Rng (A) = Rng (A, b), la ausencia de ecuaciones inconsistentes se refleja en la forma escalonada de la matriz del sistema A y la forma escalonada de la matriz aumentada (A, b) tienen el mismo número de filas no nulas.
Un sistema n × m, AX = b, tiene solución única si: Rng (A) = Rng (A, b) = m = número de variables.
61
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Finalmente, un sistema n×m, AX = b, tiene un número infinito de soluciones si además de tener solución, el número de filas no nulas de la forma escalonada de la matriz del sistema es menor que m, el número de variables (o columnas de la matriz del sistema). Lo que es equivalente a establecer que: Rng (A) = Rng (A|b) < m.
FF ←← kFF ±;kFesj constante. F ← k F ± k F j ⋮ ≈ ⋮ ≈ + ⋮ + ≈ ⋯ ≈ ⋮
Operaciones Elementales de Fila 1) 2) 3)
Cálculo de la matriz inversa Algoritmo
Ejemplo 8: Calcular la matriz inversa, mediante operaciones elementales de fila.
← () 11 39 51 ← 1 1 1 ← ←← ← ← ← [ ] ← − ∙ ∙ ← ← ← Verificación:
62
Métodos Numéricos con MatLab
Ing.: Willam Caiza
⇒ Imagen 3.1: Eliminación de filas
Ejemplo 9: Dado el siguiente sistema de ecuaciones lineales calcular el rango de la matriz de coeficientes de A y de la matriz ampliada.
10 49 52 ← 12 ∗ ≈ 01 29 51 0 8 4 ← 14 ∗ 0 2 1 ← 10 29 51 2 00 0 a) Calcular el rango del sistema de ecuaciones lineales.
b) Rango de la matriz aumentada.
11 39 51 933 ← ≈ 11 192 56 4233 ← 16 ∗ ≈ 1 1 1 5 1 1 1 5 10 29 51 733 ≈ 01 29 51 733 1 1 1 5 ← 1 1 0 2 ← 10 29 51 733 1 ≈ 01 29 51 733 0 10 5 351 9← 5 ∗33 0 2 1 7 ← ≈ 00 02 01 70 2 < m,dond dondee m es el nume numeroro de filas.as. ⇒∃ infinitas soluciones
63
Métodos Numéricos con MatLab
27 2 7
Ing.: Willam Caiza
9533 33 9 – 55
Despejando y
Despejando x
33963729 5 33 263 2 5 33 2 192 Reemplazando y en x
Sea z = t
ó −+ Ejemplo 10:
Todo sistema de ecuaciones se puede escribir de la forma
, por ejemplo:
3 2 1 1 11 13 11 ; b 12 ⇒
DEFINICIÓN:
∀ > ∀ <
Se dice que una matriz
, para . Se dice que una matriz , para
triangular superior cuando sus elementos verifican
, es triangular inferior cuando sus elementos verifican
.
64
Métodos Numéricos con MatLab
Ing.: Willam Caiza
; <
; ; >
Figura 3.2: Matriz Triangular
Ejemplo 11: Matriz triangular superior:
0 ⇒ ∀>
Ejemplo 12: Matriz triangular inferior:
0 ⇒ ∀<
Si A es una matriz triangular superior entonces se dice que el sistema triangular superior de ecuaciones lineales:
(1)
es un sistema
.. .. .. ⋮ ⋱, , , ⋮ , , 65
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Figura 3.3: Ecuaciones Lineales
Supongamos que tenemos el sistema AX=b sistema AX=b y y un sistema triangular superior como en (1). Si
0 ; ∀ 1,2,… ,
; entonces existe una solución única de (1).
Demostración de forma constructiva
La solución es fácil, la última ecuación solo contiene la incógnita
Conocido
Así:
, es decir:
; 0 − − −−,−,− −− −,−−−,−−,−−,−−−−,−−, − −,− ∑ =+ , podemos utilizarla para encontrar
Generalizando tenemos:
Ejemplo 13:
Aplicando el método de sustitución hacia atrás a la matriz 4x4:
(Constante y conocido)
66
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Programa 3.1: Método de sustitución regresiva de una matriz de 4x4. a=get(handles.matriz_a, 'String'); b=get(handles.matriz_b, 'String'); a=str2num(a); b=str2num(b); n=4;
Guardamos en la variable “a” y “b”
los datos ingresados en el edit text “matriz_a” y “matriz_b”.
Str2num nos sirve para cambiar el formato de los valores, en este caso de un string a number.
for k=n:-1:1 si=0; for j=k+1:n si=si+a(k,j)*x(j); end x(k)=(b(k)-si)/a(k,k); end
n=4 numero de filas a calcular, lo utilizamos tambien como contador.
set(handles.resultado, 'String',num2str(x));
For: contador, donde “k” y “j” llegara hasta 4 como indicamos en “n”. “si” condicionamiento, damos un valor
de inicio ó 0. x(k)=(b(k)-si)/a(k,k)es la formula aprendida en clases remplazando las variables utilizadas Por ultimo, set muestra los resultados en un static text de lo realizado.
Imagen 3.4: Sustitución Regresiva
3.3 METODO DE GAUSS
67
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Definición: Es una generalización del método de reducción, que utilizamos para eliminar una incógnita en los sistemas de dos ecuaciones con dos incógnitas. Consiste en la aplicación sucesiva del método de reducción, para transformar la matriz ampliada con el método de eliminación gaussiana y pivoteo en una matriz triangular, luego mediante el método de sustitución regresiva se procede despejar las variables obteniendo así la solución 3.3.1 ELIMINACIÓN GAUSSIANA Y PIVOTEO
Necesitamos resolver el sistema AX=B, sistema con n ecuaciones y n incógnitas. El objetivo es construir un sistema triangular equivalente UX=Y que podamos resolver usando el método de sustitución regresiva. Observación: Se dice que 2
sistemas de ecuaciones de orden n son equivalentes cuando tienen el mismo conjunto de soluciones, es decir, se realizaron operaciones de fila o columna en la matriz original. Para la aplicación de la eliminación gaussiana y pivoteo, se hace uso de la matriz ampliada, como se indica a continuación:
… … | … , ∀ , , … , ← ,
La definición de multiplicador de una matriz es:
Y la operación elemental con el pivote es de la forma:
Ejemplo 14:
Resolver el siguiente sistema de ecuaciones mediante pivoteo y multiplicadores:
Siendo su matriz ampliada:
68
Métodos Numéricos con MatLab
Ing.: Willam Caiza
1 2 20 14 43 1328 43 21 23 12 206 El multiplicador y el pivote para columna 1 son:
2 ⇒ 21 2 ; ←
En el primer paso, se procedió a restar a la segunda fila la multiplicación de 2 por la primera fila:
1 0 42 21 54 132 43 21 23 12 206 3 ⇒ 41 4 ; ← 1 0 42 21 54 132 03 61 23 152 326 4 ⇒ 31 3 ; ← 10 42 21 54 132 00 67 26 1514 3245
Se procedió a restar a la tercera fila la multiplicación de 4 por la primera fila:
Se procedió a restar a la cuarta fila la multiplicación de la primera fila por -3.
Los números 2, 4, -3 son los multiplicadores del primer paso del proceso de eliminación. El número 1 es el elemento pivote de este primer paso y la primera fila, que no sufre modificación alguna, se denomina fila pivote. El multiplicador y el pivote para columna 2 son:
, ,,… ← 69
Métodos Numéricos con MatLab
3 ⇒ 64 32 ; ←
Ing.: Willam Caiza
Se procedió a restar a la tercera fila la multiplicación de por la segunda fila:
10 42 21 54 132 00 07 56 1514 ⁄2 3545 4 ⇒ 47 74 ; ← 10 42 21 54 132 00 00 519⁄21521⁄⁄24 9735⁄2 Se procedió a restar a la cuarta fila la multiplicación de
por la segunda fila:
En el siguiente paso del proceso, la segunda fila se emplea como fila pivote y -4 como elemento pivote.
El multiplicador y el pivote para columna 3 son:
, ,… ← 19 4 ⇒ 52 1910 ; ← 10 42 21 54 132 00 00 5 0159 ⁄2 3518
En el siguiente paso del proceso, la tercera fila se emplea como fila pivote, y se procede a restar a la cuarta fila la multiplicación de por la tercera fila.
70
Métodos Numéricos con MatLab
Ing.: Willam Caiza
El sistema resultante es triangular superior y equivalente al sistema original, este sistema es fácilmente resoluble aplicando el algoritmo de sustitución regresiva, de esta forma se obtiene:
9 18⇒ 152 35⇒5 152 2 35⇒ 5 4 2 5 2⇒4 2 4 5 2 2⇒ 2 4 13⇒ 2144213⇒ 31 21 31 11 31 2[1 11 21 212 35 ]
Ejemplo 15:
Siendo su matriz ampliada:
Transformando a matriz triangular superior
El multiplicador y el pivote para columna 1 son:
1; 1221; 3321; 441 ; 32 24;
1 1/3 10 2/3 1/3 0 4/3 8/3 1/3 00 7/31/3 11 1/64/3 16/37/3
F3
4
71
Métodos Numéricos con MatLab
3 4; 4
Ing.: Willam Caiza
1/3 10 2/3 1 1/3 0 4/3 1/3 8/3 00 00 1/71 3/28/7 38 1 1/3 10 2/3 1/3 0 4/3 8/3 1/3 00 00 1/70 13/148/7 13/73
Ejemplo 16:
Resolver el siguiente sistema de ecuaciones mediante pivoteo y multiplicadores:
, 2,3… ← , 2 ⇒ 13 13 ; ← Calculando su rango:
El multiplicador y el pivote para columna 1 son:
En el primer paso, se procedió a restar a la segunda fila la multiplicación de fila:
3 0 25 14 3 3 1 2 3
por la primera
72
Métodos Numéricos con MatLab
Ing.: Willam Caiza
3 ⇒ 13 13 ; ← 30 25 14 3 3 0[ 43 103 ] Se procedió a restar a la tercera fila la multiplicación de
Los números
,
por la primera fila:
son los multiplicadores del primer paso del proceso de eliminación. El
número 3 es el elemento pivote de este primer paso y la primera fila, que no sufre modificación alguna, se denomina fila pivote. El multiplicador y el pivote para columna 2 es:
, ← 3 ⇒ 64 32 ; ← 30 25 14 3 3 0[ 0 225 ] Se procedió a restar a la tercera fila la multiplicación de
por la segunda fila:
Calculemos el rango de la matriz ampliada:
, , … ← , El multiplicador y el pivote para columna 1 es:
73
Métodos Numéricos con MatLab
Ing.: Willam Caiza
2 ⇒ 13 13 ; ← 3 0 5/32 4/31 5/32 5/3 1 2 3 3 ⇒ 13 13 ; ← 30 5/32 4/31 5/32 0 4/3 10/3 5/3 , ← 3 ⇒ 64 32 ; ← 30 5/32 4/31 5/32 0 0 22/5 1/3 Se procedió a restar a la segunda fila la multiplicación de
por la primera fila:
Se procedió a restar a la tercera fila la multiplicación de
por la primera fila:
El multiplicador y el pivote para columna 2 son:
3.1 Se procedió a restar a la tercera fila la multiplicación de
por la segunda fila:
El rango de A Ran(A)=3 Ran (A|b) =3 m=3
∴ ó Definición: El método de Gauss-Jordan se basa en el método de Gauss el cual transforma la matriz de coeficientes en una matriz triangular superior procediendo a realizar la matriz trianguklar inferior en el cual se obtienen sus soluciones mediante la reducción del sistema dado a otro
74
Métodos Numéricos con MatLab
Ing.: Willam Caiza
equivalente hasta la (n-1) columna, continúa el proceso de transformación hasta obtener una matriz diagonal, la cual se le multiplica por su inverso a cada uno de los elementos de la diagonal principal para que sus valores sean 1, finalmente en la ultima columna se obtiene la solución de la variables Ejemplo 17:
Siendo su matriz ampliada:
31 21 31 11 31 2[1 11 21 212 35 ]
Transformando a matriz triangular superior
El multiplicador y el pivote para columna 1 son:
1; 1221; 3321; 441 ; 32 24; F3
4
3 4; 4
1 1/3 10 2/3 1/3 0 4/3 8/3 1/3 00 7/31/3 11 1/64/3 16/37/3 1 1/3 10 2/3 1/3 0 4/3 1/3 8/3 00 00 1/71 3/28/7 38 75
Métodos Numéricos con MatLab
Ing.: Willam Caiza
1/3 10 2/3 1 1/3 0 4/3 8/3 1/3 00 00 1/70 13/148/7 13/73
Se procederá a transformar a matriz inferior
4; 1 4; 2 3 4;
1/3 10 2/3 1 1/3 0 4/3 8/3 1/3 00 00 1/70 13/148/7 13/73
1 2 3
1133 1162
30 1/32 30 00 30 00 00 0 1 13/20 135 30 1/30 00 00 30 00 00 0 1 13/20 135 10 01 00 00 60 00 00 10 01 25 76
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Se pudo comprobar que mediante el método de Gauss y el método de Gauss-Jordan se obtuvo la misma solución
Ejemplo 18:
Resolver el siguiente sistema mediante Gauss-Jordán.
23 32 14 31 F2 511 4 13 322 124 312 FF ←F←F 3F5F 511 4 1 3213 1211 129 2 0 172 27 32 F ←F 13 [0 2 2 2 ] 1 32 1211 129 F ←F 32 F 0 117 137 313 F ←F 172 F [0 2 2 2 ]
Se procedió a dividir la primera fila para 2:
Se procedió a la segunda fila restar la multiplicación de 3 por la primera fila y a la tercera fila restarle la multiplicación de 5 por la primera fila
Se multiplico a la segunda fila por
77
Métodos Numéricos con MatLab
Se procedió a la primera fila restar la multiplicación de fila sumarle la multiplicación de
por la segunda fila
Ing.: Willam Caiza
por la segunda fila y a la tercera
1 0 101311 1379 13 0 1 4813 9613 F ←F 48 [0 0 13 13 ]
Se multiplico a la tercera fila por
1 0 101311 1379 F ←F 101311 F 0[0 10 113 213] F ←F 13 F Se procedió a la primera fila sumarle la multiplicación de
por la tercera fila y a la segunda
fila restarle la multiplicación de por la tercera fila Se obtuvo una matriz triangular superior eh inferior, lo que nos dio como resultado:
10 01 00 11 ⇒ 0 0 1 2 Ejemplo 19:
Resolver el siguiente sistema mediante Gauss-Jordán
32 24 13 52 ← 3 12 423 11 532 ← 2 78
Métodos Numéricos con MatLab
Ing.: Willam Caiza
1 1623 1 534 ← 163 0 3 3 3 1 23 19 531 ← 23 0 1 16 4 1 0 589 321 0 1 16 4 9 58 321⇒ 32 9 58 1 16 4 ⇒ 16 4 ∴ Ejemplo 20: Obtener λ para que el sistema de ecuaciones tenga:
a) Solución única b) Infinitas soluciones c) No tenga solución
21 31λ 64 ← 2 11 2λ 4 ← 79
Métodos Numéricos con MatLab
Ing.: Willam Caiza
1 12 1 31 ← 1 0 λ 2 λ 2 10 121 2λ132 ← 12 2 3 10 01 22λ 1 ⇒2λ10 ⇒λ 12 [ 2λ1 ] λλ ⇒⇒úóó
Ejemplo 21:
Obtener λ para que el sistema de ecuaciones tenga:
a) Solución única b) Infinitas soluciones c) No tenga solución
2λ 2λ 11 ← 2 1λ 22λ 121 ← λ 1 4λ2λ 2λ12 ← 4λ2 0 2 2 1 λ 10 21 2λ21 ← 2λ 80
Métodos Numéricos con MatLab
Ing.: Willam Caiza
1 10 01 2λ ⇒4 λ 0⇒4λ ⇒ λ √ 4 ⇒λ2 12λ || | ⇒ |||| ⇒ <⇒ ≥⇒|||⇒ ⇒ ⇒ ó 10 00 1⁄22 ⇒02 ± ⇒ ú ó ⇒ 10 10 1⁄02 i.
ii.
Código de Programa de Gauss- Gauss Jordan en Matlab
Botón para el método de Gauss
function calcular_Callback(hObject, eventdata, handles) clc; valor=get(handles.a,'string'); vm=str2num(valor); valorb=get(handles.b,'string'); vmb=str2num(valorb);
Ingreso de las matrices Definimos el tipo de dato
A=[vm,vmb]; n=length(vm); for i=1:n for k=i+1:n pivo=A(k,i)/A(i,i); A(k,:)=A(k,:)-pivo*A(i,:); end end a=A(:,1:n); b=A(:,n+1); x(n)=b(n)/a(n,n); for k=n:-1:1
Concatenación de las matrices Cálculo de x por el método de gauss
Cálculo de los valores para x
81
Métodos Numéricos con MatLab
Ing.: Willam Caiza
si=0; for j=k+1:n si=si+a(k,j)*x(j); end x(k)=(b(k)-si)/a(k,k); end set(handles.Gauss,'string',num2str(A)); set(handles.matriz,'string',num2str(x'));
Impresión de resultados
Botón para el método de Gauss – Jordan
function jordan_Callback(hObject, eventdata, handles) clc; valor=get(handles.a,'string'); vm=str2num(valor); valorb=get(handles.b,'string'); vmb=str2num(valorb);
Ingreso de las matrices
A=[vm,vmb]; A1=[vm,vmb]; n=length(vm);
Concatenación de las matrices
for i=1:n for k=i+1:n pivo=A(k,i)/A(i,i); A(k,:)=A(k,:)-pivo*A(i,:); end end for i=1:n for k=i+1:n pivo=A(i,k)/A(k,k); A(i,:)=A(i,:)-pivo*A(k,:); end end A1=A; for i=1:n A1(i,:)=A1(i,:)/A1(i,i); End
Matriz triangular superior
Matriz triangular inferior
Para convertir la diagonal a 1
set(handles.gaussjordan,'string',num2str(A)); set(handles.matriz,'string',num2str(A1));
82
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Impresión de resultados
Resultado del Guide para el método de Gauss y Gauss – Jordan
Imagen 3.5: Métodos de Guass y Gauss-Jordan 1
Ejecución del Guide para el método de Gauss
83
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Imagen 3.6: Métodos de Guass y Gauss-Jordan 2
Ejecución del Guide para el método de Gauss-Jordan
Imagen 3.6: Métodos de Guass y Gauss-Jordan 3
EJERCICIOS PROPUESTOS Método de Gauss Resuelva las siguientes ecuaciones por el método de Gauss:
84
Métodos Numéricos con MatLab
1)
2) 3)
4)
5)
6) 7)
8)
9)
10)
Ing.: Willam Caiza
21 27 30 31 2325 1 2349 1 321 5342 1 9533 39 5 46 32416 31 2340 + 5 35 + 5 4 − 1 60 16201100
Método De Gauss Jordan Resuelva las siguientes ecuaciones por el método de Gauss Jordan:
1)
231 322 4443 85
Métodos Numéricos con MatLab
2)
3)
4)
5)
6)
7)
Ing.: Willam Caiza
5 2 √ √ 5 √ 3 32 230 3268 2328 330 2677 21 5749 238 4515 241 2 332 0 0 230 3571
Referencias
http://www.vitutor.com/algebra/sistemas%20I/g_e.html http://ocw.unizar.es/ciencias-experimentales/matematicas-primer-curso-grado-cienciatecnologia-alimentos/bloques/bloque3/ejercicios/tema3_metodo_gauss_resueltos.pdf
86
Métodos Numéricos con MatLab
+
Ing.: Willam Caiza
CAPÍTULO IV: AJUSTE DE CURVAS
4.1 INTRODUCCIÓN. El ajuste de curvas nos proporciona funciones mediante las cuales podemos predecir valores en un instante t+j, en el presente capitulo las funciones encontradas mediante el método de los mínimos cuadrados son la función lineal y la función cuadrática. El método de los mínimos cuadrados nos proporciona funciones donde la suma de los errores al cuadrado debe ser el mínimo; en otras palabras, nos proporciona funciones que se ajustan a una nube de puntos.
4.2 MÉTODO DE LOS MÍNIMOS CUADRADOS
87
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Método de los Mínimos Cuadrados 12 10
8 6 4 2 0 0
20
40
60
80
100
120
140
160
Imagen 4.1: Métodos de los Mínimos Cuadrados
El método de los mínimos cuadrados es un modelo matemático que se basa en minimizar la suma de los cuadrados de los errores, como se describe a continuación.
1 =
: 4.3 SUPUESTOS O HIPÓTESIS HIPÓTESIS DEL MODELO DE REGRESIÓN REGRESIÓN LINEAL
a)
̂; ∀ ̂ , donde
donde donde
88
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Imagen 4.2: Representación 4.2: Representación Gráfica
b)
; ∀ (, )( ) ( ) () )
La varianza de los errores es constante. c)
Ejemplo 1: Si
SC
Demostración
Ejemplo 2: Si
SC
SC ∑ x nx Σ x̅2x xx x 2xxx xx 2x2nxnxnxnx SC ∑ . Σ y 2yyy
es la suma de los cuadrados de los xx, demuestre
.
es la suma de los cuadrados de los yy, demuestre demuestre
Demostración
89
Métodos Numéricos con MatLab
Ejemplo 3: Si
SC
Ing.: Willam Caiza
yy2y y y y 2yny ny y 2ny ny SC ∑ . xyx yy xxy x xyyy x xy xy nyxnyxnxy
es la suma del producto de los xy, demuestre
Demostración
TEOREMA: Bajo los supuestos anteriores, demuestre:
Si
Entonces
Demostración
0 0 – = = ∑ ∑ 2 2 2 2 ∑ ∑ 2 ∑ 2 ∑ ∑ 2 ∑ ∑
Derivando con respecto a los parámetros
se tiene
] ]
]
]
90
Métodos Numéricos con MatLab
Ing.: Willam Caiza
⋯ ⋯ 0 ( ⋯) ⋯ ⋯ 2 2 ⋯2 ( ⋯) ⋯ ⋯ ∑ 2∑ 2∑ ∑ ∑ ∑ 0 0 ⋯ ⋯ 0 2 2( ⋯)
Primera restricción del modelo
=
=
Entonces la primera ecuación normal es: +2n +2
-
(1)
Segunda restricción del modelo
91
Métodos Numéricos con MatLab
Ing.: Willam Caiza
∑ 2 2 ⋯ ∑ 2 2x2 ∑x x ⋯x 2 ∑∑ 2∑∑ 2 ∑∑ ∑ ∑ ∑ ∑ ∑ 0 0 =
=
=0
Entonces la segunda ecuación normal es: =0
=0 (2)
Ecuaciones Normales
Ejemplo 4: Encontrar las ecuaciones normales de una función de segundo grado
0 0 0 ; β β x β x = – β β x β x = 2 (β βx βx) β βx βx 0 =
Demostración
92
Métodos Numéricos con MatLab
Ing.: Willam Caiza
= 2 β 2 βx 2 βx β 2ββx βx 2ββx 2ββx β x
2 β 2 β ⋯2 β = 2 ⋯ = = β β ⋯β 2β2β2ββ ⋯2β ⋯β 2ββ 2β β ⋯ 2β β 0 0 0 = 2β 2β ⋯2β 2β ⋯ = 2 β β 2β β ⋯2β β = 2β 2β ⋯2β 2β ⋯ = 2= 2β 2 = 2 = 0
Primera restricción del modelo
=
=
Entonces la primera ecuación normal es:
Segunda restricción del modelo
93
Métodos Numéricos con MatLab
Ing.: Willam Caiza
2 β 2 β ⋯2 β = 2 2 ⋯2 2 ⋯ = 2ββ 2ββ ⋯2ββ = 2β 2β ⋯2β 2β ⋯ = = β β ⋯β 2β2β2β ⋯2β ⋯ = 2ββ 2ββ ⋯2ββ = 2β 2β ⋯2β 2β ⋯ = Entonces la segunda ecuación normal es:
0 = = = = 94
Métodos Numéricos con MatLab
Ing.: Willam Caiza
2β 2β ⋯2β = 2 2 ⋯2 2 ⋯ = 2ββ 2ββ ⋯2ββ = 2β 2β ⋯2β 2β ⋯ = 2ββ 2ββ ⋯2ββ = 2β 2β ⋯2β 2β ⋯ = = βx βx ⋯βx 2βx 2βx ⋯2βx 2βx x ⋯x =
Tercera restricción del modelo
Entonces la tercera ecuación normal es:
0 = = = = 95
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Entonces las 3 ecuaciones normales quedan plateadas de la siguiente manera
0 1 = = = 0 2 = = = = 0 3 = = = = Ordenando los términos en cada lado de la ecuación obtenemos las ECUACIONES NORMALES
1 = = = 2 = = = = 3 = = = =
Ejemplo 5:
0 1
Dados los siguientes datos, encuentre la ecuación de regresión lineal ajuste, encontrar . X 1 3 5 6
Y 1 3,5 6 7
̅ +++ =
̅
=
96
Métodos Numéricos con MatLab
Ing.: Willam Caiza
̅ )(
1 3 5 6 15
sumatoria
1 3,5 6 7 17,5
-2,75 -0,75 1.25 1.8 0
-3,375 -0,875 1.44 2.625 0
)
297/32 21/32 65/32 189/32 143/8
+.++ . 143 5984 1.212 1754 1.212∗ 154 0.17 0.171.212 =
̅
(
)^2
121/16 9/16 25/16 81/16 59/4
=
Ejemplo 6:
En un estudio para describir la relación entre la expansión al ruido y la hipertensión se realizan las siguientes mediciones.
Promedio
X
y
60 65 70 80 80 85 90 90 94 100 81,4
1 1 5 4 2 5 6 4 7 7 4,2
̅81.4
x-´x -21,4 -16,4 -11,4 -1,4 -1,4 3,6 8,6 8,6 12,6 18,6
y-´y -3,2 -3,2 0,8 -0,2 -2,2 0,8 1,8 -0,2 2,8 2,8
(x-´x)(y-´y) (x-´x)^2 68,48 457,96 52,48 268,96 -9,12 129,96 0,28 1,96 3,08 1,96 2,88 12,96 15,48 73,96 -1,72 73,96 35,28 158,76 52,08 345,96 219,2 1526,4
∑−
´y 1,1 1,815 2,53 3,96 3,96 4,675 5,39 5,39 5,962 6,82
(yi-´yi)^2 0,01 0,664225 6,1009 0,0016 3,8416 0,105625 0,3721 1,9321 1,077444 0,0324 14,137994
(yi-´y)^2 10,24 10,24 0,64 0,04 4,84 0,64 3,24 0,04 7,84 7,84 45,6
(´yi-´yi)^2 9,61 5,688225 2,7889 0,0576 0,0576 0,225625 1,4161 1,4161 3,104644 6,8644 31,229194
=14.134
97
Métodos Numéricos con MatLab
4.219.2 2 152.68 0.143 7.44020.143 7.44020.14365 1.815 7.44020.14366 1.958
Ing.: Willam Caiza
∑̌−
a.- Interpretación
8
Hipertensión=f(ruido)
7
b.- Si x=65
Si x=66
=31.229
y = 0,1436x - 7,4895 R² = 0,6903
6 5 4 3 2 1 0 0
20
40
60
80
100
120
Por cada nivel que aumenta en el ruido, la hipertensión aumenta a 0.143 unidades
98
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Programa Regresión Lineal Código Matlab function pushbutton1_Callback(hObject, eventdata, handles) % En esta línea de código se crea el evento para programar el botón calcular. global a % En esta línea de código creamos una variable global para trabajar en todo el algoritmo. x=str2num(get(handles.edit1,'string')); y=str2num(get(handles.edit2,'string')); % En estas dos líneas de código guardamos los datos del vector X y el vector Y y los convertimos de String a numéricos. m=length(x); % En esta línea de código guardamos en la variable m el tamaño del vector x. n=str2num(get(handles.edit3,'string')); % En esta línea de código guardamos el dato del grado del polinomio. error=0; % En esta línea de código establecemos el error cero para realizar nuestro algoritmo de iteración. if m ~= length(y) msgbox 'ingrese correctamente los puntos (x,y)' return end % En este código establecemos la condición para que X y Y posean el mismo número de datos. for j=1:n+1 for k=1:n+1 s1=0; error=0; for i=1:m s1=s1+(x(i)^(j+k-2)); error=error+1; end A(j,k)=s1; end end for j=1:n+1 s2=0; error=0; for i=1:m s2=s2+(y(i)*(x(i)^(j-1))); error=error+1; end B(j)=s2; end if error==0 msgbox 'verifique que las casillas estén llenadas correctamente no ingresar letras)' else B=B'; a=inv(A)*B; a=a'; set(handles.text7,'string',num2str(a)); end
99
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Funcionamiento del programa en modo grafico:
Imagen 4.3: Programa de Regresión lineal
En la Fig. 4.2 se observa el funcionamiento del programa de regresión lineal con los datos x(2,4,6,8) y y(2,5,4,5). Calculamos los valores de B0 y B1 y después se grafica el ajuste de curva para los puntos ya mencionados. 4.4 GENERALIZACIÓN DE MODELOS LINEALES 4.4.1 MODELO POTENCIAL
Dado un modelo no lineal mediante transformaciones pasar a modelo lineal Sea el modelo potencial
( ) ⇒ Ejemplo 7:
100
Métodos Numéricos con MatLab
, . ⇒ ⇒
Ing.: Willam Caiza
º
PROPIEDADES
Ejemplo 8: 1) Si
suma de los cuadrados de los xx
∑ 2 ̅̅̅ 2 ∑̅̅ ̅ 2̅̅ ̅ 2 ̅ ̅ ∑ ∑ 2 2 2 2 , demuestre que
Ejemplo 9: 2) Si
suma de los cuadrados de los yy , demuestre que
101
Métodos Numéricos con MatLab
Ing.: Willam Caiza
∑ ∑ ̅ ̅ ̅ ̅ ̅ ̅̅̅
Ejemplo 10: 3)
4.5 REGRESIÓN MÚLTIPLE En el capítulo anterior se desarrolló el ajuste lineal simple, es decir donde había una variable dependiente junto a una variable independiente. En el presente tema se tratará el caso de ajuste lineal donde hay una variable dependiente y varias variables independientes. Matricialmente el modelo multilineal se representa
Su ajuste es:
̂ 11 [⋮] 1⋮ ⋮ [1 ]
Nuestro modelo podría tener la forma
;
X=
;
4.5.1 MÉTODO DE MÍNIMOS CUADRADOS PARA LA REGRESIÓN MULTILINEAL
El error se define:
̂ (1)
102
Métodos Numéricos con MatLab
Ing.: Willam Caiza
̂
Reemplazamos el valor de en la ecuación (1)
() 0 ( ) ( ) 0 0
Este valor se necesita para el método indicado en la sumatoria cuadrada de los errores
(2)
Para poder derivar (2) se necesita las siguientes propiedades y observaciones de la ecuación (2): 1.
Debemos demostrar
2.
Debemos demostrar
3. 4.
.
es simétrica.
2
, donde A es una matriz cualquiera. , donde A es simétrica.
Desarrollo de las propiedades para realizar la derivada de la ecuación 2 a) Demuestre
11 [⋮] 1⋮ ⋮ [1 ] 1 1 , , , … , 1⋮ ⋮ [ ] 1 = = ∑= ∑=
Se demuestra para el modelo
;
Por construcción
X=
;
(3)
Y
103
Métodos Numéricos con MatLab
Ing.: Willam Caiza
1 1 ⋯⋯ 1⋮ ⋯ ⋮ . . ⋯ ⋯ ⋯ ∑= ∑= = = = = ; [ ] +…+
( + (4)
)
)+
Igualamos (3) y (4)
Entonces obtenemos la demostración:
b) Demuestre que
Entonces: Por lo tanto: Z es simétrica. c) Demuestre que
Derivando respecto a
, donde A es una matriz cualquiera.
y a
obtenemos:
104
Métodos Numéricos con MatLab
Ing.: Willam Caiza
0 2 ( ) 2 −
Igualamos
llegamos a la demostración: =
Con las demostraciones y las observaciones hechas derivamos la ecuación (2):
+2
Programa:
Programa Ejecutado
105
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Programa Regresión Multilpe Código: function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) m=3; n=str2double(inputdlg('Ingrese el numero de filas:')); for i=2:m for j=1:n etiqueta=['Ingrese el valor X(',num2str(j),',',num2str(i),')']; x(j,i)=str2double(inputdlg(etiqueta)); end end x(:,1)=1; for i=1:n etiqueta=['Ingrese el valor B(1,',num2str(i),')']; y(i,1)=str2double(inputdlg(etiqueta)); end total=(inv(x'*x)*(x'*y)); for i=1:n ys(i,1)=(total(1,1)*x(i,1))+(total(2,1)*x(i,2))+(total(3,1)*x(i,3)); end set(handles.uitable1,'Data',x); set(handles.uitable2,'Data',y); set(handles.uitable3,'Data',total); set(handles.text1,'String',ys); x=[x(:,2) x(:,3)]; plot3(x,y,ys,'*'); grid on; axis on; hold on; rotate3d on; plot3([min(x(:,1)) max(x(:,1))],[min(y) max(y)],[min(ys) max(ys)]);
106
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Imagen 4.4: Ejecución del programa de regresión lineal
4.6 MÉTODO DE MÍNIMOS CUADRADOS PARA LA REGRESIÓN MATRICIAL 4.6.1 DERIVACIÓN MATRICIAL
5 2 3 , , 5 2 3 523 ∴ ⇒ 2 ; é Sea
107
Métodos Numéricos con MatLab
Ing.: Willam Caiza
2 2 2 2 2 2 2 2 2 ∴ é ′2 ∴Se deber ía demost rar que: é ⇒ é 2 ∴ 2 Ejemplo 11:
Demuestre que:
108
Métodos Numéricos con MatLab
Ing.: Willam Caiza
∗ ∗ = = = 2 ∗ = 2 ∗ ∗ = 2 2 2 ∗ ∗ 0 22 ∑ 12 ∑ + ∑ 2 ∗2 ∑ 2 1 2 ∗2 2 ∑ =0
Ejemplo 12: Demostración del método de regresión matricial
ββ ββ β . . 1 … 1 1 1 1⋮ ⋮ … 1 β β ⋮
La ecuación normal matricial de la región lineal es: Por lo tanto:
109
Métodos Numéricos con MatLab
Ing.: Willam Caiza
. . 1 … … 1 1 … 1 11⋮ ⋮ ββ 1 1 … 1 ⋮ ∑ ∑∑ ββ ∑∑ ββ ∑ ∑∑− ∑∑ ∑ ∑∑ ∑ ∑∑− ∑∑ ∑ ∑−∑−∑ ∑ ∑ ∑ ∑ −∑−∑− ̅ ∑ ∑ ∑ ∑−− ̅ ∑ ∑ ∑−− ̅ ∑−∑−− ̅ ∑∑− ̅ ∑−− ̅ ̅ ∑−∑− ̅ ∑−− ̅ ∑−−− ̅ ̅ ∑− ̅ ∑− ∑−− ∑−− ∑− =
=
=
Calcular la inversa de
=
=
=
=
=
=
Ejemplo 13: -
EDAD 2 3
5 niños de 2,3,5,7 y 8 años de edad pesan, respectivamente, 14,20,32,42 y 44 (kg) hallar la recta de regresión.
PESO 14 20
110
Métodos Numéricos con MatLab
5 7 8
Ing.: Willam Caiza
32 42 44
Peso vs Edad 50 45 40 35 30 25 20 15 10 5 0 0
1
EDAD X
Y
2 3 5 7 8 Promedio:
PESO
5
2
4
5
6
(x- )
14 20 32 42 44 30,4
3
-3 -2 0 2 3
(y- )
-16,4 -10,4 1,6 11,6 13,6
(x- )(y- )
49,2 20,8 0 23,2 40,8 134
(x- )^2
9 4 0 4 9 26
∑∑ ∗ ∗ ypesopeso4,654,4,65655,155,5,x15a15añoñoss 5,15384615 4,63076923
INTERPRETACIÓN: - Por cada año el peso del niño aumentará en 5,15kg.
111
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Ejemplo 14: Con la siguiente tabla, desarrollar:
a) Hallar la recta de regresión y encontrar y e interpretar los resultados. b) Hallar las fórmulas Polinómicas de Segundo Grado e interpretar los resultados. c) Modelo Lineal (Modelo de regresión multilineal) e interpretar interpretar los resultados. REGISTRO
SEXO
1 2 3 4 5 6 7 8
mujer mujer mujer mujer mujer mujer mujer mujer
Promedio:
CRANEO X5 55 55 54,5 57 57 54 56 58 55,8125
a)
ESTATURA X1 158 152 168 159 158 164 156 167 PESO Y 43 45 48 49 50 51 52 52 48,75
PIE X2 36 34 39 36 36 36 36 37
(x- ) -0,8125 -0,8125 -1,3125 1,1875 1,1875 -1,8125 0,1875 2,1875
BRAZO X3 68 66 72,5 6,5 68,5 71 67 73
ESPALDA X4 43 40 41 42 44 44,5 36 41,5
(y- ) -5,75 -3,75 -0,75 0,25 1,25 2,25 3,25 3,25
CRANEO X5 55 55 54,5 57 57 54 56 58
(x- )(y- ) 4,671875 3,046875 0,984375 0,296875 1,484375 -4,078125 0,609375 7,109375 14,125
PESO Y 43 45 48 49 50 51 52 52
(x- )^2 0,66015625 0,66015625 1,72265625 1,41015625 1,41015625 3,28515625 0,03515625 4,78515625 13,96875
∑∑ ∗− ∗
1,01118568 7,68680089
112
Métodos Numéricos con MatLab
Ing.: Willam Caiza
60 50 40
y = 1,0112x 1,0112x - 7,6868 R² = 0,1892
30 20 10 0 53,5
54
54,5
55
55,5
56
56,5
57
57,5
58
58,5
INTERPRETACIÓN Por cada centímetro que se aumente en el diámetro del cráneo el peso aumenta en 1,011 kg ESTATURA PESO X1 Y 158 43 152 45 168 48 159 49 158 50 164 51 156 52 167 52 Promedio: 1282 390 ( )+ ( )+n( ( )+ ( )+ ( ( )+ ( )+ (
X*Y 6794 6840 8064 7791 7900 8364 8112 8684 62549 )= )= )=
X*X 24964 23104 28224 25281 24964 26896 24336 27889 205658
ββ ββ ββ ∗ β β β ∗ ββ β ββ β β β β
X*X*X 3944312 3511808 4741632 4019679 3944312 4410944 3796416 4657463 33026566
x*x*x*x 623201296 533794816 796594176 639128961 623201296 723394816 592240896 777796321 5309352578
y(x*x) 1073452 1039680 1354752 1238769 1248200 1371696 1265472 1450228 10042249
Reemplazamos los valores obtenidos en las ecuaciones: 205658( )+)+1282( )+8( )=390 33026566( )+)+205658( )+1282( )=62549 5309352578( )+33026566( )+205658( )=10042249
113
Métodos Numéricos con MatLab
Ing.: Willam Caiza
60 50 40 y = -0,0253x2 + 8,3554x - 640,52 R² = 0,2026
30 20 10 0 150
155
160
165
170
INTERPRETACIÓN Manteniendo constante los parámetros por cada centímetro de aumento de su estatura su peso aumenta en 8,35kg
c) ESTATURA X1 158 152 168 159 158 164 156 167
PIE X2 36 34 39 36 36 36 36 37
BRAZO X3 68 66 72,5 68,5 68,5 71 67 73
PESO Y 43 45 48 49 50 51 52 52
β β ∗X1β ∗X2β ∗X3 β β β β
Peso= + *Estatura+ *Long_Pie+ *Long_Brazo MATRIX X 1 1 1 1 1 1 1 1
158 152 168 159 158 164 156 167
36 34 39 36 36 36 36 37
68 66 72,5 68,5 68,5 71 67 73
MATRIX X TRANSPUESTA
114
Métodos Numéricos con MatLab
1 158 36 68
1 152 34 66
Ing.: Willam Caiza
1 168 39 72,5
1 159 36 68,5
1 158 36 68,5
1 164 36 71
1 156 36 67
1 167 37 73
(MATRIX X TRANSPUESTA) * (MATRIZ X) 8 1282 290 554,5
1282 205658 46519 88957,5
290 46519 10526 20120,5
554,5 88957,5 20120,5 38479,75
INVERSA DE (MATRIX X TRANSPUESTA) * (MATRIZ X) 133,320266 3,24411952 1,19933602 4,95147277 3,24411952 0,50985378 0,38970121 0,92816275 1,19933602 0,38970121 0,50165996 0,62131808 4,95147277 0,92816275 0,62131808 1,7495232
(MATRIX X TRANSPUESTA) * (Y) 390 62549 14146 27056,5 CALCULO DE LOS COEFICIENTES 13,802218 0,08900191 0,50554496 0,56283111
ββ ββ
INTERPRETACIÓN PARA LA ESTATURA Manteniendo constante todos los demás parámetros por cada centímetro en aumento de la estatura su peso aumenta en 0,089kg
115
Métodos Numéricos con MatLab
Ing.: Willam Caiza
PARA LONG_PIE Manteniendo constante todos los demás parámetros por cada centímetro en aumento de longitud del pie su peso disminuye en 0,5KG PARA LONG_BRAZO Manteniendo constante todos los demás parámetros por cada centímetro en aumento en longitud de brazo su peso aumenta 0,56KG
EJERCICIOS PROPUESTOS Ajuste de curvas 1.- Ajustar los datos de la siguiente tabla: X
1
2
4
Y
3
5,1
8,8
a).- Hacer el grafico de la función Páginas web: http://portales.puj.edu.co/objetosdeaprendizaje/Online/OA10/capitulo3/3.6.htm 2.- Supongamos un muelle sometido a tracción, se ha cargado el muelle con diferentes pesos (F, variable independiente o y ) y se han anotado los alargamientos ( l variable dependiente o x) Cargas sucesivas F(yi) gramos
Lecturas sucesivas (xi) L / mm
200 400 500 700 900 1000
60 120 150 210 260 290
Página web: http://ocw.unican.es/ensenanzas-tecnicas/fisica-i/practicas1/Ajuste%20por%20minimos%20cuadrados.pdf
116
Métodos Numéricos con MatLab
Ing.: Willam Caiza
3.- 15 estudiantes a los cuales se les realizo un test de inteligencia cuyas puntuaciones se reflejan en la variable X, y a los que se había realizado una prueba que se refleja en las puntuaciones de la variable Y, calcular la recta de regresión de Y sobre X. n X Y
1 9 5
2 12 5
3 6 1
4 9 4
5 7 2
6 9 2
7 5 1
8 9 3
9 7 3
10 3 1
11 10 4
12 6 2
13 11 5
14 4 2
15 13 5
Página web: http://www.ugr.es/~jsalinas/apuntes/C5.pdf 4.- Construir una recta que aproxime los datos de la tabla siguiente y hallar la ecuación de dicha recta: X 1 2 4 5 6 8 Y 1 2 2 4 5 7 5.- Ajustar una recta de mínimos cuadrados a los datos de la tabla que a continuación se indica, en los casos siguientes: a).- X como variable independiente, b).- Y como variable independiente. Y hacer la gráfica correspondiente X Y
1986 18
1987 20
1988 22
1989 24
1990 25
1991 26
1992 28
1993 30
1994 32
Página web: http://books.google.es/books Coeficiente de correlación 1. Una compañía desea hacer predicciones del valor anual de sus ventas totales en cierto país a partir de la relación de estas y la renta nacional. Para ello cuenta con los siguientes datos: x 189 190 208 227 239 252 257 274 293 308 316 y 402 404 412 425 429 436 440 447 458 469 469
2. La empresa “Santos” desea saber si sus ventas dependen de la publicidad que ellos hacen a sus productos tomaran sus datos según resultados obtenidos, ellos deciden utilizar el método de correlación lineal simple para encontrar la relación las cantidades de son en millones: publicidad 1172,2
Ventas 593,8
117
Métodos Numéricos con MatLab
1209,2 1233,1 1256,9 1301,9 1320 1350,4 1357,9 1380,8 1381,8 1402,5 1403 1406,1 1423,7
Ing.: Willam Caiza
596 598,3 600,8 603,3 607,7 608,5 611,2 592,4 585,6 589 589,4 593,5 597,6
3. La información estadística obtenida de una muestra de tamaño 12 sobre la relación existente entre la inversión realizada y el rendimiento obtenido en cientos de miles de euros para la explotación agrícolas es al siguiente: Inversión (x) 11 Rendimiento(y) 2
14 3
16 5
15 6
16 5
18 33
20 7
21 10
14 6
20 10
19 5
11 6
4. El número de hrs. Dedicadas al estudio de una asignatura y la calificación obtenida en el examen correspondiente, de ocho personas es: Horas(x) 20 Calificación(y) 6,5
16 6
34 8,5
23 7
27 9
32 9,5
18 7,5
22 8
5. de un núcleo de población, acuden los clientes, en cientos, que figuran en la tabla. N de clientes(x) Distancia(y)
8 15
7 19
6 25
4 23
2 34
1 40
6. En una muestra de 1500 individuos se recogen datos sobre dos medidas antropométricas X e Y. Los resultados que se obtienen son x = 14,
y = 100,
sx = 2,
sy = 25,
sxy = 45.
Obtener el modelo de regresión lineal que mejor aproxima Y en función de X. Utilizando este modelo calcular de modo aproximado la cantidad Y esperada cuando X = 15. 7.
De una muestra de 8 observaciones conjuntas de valores de dos variables X e Y se obtiene la siguiente información:
118
Métodos Numéricos con MatLab
Ing.: Willam Caiza
. Obtener la recta de regresión de Y sobre X. Explicar el significado de los parámetros. Calcular el coeficiente de determinación. Comentar el resultado e indicar el porcentaje de variación de Y que no está´ explicado por el modelo de regresión lineal. Si el modelo es adecuado. ¿C uál es la predicción para un valor de x = 4? Obtener la recta de regresión de X sobre Y.
a) b) c) d)
8.
La tabla siguiente contiene la edad X y la máxima de la presión sanguínea Y de un grupo de 10 mujeres:
Edad 56 42 72 36 63 47 55 49 38 42 Presión 14.8 12.6 15.9 11.8 14.9 13.0 15.1 14.2 11.4 14.1 a) Calculad el coeficiente de correlación lineal entre las variables y decid que indica. b) Determinad la recta de regresión de Y sobre X, justificando la adecuación de un
modelo lineal. Interpretar los coeficientes. c) Valorad la bondad del modelo. d) Haced las predicciones siguientes, sólo cuando crea que tengan sentido: d.1) Presión sanguínea de una mujer de 51 años. d.2) Presión sanguínea de una niña de 10 años. d.3) Presión sanguínea de un hombre de 54 años.
9. Se ha llevado a cabo un ajuste lineal a una nube de puntos formada por observaciones de dos variables X e Y y se ha obtenido un coeficiente de determinación de 0.03. Discutid si las siguientes afirmaciones son ciertas y p or qué: a) El coeficiente de correlación lineal entre X e Y valdrá´ 0.173. b) La covarianza entre X e Y puede ser negativa. c) Las variables X e Y son casi independientes. d) El coeficiente de determinación entre −X e Y valdrá´ -0.03. e) El coeficiente de determinación entre −X y −Y valdrá´ 0.03.
f) Solo el 3% de la variabilidad total de Y queda sin explicar en el modelo. 10. Dada la siguiente distribución bidimensional encontrar el modelo de regresión (lineal o parabólica) que mejor se ajuste a la nube de puntos. xi 1 1 2 3 4 5 5 6 yi 13 15 18 19 21 16 20 14
119
Métodos Numéricos con MatLab
Ing.: Willam Caiza
11. Los datos siguientes forman parte de un anuncio publicado por un joyero de Singapur en el periódico Strauss Times el 29 de febrero de 1992. Estos datos hacen referencia al precio (en dólares de Singapur) de anillos que llevan un diamante. El tamaño de un diamante, que se indica en quilates (1 quilate=200 mg). tamaño 0.17 0.16 0.17 0.25 0.16 0.15 0.21 0.15 precio 355 328 350 675 342 322 483 323 tamaño 0.16 0.17 0.16 0.17 0.18 0.23 0.23 0.12 precio 345 352 332 353 438 595 553 223
Ajustar un modelo lineal a estos datos y decidid si el ajuste obtenido es bueno. Comprobad si se cumplen para los residuos las suposiciones de independencia y de varianza constante.
120
Métodos Numéricos con MatLab
Ing.: Willam Caiza
CAPITULO V: INTERPOLACION 5.1 INTERPOLACIÓN En numerosos fenómenos de la naturaleza observamos una cierta regularidad en la forma de producirse, esto nos permite sacar conclusiones de la marcha de un fenómeno en situaciones que no hemos medido directamente. La interpolación consiste en hallar un dato dentro de un intervalo en el que conocemos los valores en los extremos.
En el capítulo anterior se desarrolló la regresión lineal, en el cual se encontraba una función que ajuste a los datos, en este capítulo encontraremos funciones que pasen por puntos dados a lo cual se reconoce con el nombre de interpolación. Dados los puntos de grado n.
1 , , , , . , , puntos
el polinomio interpolador es
5.2 INTERPOLACIÓN INVERSA. Los procesos de interpolación pueden ser utilizados para encontrar las raíces de una función tabular. La siguiente ecuación nos muestra un polinomio de orden 2.
− ∗∗ −− ∗
Al realizar la interpolación se debe realizar el siguiente despeje:
− ∗
El resultado de la interpolación es resultado de la siguiente expresión, X=
Ejemplo 1: Dados los siguientes puntos encontrar el polinomio interpolador, de grado 2.
Nota
2 3 46 21
Antes de evaluar los puntos y obtener las ecuaciones de cálculo del polinomio interpolador se debe ordenar los valores de ‘x’ en forma ascendente independiente de cualquier valor ‘y’.
121
Métodos Numéricos con MatLab
Desarrollo
Ing.: Willam Caiza
, 342 2164 1366
El polinomio de grado 2, podría ser de la para el punto (2,3) se tiene la siguiente ecuación , de idéntica forma para los demás puntos.
4 2 1 13 66 46 11 4 2 1 1 0 0 − 1366 46 11 ⋮ 00 10 01 4 2 1 1 0 0 − 360 46 31 ⋮ 0 4 01 01 4 2 1 1 0 0 − 00 124 38 ⋮ 49 10 01 4 2 1 1 0 0 − 00 124 38 ⋮ 49 10 01 4 2 1 1 0 0 − 00 40 31 ⋮ 43 31 01 4 2 0 2 3 1 − 00 04 01 ⋮ 53 83 31 1 0 0 0. 1 25 0. 2 5 0. 1 25 − 00 10 01 ⋮ 1,325 32 0.175
De las ecuaciones evaluadas se obtiene la siguiente matriz.
Al aplicar Gauss y Gauss-Jordan se calcula la matriz inversa. Aplicando Gauss. F2
F2-4*F1
F3
F3-9*F1
F2
F2-(1/3)*F1
F3
F3-3*F2
F2
F2+3*F3 y F1
F1
F1+(1/2)*F2
F1-*F3
Aplicando Gauss-Jordan.
F1
(1/4)*F1 y F2
(-1/4)*F2
− ∗
Una vez encontrada la inversa aplicamos la formula X=
122
Métodos Numéricos con MatLab
Ing.: Willam Caiza
0. 1 25 − ∗ 1,25
0.225 0.0.12575∗32 1 3 3 1 0 0.4 5 0.0 5 0. 54 4
Interpretando el resultado para el polinomio interpolador se coloca la primera letra como el valor de mayor grado y así sucesivamente.
Ejemplo 2: Existe otra forma de encontrar el polinomio interpolador y es mediante el uso de determinantes, para su mayor entendimiento se procede a realizar el cálculo del Ejemplo 1.
342 2164 1366
Para hallar los coeficientes a,b y c realice la resolución del sistema de ecuaciones usando el método de Cramer. Desarrollo
32 24 11 1 21224 184 2626 0 114 6624 111 1696721442432 184200 16 34 6 36 11 1 6 2 1 16108 17442432 2448 132124 8 1 314 66 214 111 1869672 184200 16 2 34 6 26 31 13 66 46 21 16288144 4324832 448512 64 4 41 6 24 11 169672 1442432 184200 16 3661 EL resultado es el mismo obtenido con el método anterior.
123
Métodos Numéricos con MatLab
Ing.: Willam Caiza
0.0 5 54∗4 0. 5.3 INTERPOLACIÓN DE NEWTON
, , …
En ocasiones es útil considerar varios polinomios aproximados después, elegir el más adecuado a las necesidades. Los polinomios interpoladores de Newton se calculan mediante un esquema recursivo.
y,
… ⋯− − − … − , , … , − , , ,,−, ,… , , , , se obtiene a partir de
Se dice que
usando la recurrencia.
es un polinomio de Newton con centros
.
Calculo mediante diferencias divididas Donde los coeficientes decir:
Calculo de
Calculo de
,
,…
, se puede calcular mediante diferencias divididas, es
se define de la siguiente forma:
se define de la siguiente forma:
124
Métodos Numéricos con MatLab
Calculo de
, ,
Ing.: Willam Caiza
, se define de la siguiente forma:
, , , ,
, , , , Ejemplo 3: Calcular el polinomio de Newton usando los siguientes puntos (2,3), (4,2), (6,1). Para un polinomio de Grado 2. Desarrollo
Paso 1: El polinomio de Newton debe estar de la siguiente forma como se verá a continuación.
, , 3 , , 23 42 , ,
Paso 2: El cálculo de los coeficientes
. Se presenta a continuación.
125
Métodos Numéricos con MatLab
Ing.: Willam Caiza
2 1 1 2 , , , , 2 1 1 0 2 0 21 23 646242
Paso 3: Una vez conocidos los coeficientes procedemos a formar el polinomio de Grado 2.
3 12 2
Ejemplo 4: Calcular el polinomio de Newton usando los siguientes puntos (3,5), (4,7), (6,2). Para un polinomio de Grado 2. Desarrollo
Paso 1: El polinomio de Newton debe estar de la siguiente forma como se verá a continuación.
, , 5 , , 75 43 , , 2 1 1 2 , , , , 2 1 2 0 1 0 Paso 2: El cálculo de los coeficientes
. Se presenta a continuación.
126
Métodos Numéricos con MatLab
Ing.: Willam Caiza
27 75 646343
52 3 32 3 4
Paso 3: Una vez conocidos los coeficientes procedemos a formar el polinomio de Grado 2.
Programa de Interpolación de Newton en consola.
function calcular_Callback(hObject, eventdata, handles) % hObject handle to calcular (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) g=get(handles.dimension, 'Value');%Toma la dimension que se desee el polinomio t=(get(handles.tabla, 'data'));%Toma los datos de la tabla t=str2double(t); xt=t(:,1); fx=t(:,2); x=xt'; d=zeros(length(fx)); %El tamaño de la tabla d(:,1)=fx; for k=2:length(x) for j=1:length(x)+1-k d(j,k)=(d(j+1,k-1)-d(j,k-1))/(x(j+k-1)-x(j)); %Realiza la operacion del Polinomio de Newton end end %Formacion del polinomio for w=1:length(x) ds=num2str(abs(d(1,w))); %Estas condiciones que se observan sirven para colocar %al polinomio de forma que tenga el valor positivo if w>1 if x(w-1)<0 sg1='+'; else sg1='-'; end end if d(1,w)<0 sg2='-'; else sg2='+'; end if w==1 acum=num2str(d(1,1)); elseif w==2 polact=['(x' sg1 num2str(abs(x(w-1))) ')'];%Toma al polinomio para que siempre sea positivo actual=[ds '*' polact];% y colocarlo de sea manera para visualizarlo acum=[acum sg2 actual]; % en consola
127
Métodos Numéricos con MatLab
Ing.: Willam Caiza
else polact = [polact '*' '(x' sg1 num2str(abs(x(w-1))) ')'];%Toma al polinomio para que siempre sea positivo actual = [ds '*' polact];% y colocarlo de sea manera para visualizarlo acum=[acum sg2 actual]; % en consola end end set(handles.resultado, 'string',acum); pol=inline(acum); fplot(handles.cuadro,pol,[min(x) max(x)]); grid on;%poner colores donde se encuentra el valor del polinomio interpolado zoom on; hold on; vx=(get(handles.valor, 'string')); vx=str2double(vx); if vxmax(xt) errordlg('ingrese un valor de x dentro del intervalo de valores de x de la tabla asi sera posible visualizar el punto' ,'Error!'); end p=(get(handles.resultado, 'string'));%Para visualizar el polinomio en consoola p=inline(p); s=(feval(p,vx)); %Aqui evalua los valores obtenidos del polinomio s=num2str(s); %Para poder graficar en consola set(handles.solucion, 'string',s);%visualizacion del resultado del polinomio s=str2double(s); %Se combierte en string para que se visualizara en edit text plot(vx,s,'ko');%Para Graficar el en grafico del guide hold off
128
Métodos Numéricos con MatLab
Ing.: Willam Caiza
5.4 INTERPOLACIÓN DE LAGRANGE
1 , = ∏=≠ , , , , … …, , = , , …. . ,
En la interpolación de Lagrange implica en la construcción de un polinomio interpolador de grado que pasa por puntos como se puede observar de la forma
Donde
es:
Ahora se puede escribir el polinomio interpolador de grado n, de una función puntos .
en los
A continuación se encuentra un polinomio de grado 1 y de grado 2.
Polinomio de Grado 1 Paso 1: Como es un polinomio de grado 1, los puntos a tomar en consideración son de 0 a 1, como se presenta a continuación .
, , , = , 1 =
129
Métodos Numéricos con MatLab
Ing.: Willam Caiza
, , ,, ∏=≠ ∏=≠ ∏=≠ , , , , , , = ; 2 = , , , , ,,, ∏=≠
Paso 2: nuestro polinomio de grado 1. Paso 3: Debemos obtener los valores de y los de , los valores de son conocidos como datos del ejercicio, los datos no conocidos son los , que se procede a calcular de la siguiente manera.
Paso 4: Obtenidos los valores de interpolador es el siguiente:
, se procede a formar el polinomio
Polinomio de Grado 2 Paso 1: Como es un polinomio de grado 1, los puntos a tomar en consideración son de 0 a 1, como se presenta a continuación .
Paso 2: nuestro polinomio de grado 2. Paso 3: Debemos obtener los valores de y los de , los valores de son conocidos como datos del ejercicio, los datos no conocidos son los , que se procede a calcular de la siguiente manera.
130
Métodos Numéricos con MatLab
Ing.: Willam Caiza
∏=≠ ∏=≠ ∏=≠
Paso 4: Obtenidos los valores de interpolador es el siguiente:
,
, se procede a formar el polinomio
Ejemplo 5:
Calcular el polinomio de Lagrange usando los siguientes puntos (1,-2), (-3,1). Para un polinomio de grado 1. Desarrollo
= ; 1 ∏=≠ , ∏=≠
Paso 1: Para efectuar la resolución del problema se utilizara las siguientes formulas.
Paso 2: Debemos encontrar los valores de siguientes resultados.
. Donde obtenemos los
131
Métodos Numéricos con MatLab
Ing.: Willam Caiza
133 ∏=≠ 1 31 , , 2 1
Paso 3: Se debe obtener los valores de que se dieron como datos.
esos valores se obtiene de los puntos
Paso 4: Encontrados todos los valores por obtener se procede a formar el polinomio de Lagrange
Paso 5: Efectuando una simplificación del polinomio que de la siguiente forma.
Ejemplo 6: Calcular el polinomio de Lagrange usando los siguientes puntos (-2,1), (0,-1), (2,3). Para un polinomio de Grado 2. Desarrollo
= , 2 ∏=≠ , ,
Paso 1: Para efectuar la resolución del problema se utilizara las siguientes formulas.
Paso 2: Debemos encontrar los valores de siguientes resultados.
. Donde obtenemos los
132
Métodos Numéricos con MatLab
Ing.: Willam Caiza
∏=≠ 0 22 2 20 0 22 2 20 ∏=≠ 2 2 02 02 2 2 02 02 ∏=≠ 0 2 22 20 0 2 22 20 , ,
Paso 3: Se debe obtener los valores de puntos que se dieron como datos.
esos valores se obtiene de los
Paso 4: Encontrados todos los valores por obtener se procede a formar el polinomio de Lagrange
1 82 1 24 2 3 82
Paso 5: Efectuando una simplificación del polinomio que de la siguiente forma.
133
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Programa de Interpolación de Lagrange en consola. % INTERPOLACION "POLINOMIO DE LAGRAGE" clc %permite borrar el area de trabajo clear %permite borrar las variables almacenadas format long%permite utilizar la maxima capacidad de la maquina fprintf('INTERPOLACION "POLINIMIO DE LAGRAGE"\n\n\n' ); %fprintf me permite ingresar comentarios de manera textual que pueden %orientar al usuario en el uso del programa xi=input('Ingrese los puntos pertenecientes a las x: ' ); yi=input('Ingrese los puntos pertenecientes a las y: ' ); %input es un comando de solicitud de entrada de datos del usuario. n=length(xi); x=sym('x'); %esta funcion nos permite dejar la variable 'x' como simbólica % y asi poder trabajar con ella, sin tener que asignarle un valor. for j=1:n producto=1; for i=1:j-1 producto=producto*(x-xi(i)); %calculo del producto 1 superior de L end producto2=1; for i=j+1:n producto2=producto2*(x-xi(i)); %calculo del producto 2 superior de L end producto3=1; for i=1:j-1 producto3=producto3*(xi(j)-xi(i)); %calculo del producto 3 inferior de L end producto4=1; for i=j+1:n producto4=producto4*(xi(j)-xi(i)); %calculo del producto 4 inferior de L end L(j)=(producto*producto2)/(producto3*producto4); %cálculos de las L para fprintf('\n L%d:\n',j-1) %poder hallar el polinomio disp(L(j)) %la función dispo nos permite visualizar variables o texto % en el workspace end pn=0; for j=1:n pn=pn+L(j)*yi(j); %calculo del polinomio interpolante end fprintf('\n POLINOMIO INTERPOLANTE: \n' ) %disp(pn) % esta ejecucion la podemos utilizar cuando no necesitamos %simplicar la expresion pn = simple(pn); %este comando nos permite simplificar toda la expresion disp(pn) opc=input('\nDesea aproximar un valor (si/no): ' ,'s'); %este comando nos permite saber si el usuario quiere obtener una %aproximacion de un punto dado, en el polinomio que se acaba de obtener if opc=='si' x=input('\nIngrese el punto a aproximar: ' ); y=eval(pn); %evaluar el punto en el polinomio disp('\nLa aproximacion a f(x) es:' ) disp(y) end
134
Métodos Numéricos con MatLab
Ing.: Willam Caiza
5.5 INTERPOLACIÓN POR SPLINES. La definición de spline hace referencia a una amplia clases de funciones que son utilizadas en aplicaciones que requieren la interpolación de datos o un suavizado de curvas. Las funciones para la interpolación de splines normalmente se determinan como minimizadores de la aspereza sometida a una serie de restricciones.
5.5.1 SPLINE LINEAL. Este es el caso más sencillo. En él, vamos a interpolar una función f(x) de la que se nos dan un número N de pares (x,f(x)) por los que tendrá que pasar nuestra función polinómica P(x). Esta serie de funciones nuestras van a ser lineales, esto es, con grado 1: de la forma P(x) = ax + b. Que se encargan de unir cada par de coordenadas mediante una recta. Dados los n+1 puntos: X y
…..
….
Una función spline de grado 1 que interpole los datos es simplemente unir cada uno de los puntos (Par coordenados) mediante segmentos de recta, como se ilustra en las siguientes figuras:
135
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Fig 1. Spline de grado 1 con seis puntos. Claramente esta función cumple con las condiciones de la spline de grado 1. Así, se tiene que para este caso:
Donde:
,
…∈ , …. .…∈, − − − …∈−,
1. (x) es un plinomio de grado menos o igual que 1. 2. S(x) tiene derivada continua de orden k-1=0. 3. S( )= para j=0,1,2,…,n Por lo tanto, el spline de grado 1 queda definido como:
Ejemplo 7:
∈ ,, ∈ ,, − , − ….− ∈−,
Interpolar con splines: f(1) = 1
en los puntos en los que x vale {1, 2, 4}
f(2) = 0.5 f(4) = 0.25 Desarrollo
El primer segmento
∗
deberá unir los primeros dos puntos de coordenadas
(1,1) y (2,0.5). Surge un sistema lineal de dos ecuaciones en dos incógnitas:
136
Métodos Numéricos con MatLab
1 0. 5 2 1 0. 521 1. 5 0.5 0, 5 ∗1, 5 0.0. 2554 2 0.125, 0.7
Ing.: Willam Caiza
(1) (2)
De (1) se obtiene: (3)
Reemplazando (3) en (2) se obtiene:
Luego
Reemplazando el valor de (b) en (1), se obtiene:
∗
Por lo tanto, se concluye que: El segundo segmento deberá unir el segundo punto (2,0.5) con el tercer punto (4,0.25). Análogamente a lo hecho para , en el caso de se obtiene: (1) (2)
Luego
= - 0.125x + 0.75
5.5.2 SPLINE CUADRÁTICO Los polinomios P(x) a través de los que construimos el Spline tienen grado 2. Esto quiere decir, que va a tener la forma P(x) = ax² + bx + c
Que las partes de la función a trozos P(x) pasen por ese punto. Es decir, que las dos Pn(x) que rodean al f(x) que queremos aproximar, sean igual a f(x) en cada uno de estos puntos. Que la derivada en un punto siempre coincida para ambos "lados" de la función definida a trozos que pasa por tal punto común. Esto sin embargo no es suficiente, y necesitamos una condición más. ¿Por qué? Tenemos 3 incógnitas por cada P(x). En un caso sencillo con f(x) definida en tres puntos y dos ecuaciones P(x) para aproximarla, vamos a tener seis incógnitas en total. Para resolver esto necesitaríamos seis ecuaciones, pero vamos a tener tan sólo
137
Métodos Numéricos con MatLab
Ing.: Willam Caiza
cinco: cuatro que igualan el P(x) con el valor de f(x) en ese punto (dos por cada intervalo), y la quinta al igualar la derivada en el punto común a las dos P(x). Se necesita una sexta ecuación, ¿de dónde se extrae? Esto suele hacerse con el valor de la derivada en algún punto, al que se fuerza uno de los P(x).
Con la 2da derivada se puede encontrar el punto de inflexión.
Con la 1ra deriva se puede encontrar los puntos críticos. X
Y
2
4
4
1
8
4
10
3
5 8; 4
2; 4
4
10; 3
3
Series1
2 1
4; 1
0 0
5
Al ser Cuadrática de la forma: La primera derivada seria: Y la segunda derivada seria:
10
15
0 20 2a=0
Pasos para la determinación del spline cuadrático: 1º Se forma por los puntos externos.
44 2 3100 10 116 4 116 4 464 8 464 8
2º Se forma por los puntos internos.
3º Derivadas internas.
138
Métodos Numéricos con MatLab
Ing.: Willam Caiza
8888 0 1616 16 16 0 2 0 −
4º Y por último la segunda derivada con los extremos.
Ax = b
El ejercicio pasamos a resolverlo en Excel, para encontrar los puntos de unión. a1 4 0 16 0 0 0 8 0 0
b1 2 0 4 0 0 0 1 0 0
c1 1 0 1 0 0 0 0 0 0
a2 0 0 0 16 64 0 -8 16 0
b2 0 0 0 4 8 0 -1 1 0
c2 0 0 0 1 1 0 0 0 0
a3 0 100 0 0 0 64 0 -16 1
b3 0 10 0 0 0 8 0 -1 0
c3 0 1 0 0 0 1 0 0 0
B 4 3 1 1 4 4 0 0 0
En el anterior cuadro están las ecuaciones, del punto 1,2 y 3 sin las constantes y B seria nuestra (Y).
0,250
-0,250
-0,250
-0,250
0,250
0,250
-2,000
1,500
2,000
1,500
-1,500
-1,500
4,000
-2,000
-3,000
-2,000
2,000
2,000
0,000
0,125
0,000
0,063
-0,063
-0,125
0,000
-1,500
0,000
-1,000
1,000
1,500
0,000
4,000
0,000
4,000
-3,000
-4,000
0,000
0,000
0,000
0,000
0,000
0,000
0,000
0,500
0,000
0,000
0,000
-0,500
0,000 -4,000 0,000 0,000 0,000 5,000 Estos datos es la matriz inversa de las ecuaciones de los puntos (Primer cuadro) 1,75 -12 21
139
Métodos Numéricos con MatLab
Ing.: Willam Caiza
-0,3125 4,5 -12 -2,6645E17 -0,5 8
Estos son los datos de la multiplicación entre la Matriz inversa y nuestra (B).
x 2,000 2,100 2,200 2,300 2,400 2,500 2,600 2,700 2,800 2,900 3,000 3,100 3,200 3,300 3,400 3,500 3,600 3,700 3,800 3,900 4,000
y 4,000 3,518 3,070 2,658 2,280 1,938 1,630 1,358 1,120 0,918 0,750 0,618 0,520 0,458 0,430 0,438 0,480 0,558 0,670 0,818 1,000
Esta tabla representa la ecuación:
x1 4,000 4,100 4,200 4,300 4,400 4,500 4,600 4,700 4,800 4,900 5,000 5,100 5,200 5,300 5,400 5,500 5,600 5,700 5,800 5,900 6,000
y1 1,000 1,197 1,388 1,572 1,750 1,922 2,088 2,247 2,400 2,547 2,688 2,822 2,950 3,072 3,188 3,297 3,400 3,497 3,588 3,672 3,750
0
x2 8,000 8,100 8,200 8,300 8,400 8,500 8,600 8,700 8,800 8,900 9,000 9,100 9,200 9,300 9,400 9,500 9,600 9,700 9,800 9,900 10,000
y2 4,000 3,950 3,900 3,850 3,800 3,750 3,700 3,650 3,600 3,550 3,500 3,450 3,400 3,350 3,300 3,250 3,200 3,150 3,100 3,050 3,000
, con la cual ya representa la unión del
par ordenado de los puntos y se forma la siguiente gráfica:
140
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Spline Cuadratico 4,5 4 3,5 3 2,5 2 1,5 1 0,5 0 0
2
4
6
8
10
12
5.5.3 SPLINE CUBICO Cada polinomio P(x) a través del que construimos los Splines en [m, n] tiene grado 3. Esto quiere decir, que va a tener la forma P(x) = ax³ + bx² + cx + d En este caso vamos a tener cuatro variables por cada intervalo (a, b, c, d), y una nueva condición para cada punto común a dos intervalos, respecto a la derivada segunda:
Como puede deducirse al compararlo con el caso de splines cuadráticos, ahora no nos va a faltar una sino dos ecuaciones (condiciones) para el número de incógnitas que tenemos.
:, →ℝ
Considere
y un conjunto de nodos
< <⋯< →ℝ |()( , + ) , + ̇ ++((++) ( ) 0, 1 , … , 2 + ̇ ) ( ) 0, 1 , … , 2 + ̈ +(+) ̈ (+) 0,1, … , 2 44 2 3100 10
Un spline cubico para f es una función S: [a, b] 1) 2) 3) 4) 5)
=
tal que:
es un polinomio cúbico en
para j= 0,1,…,n
para para para
Pasos para la determinación del spline cubico: 1º Se forma por los puntos externos.
2º Se forma por los puntos internos.
141
Métodos Numéricos con MatLab
Ing.: Willam Caiza
116 4 116 4 464 8 464 8 8888 0 1616 16 16 0 2 0 −
3º Derivadas internas.
4º Y por último la segunda derivada con los extremos.
Ax = b
Coordenadas:
x 2 4 8 10 4,5
y 4 1 4 3
8; 4
2; 4
4 3,5
10; 3
3 2,5 Series1
2 1,5 1
4; 1
0,5 0 0
2
4
6
8
10
12
Grafica de los puntos coordenados, sin la unión de las coordenadas. Al ser Cúbica de la forma:
0
142
Métodos Numéricos con MatLab
La primera derivada seria:
Ing.: Willam Caiza
3 20
La segunda derivada seria:
6ax + 2b=0
Y su tercera deriva seria:
6a = 0
Empezamos con las ecuaciones de los extremos y terminamos con las ecuaciones internas
Las ecuaciones representadas con las coordenadas. a1
b1
c1
d1
a2
b2
c2
d2
a3
b3
c3
d3
B
8
4
2
1
0
0
0
0
0
0
0
0
4
0
0
0
0
0
0
0
0
1000
100
10
1
3
64
16
4
1
0
0
0
0
0
0
0
0
1
0
0
0
0
64
16
4
1
0
0
0
0
1
0
0
0
0
512
64
8
1
0
0
0
0
4
0
0
0
0
0
0
0
0
512
64
8
1
4
48
8
1
0
-48
-8
-1
0
0
0
0
0
0
0
0
0
0
192
16
1
0
-192
-16
-1
0
0
24
2
0
0
-24
-2
0
0
0
0
0
0
0
0
0
0
0
48
2
0
0
-48
-2
0
0
0
12
2
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
60
2
0
0
0,023
-0,008
-0,023
-0,016
0,016
0,008
0,047
-0,016
-0,141
0,047
0,141
0,094
-0,094
-0,047
-0,281
0,094
-0,313
-0,063
0,313
-0,125
0,125
0,063
0,375
-0,125
2,000
0,000
-1,000
0,000
0,000
0,000
0,000
0,000
-0,016
0,016
0,016
0,016
-0,016
-0,016
-0,031
0,031
0,328
-0,234
-0,328
-0,281
0,281
0,234
0,656
-0,469
-2,188
1,063
2,188
1,375
-1,375
-1,063
-4,375
2,125
4,500
-1,500
-4,500
-1,000
2,000
1,500
9,000
-3,000
0,008
-0,023
-0,008
-0,016
0,016
0,023
0,016
-0,047
-0,234
0,703
0,234
0,469
-0,469
-0,703
-0,469
1,406
2,313
-6,438
-2,313
-4,625
4,625
6,438
4,625
-13,875
-7,500
18,500
7,500
15,000
-15,000
-17,500
-15,000
45,000
0
Estos datos representa la matriz inversa de las ecuaciones. 0,125
143
Métodos Numéricos con MatLab
Ing.: Willam Caiza
-0,750 -0,500 7,000 -0,109 2,063 -11,750 22,000 0,094 -2,813 27,250 -82,000
Este cuadro analiza la multiplicación de la matriz inversa con (B). x 2,000 2,100 2,200 2,300 2,400 2,500 2,600 2,700 2,800 2,900 3,000 3,100 3,200 3,300 3,400 3,500 3,600 3,700 3,800 3,900 4,000
y 4,000 3,800 3,601 3,403 3,208 3,016 2,827 2,643 2,464 2,291 2,125 1,966 1,816 1,675 1,543 1,422 1,312 1,214 1,129 1,057 1,000
Esta tabla representa la ecuación:
x1 4,000 4,200 4,400 4,600 4,800 5,000 5,200 5,400 5,600 5,800 6,000 6,200 6,400 6,600 6,800 7,000 7,200 7,400 7,600 7,800 8,000
y1 1,000 0,929 0,913 0,946 1,024 1,141 1,291 1,470 1,672 1,892 2,125 2,365 2,608 2,848 3,079 3,297 3,496 3,671 3,817 3,928 4,000
0
x2 8,000 8,200 8,400 8,600 8,800 9,000 9,200 9,400 9,600 9,800 10,000
y2 4,000 4,028 4,016 3,968 3,888 3,781 3,652 3,505 3,344 3,174 3,000
, con la cual ya representa la
unión del par ordenado de los puntos y se forma la siguiente gráfica:
144
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Spline Cubico 4,5 4 3,5 3 2,5 2 1,5 1 0,5 0 0
2
4
6
8
10
12
CAPÍTULO VI: DERIVACIÓN NUMÉRICA
145
Métodos Numéricos con MatLab
Ing.: Willam Caiza
6.1 DIFERENCIACIÓN NUMÉRICA En los cursos de cálculo se define la derivada de ƒ en x0 como
′≈l→im ℎℎ ℎℎ 1 ≈ƒ ,
Una manera razonable de aproximar la derivada es
Para el caso de una función lineal, la aproximación dada por la expresión (1) resulta exacta para cualquier valor de h distinto de cero. Pero p ara cualquier función ƒ en general no siempre resulta exacta. A continuación se hace una estimación del error asociado a la aproximación dada por (1) usando el teorema de Taylor con un polinomio de grado 1.
2 .
<< 2 ℎ ℎ 2 ℎ. <<ℎ ℎℎ 2 ℎ. <<ℎ 3 ≈ ℎℎ ∶ | 2 ℎ| ƒ /4 , ℎ 0. 0 1 4 0. 0 1 ℎ 4 4 ℎ ′ ℎ 0.70355991.
si x = x0 + h, x - x0 = h, y reemplazando en (2) resulta:
si se despeja ƒ’(x0) entonces:
Observe que la ecuación (3) es más útil que la ecuación (1), ya que tiene un término que cuantifica el error y este se conoce como término de error.
Ejemplo 1:
Si se utiliza la fórmula (1) para calcular la derivada de h=0.01. ¿Cuál es la respuesta y cuál es su grado de precisión o error? Solución:
y con
146
Métodos Numéricos con MatLab
Ing.: Willam Caiza
2 ℎ2 0.01 ≤ 0.201 0.005 |≤1 4 << 4 0.01 < < ℎ | | 0.01< . 0 03573712 0.010. 4cos 4 0.707106781 ƒ , ƒ ´ 2 – ℎ, – 0 ℎ 2 ℎ. ℎ<< ´ℎ ℎ ℎ ′ ℎ ℎ 2 ℎ ℎ ∶ 2 ℎ 4 Se puede obtener una cota más precisa usando el hecho que De modo que
< 0.714142376 y la cota sería
Observe que si El error real es: 0.707106781 – 0.703559491 = 0.003547290186. Se puede obtener otra fórmula para aproximar la derivada usando la ecuación (2),
Si
Si se despeja
, reemplazando el valor de x se tiene :
resulta:
A la aproximación (1) se le llama fórmula de diferencia hacia delante y a la aproximación dada por (4) se le conoce como fórmula de diferencia hacia atrás, ambas fórmulas presentan el mismo error. Se puede obtener otra fórmula para aproximar la derivada con un error que involucre h2 usando un polinomio de grado 2 así:
ℎ – ℎ 2 6′ 5 ℎ ℎ 2 ℎ 6′′ ℎ. <1<ℎ ℎ ℎ 2 ℎ 6 ℎ . ℎ<2< ℎ ℎ ℎ 2ℎ ℎ , ℎ< < < < ℎ 1 ℎ ℎ , ℎ<< ℎ 6 2ℎ 6 ℎ ℎ ≈ 2ℎ 6 ℎ, ℎ<< ℎ Si se reemplaza
en (5) resulta:
Si se restan las anteriores ecuaciones, se tiene:
Ahora se despeja f ´(x0):
ƒ
La anterior fórmula para aproximar la derivada de se la conoce como diferencia centrada.
147
Métodos Numéricos con MatLab
Ing.: Willam Caiza
En las figuras 6.1 y 6.2 se ilustran las aproximaciones dadas por las ecuaciones (1) y (6).
Imagen 6.1 Función
Imagen 6.2: Función
Considere la ecuación de diferencias centradas (6).
ℎ2ℎ ℎ ℎ 16ℎ ℎ , ℎ<< ℎ 6 ℎ
La aproximación a la derivada es , y el error en la aproximación es El error se denomina error por truncamiento por que es provocado por el truncamiento de la serie de Taylor. La precisión finita de la máquina produce otro error denominado error por redondeo.
148
Métodos Numéricos con MatLab
Ing.: Willam Caiza
ℎ ℎℎ ℎ ℎ ̅ ℎℎ ̅ ℎ ℎ ℎ ̅ℎℎ ̅ℎ ℎ, ̅ℎ ℎ ̅ℎℎ ℎ ℎ 2ℎ 2ℎ 2ℎ ̅ ℎ2ℎ ̅ ℎ ℎ2ℎ ℎ ℎ6 Este error aparece en el cálculo de en el numerador de la aproximación ya que si al evaluar se encuentra que ) son los errores del redondeo, entonces los valores calculados en la máquina se relacionan con los valores verdaderos por las ecuaciones:
Luego el error total en la aproximación es:
Error de redondeo
error por
truncamiento Como se puede apreciar, tiene una parte debida al error del redondeo y otra al error de truncamiento. Si se supone que los errores de redondeo e(x0 ± h) están acotados por algún número > 0 y la tercera derivada de ƒ está acotada por M > 0, entonces:
Por tanto
ℎ2ℎ ℎ≤ 2ℎ2 ℎ | ℎ6 | ≤ ℎ6 ̅ ℎ2ℎ ̅ ℎ≤ ℎ ℎ6 ℎ ℎ ℎ 6 0.5 10−.
Si la cota para el error se denota con e (h), entonces:
Si se quisiera reducir el error de truncamiento
se escogería un valor de h pequeño,
pero al mismo tiempo un h pequeño hace que el error por redondeo
sea grande.
Como los valores de ƒ se dan normalmente con t cifras decimales se puede suponer que el
error de redondeo está acotado por En la práctica no es posible calcular un valor óptimo h ya que sólo se conocen algunos valores de ƒ y no se conoce la tercera derivada. Lo que se debe tener presente es que con la
reducción de h no siempre se mejora la aproximación.
6.3 INTEGRACIÓN NUMÉRICA La deducción de las fórmulas de cuadraturas puede hacerse a partir de la interpolación polinomial. Luego aproximamos la integral de f(x) por la integral del polinomio de grado n la formula resultante se llama “Fórmula de Cuadratura de Newton- Cotes”. Sea la partición de [a,b], definido x=a
149
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Imagen 6.3 Integración Numérica
i. ii. iii. iv.
∫ ≈ ∫ ≈ 4 ∫ ≈ 3 3 ∫ ≈ 7 32 12 32 7 REGLA DEL TRAPECIO
REGLA DE SIMPSON REGLA DE DE SIMPSON REGLA DE BOOLE
6.4 REGLA DEL TRAPECIO
Figura 6.4: Regla del trapecio
f xdx h (f f ); 2
La fórmula del Trapecio es
Regla del trapecio
,−, …. . 0 0 ℎ h ; donde n es el numero de intervalos
Sean las particiones de [a, b] definida como una sucesión de términos y y , k=0,1,2……n Estas particiones son equidistantes es decir Que tiene [a, b]
Ejemplo 2:
Dado a=3 y b=7 encontrar las particiones del intervalo [a,b] si n=5
150
Métodos Numéricos con MatLab
Ing.: Willam Caiza
ℎ 735 45 0ℎ30.4 45 319 1ℎ3 5 5 2ℎ32. 454 23275 3ℎ33. 54 315 4ℎ34. 54 5 5ℎ35. 7 5 3, , , , , 7 , , , , , ℎ, ∈ 0 , 0 ℎ
Desarrollo
Entonces
Es decir
Propiedades de partición equidistante 1. 2. 3. Ejemplo 3:
GRAFICO CUADERNO
2ℎ22 1ℎ213 1 4 3ℎ23 1 5 6 4ℎ24 1 5ℎ2517 n=5
Calculando las particiones tenemos: 1.
1 3 131 1ra Verificación 1.
)
3 - 5 = (-2)(1) 2=2
151
Métodos Numéricos con MatLab
Ing.: Willam Caiza
521 XX ℎ 3 , ∈0, 5 si t0 2da Verificación de
7 – 4 = 3 3=3 2da Verificación de 2. 1ra Verificación de 2.
x – 5 = 1 ( 0 – 3 ) x = -3 + 5 x=2
XX ℎ 3 , ∈0, 5 si t5 x – 2 = 1 ( 5 – 0 ) x=5+2 x=7 3ra Verificación de 2.
XX ℎ 4 , ∈0, 5 si t2 x – 6 = 1 ( 2 – 4 ) x=-2+6 x=4 Ejemplo 4:
h f xdx 2 (f a f b) : f xd xP xdx Para el caso de la Regla del Trapecio: n1 f xdx≈P xdx P xdx;n1 método de trapecio L x f x d x (L x f x L x f x ) dx = f x L xdx f x L xdx f x ∫ −− dx f x ∫ −− dx (1)
152
Métodos Numéricos con MatLab
Ing.: Willam Caiza
153
Métodos Numéricos con MatLab
function pushbutton1_Callback(hObject, eventdata, handles) funcion=char(inputdlg('ingrese la funcion')); n=str2double(inputdlg('cuantos numeros desea ingresar')); f=inline(funcion); for i=1:n etiqueta=['x( ' num2str(i) ')=']; x(i)=str2double(inputdlg(etiqueta)); end %%codigo para uniciar un contador y asignar una sentencia de salida de un mensaje al iniciar el programa for i=1:n y(i)=f(x(i)); end %%Inicio de una sentencia para almacenar los valores ingresados en una función opcion=str2double(inputdlg('elija la opcion 1 o 2'));%%codigo de salida para mensaje de elegir una opcion switch opcion case 1 h=x(2)-x(1); integral=(f(x(2))-f(x(1)))*(h/2); ex=x(1):0.1:x(2); [fx cx]=size(ex) %%comando para crear dos opciones para el usuario y realizar el trapecio.. for i=1:cx ff(i)=f(ex(i)); end plot([x(1)-5 x(2)+5],[0 0]); hold on; plot([0 0],[max(ff)+3 min(ff)-3]); area(ex,ff);
Ing.: Willam Caiza
case 2 s=0; for i=2:n-1 s=s+2*f(x(i)); end h=x(2)-x(1); integral=(h/2)*(f(x(1))+s+f(x(n))); set(handles.text2,'string',integral); xx=x(1):0.1:x(n); [fxx cxx]=size(xx); for i=1:cxx yy(i)=f(xx(i)); end plot([x(1)-5 x(2)+5],[0 0]); hold on; plot([0 0],[max(ff)+3 min(ff)-3]); area(xx,yy); %%mediante las lineas de este codigo nosostros sacaremos el area es decir la integral de la función ingresada y también los puntos máximos y minimos. end for i=1:n etiqueta=['x(' num2str(i) ')=']; x(i)=str2double(inputdlg(etiqueta)); end%%con este codigo solo añadimos una etiqueta para mostrar los resultados for i=1:n y(i)=f(x(i)); end h=x(2)-x(1); integral=(f(x(2))-f(x(1)))*(h/2);Las lineas de este codigo son para calcular el metodo de trapecio por medio de la formula.
ex=x(1):0.1:x(2); [fx cx]=size(ex); for i=1:cx ff(i)=f(ex(i)); end set(handles.text2,'String',integral);%%mostrar plot([x(1)-5 x(2)+5],[0 0]); las sentencias almacenadas en el codigo anterior. hold on; case 2 plot([0 0],[max(ff)+3 min(ff)-3]); s=0; area(ex,ff); [fx cx]=size(ex); %%con esta línea de código nos rive para for i=1:cx graficar los puintos y obtener la grafica de la ff(i)=f(ex(i)); función end %%para el caso 2 iniciamos una variable en 0 para realizer un contador, y con el siguiente código obtenemos la dimensión de la función ingresada,
154
Métodos Numéricos con MatLab
Ing.: Willam Caiza
plot([x(1)-5 x(2)+5],[0 0]);%%el codigo plot sirve para realizer la grafica de los puntos correspondientes hold on; plot([0 0],[max(ff)+3 min(ff)-3]); area(ex,ff); set(handles.text2,'String',integral); Algoritmo del Trapecio
Figura 6.5 : Ejecución del programa
6.1.2 Regla del Trapecio Múltiple
á : ℎ2 ( ℎ) ℎ2 ( ) ℎ2 ( ) ℎ2 ( ) 2 2 ( ) 2 2 : Imageb 6.6: regla del trapecio Múltiple
155
Métodos Numéricos con MatLab
Dado
∫
Ing.: Willam Caiza
− ( ) = , calcular:
Utilizar la Regla del Trapecio Utilizar la Regla del Trapecio 3 veces Utilizar la Regla del Trapecio 5 veces
73 ℎ 4 1 ℎ 4 ( 3 7 ) 9 49 116 2 2 733 43 ℎ 3 438 13173 3 3 3 347 ℎ 13 ℎ 13 17 ℎ 17 3 7 2 3 2 3 3 2 3 ℎℎ2 3 2169 1332289 1737 2 92 9 2 9 49106,518 735 45 ℎ 3 454 1 19235 3 54 2 275 3 54 3 315 3 54 4 5 3 5 5 7
RESOLUCION
156
Métodos Numéricos con MatLab
Ing.: Willam Caiza
ℎ 19 ℎ 19 23 ℎ 23 27 3 2 5 2 5 5 2 5 5 ℎ 27 31 ℎ 31
2 5 5 2 5 7 235227523157 2 ℎ2 336121952 5 92 25 25292527292529612549105,76
Algoritmo Trapecio Multiple
function pushbutton1_Callback(hObject, eventdata, handles) funcion=char(inputdlg('ingrese la funcion')); f=inline(funcion); n=str2double(inputdlg('ingrese numero de particiones')); for i=1:n etiqueta=['x(' num2str(i) ')=']; x(i)=str2double(inputdlg(etiqueta)); end for i=1:n y(i)=f(x(i)); end % constante k=(x(n)-x(1))/(2*(n-1)); %sumatorio del trapecio interno s=0; for i=1:n-1 s=s+2*f(x(i)); end integral=k*(f(x(1))+s+f(x(n))); set(handles.text2,'String', integral); set(handles.text5,'String', funcion); set(handles.text7,'String', x);
%eje x plot([x(1)-2 x(n)+2],[0 0]); hold on; %eje y plot([0 0],[min(y)-2 max(y)+2]); %area de integración xx=x(1):0.1:x(n); [fxx cxx]=size(xx); for i=1:cxx yy(i)=f(xx(i)); end plot(xx,yy,'r'); area(xx,yy); %para graficar los puntos x0...xn for i=1:n cadena(i)=num2str(x(i)); end for i=1:n text(x(i),0,cadena(i)); end legend('Trapecio Múltiple');
157
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Imagen 6,8
b f xdx ≈ h fx04fx1f x2 a 3 f xdx P xdx, n2 = (0 0 1 1 2 2) 2 ∏0 0 ∗ 1 ∗ 2 ∗ h t 1 ∗ht2 f h∗2h hdtf ht 0h∗hht2 hdt ∗ht1 hdt f ht2h∗h
158
Métodos Numéricos con MatLab
Ing.: Willam Caiza
f 2h t 1t 2d tf h tt 2dt f 2 h tt 1dt ℎ − 2 2( ) = ; ℎ , 0,1,2,3,…, ℎ 1 ∗ℎ2 ℎ∗2ℎ ℎ ℎ 0ℎ∗ℎℎ2 ℎ ℎ ∗ℎ1 ℎ 2ℎ∗ℎ 2ℎ 1 2 ℎ 2 2ℎ 1 2ℎ 32 ℎ 2 2ℎ 2ℎ 3 32 2 20ℎ3 22 20 2ℎ 3 2 20 2ℎ 23ℎ 43 2ℎ 23 ( 4 ) R. Simpson 1/3
Algoritmo de Simpson
function calcular_Callback(hObject, eventdata, handles) %CODIGO DEL PROGRAMA(CALCULO DE AREA)
f=inline(get(handles.fx,'string')); a=str2num(get(handles.a,'string')); b=str2num(get(handles.b,'string')); n=str2double(get(handles.n,'string')); h=(b-a)/n; s=f(a)+f(b);%%con estos codigos solo convertimos las datos ingresamos a num, para poder utilizarlos en los otros códigos. for i=2:n x(i)=a+(i-1)*h; s=s+2*f(x(i)); %%iniciamos un contador con la sentencia for. end I=s*(h/2); set(handles.area,'string',I)%%mostramos el resultado en la pantalla del área..
%CODIGO PARA GRAFICA for i=1:n+1 x(i)=a+(i-1)*h; y(i)=f(x(i)); %%iniciamos el contador para almacenar los datos en una función end x=[x,b,a,a]; y=[y,0,0,f(a)]; fill(x,y,[0.8 0.4 0.9]); for i=1:n+1 x(i)=a+(i-1)*h; y(i)=f(x(i)); line([x(i),x(i)],[0,f(x(i))]); end hold on ezplot(f,[min(x):0.2:max(x)]) ylabel('F(X)'); grid 'on' set(handles.axes1,'xminorgrid','on'); set(handles.axes1,'yminorgrid','on');
159
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Botones de la máscara de interface Imagen6.9
I magen 6.6: Ejecución del programa
I 4−= 2−= Regla simpson multipl 160
Métodos Numéricos con MatLab
Ing.: Willam Caiza
6.6 REGLA SIMPSON 3/8
∫ ℎ( 3 3 ) = ∗ ∗ ∗ ∗ ∗ ∗ ∗ ∗ ℎ 1 ∗ℎ 2 ∗ℎ 3 ℎ ℎ∗2ℎ∗3ℎ 2 ∗ℎ 3ℎ ℎℎ ∗ℎ∗ℎℎ∗ℎ∗2ℎ 1 ∗ℎ3 ℎ∗ℎ2ℎ∗ℎ∗ℎ 1 ∗ℎ 2 ℎ 3ℎ∗2ℎ∗ℎ 6 1 2 3 2 2 3 2 1 3 6ℎ 1 2 6 332 3 ℎ 2ℎ 4 3 6 32 6 ℎ 3 2 5 2 4 3 3 30 6ℎ 46 3116 ℎ 3 2 4 3 2 0 6 4 30 Demostración:
Donde:
161
Métodos Numéricos con MatLab
Ing.: Willam Caiza
38 ℎ 98 ℎ 98 ℎ 38 ℎ ℎ 3 3 ∫
R. de 3/8 Simpson
Ejemplo 6: Dada
a) Integrar mediante el trapecio b) Integrar 5 veces mediante el trapecio c) Integrar 5 veces Simpson 1/3
RESOLUCION:
ℎ − 3 ℎ 3 ( 5 8 ) ( 5 8 ) 0. 0 456 2 2
a)
Valor real
Error
0.429 cos
0.4290.0.42904560.89×100%89% ℎ − ℎ 28 ℎ 28 31 5 2 5 2 5 5 ℎℎ2 31375 345 ℎ2 345375 2 5 8 103 5 22852315234523758 0.4162 b)
162
Métodos Numéricos con MatLab
Ing.: Willam Caiza
0.4290.0.42941620.03×100%3% ℎ − ℎ 23 26 5 4 3 4 4 ℎ3 26442948 14 5 42342264429480.42997 c)
2ℎ (7 32 12 32 7) 45 = Demostración:
Dónde:
∗ℎ 2 ∗ℎ 3 ∗ℎ4 ∗ ∗ ∗ ℎ 1ℎ∗2ℎ∗3ℎ∗4ℎ 2 ∗ℎ 3 ∗ℎ4 ∗ ∗ ∗ ℎ ∗ℎℎ∗ℎ∗2ℎ∗3ℎ 1∗ℎ 3∗ℎ4 ∗ ∗ ∗ ℎ∗ℎ2ℎ∗ℎ∗ℎ∗2ℎ ∗ℎ 2 ∗ℎ4 ∗ ∗ ∗ ℎ∗ℎ 13ℎ∗2ℎ∗ℎ∗ℎ 163
Métodos Numéricos con MatLab
Ing.: Willam Caiza
∗ℎ 2 ∗ℎ3 ∗ ∗ ∗ ℎ∗ℎ 14ℎ∗3ℎ∗2ℎ∗ℎ 24ℎ 1 2 3 4 6ℎ 2 3 4 4ℎ 1 3 4 6ℎ 1 2 4 24ℎ 1 2 3 24ℎ 329 712 6ℎ 5 6 4 4ℎ 4 3 4 6ℎ 3 2 4 24ℎ 3 2 3 24ℎ 10 35 5024 6ℎ 9 26 24 2ℎ 8 19 12 6ℎ 7 14 8 24ℎ 6 11 6 24ℎ 5 104 353 502 24 40 6ℎ 5 94 263 242 40 4ℎ 5 84 193 122 40 6ℎ 5 74 143 82 40 24ℎ 5 64 113 62 40 R. de Boole
164
Métodos Numéricos con MatLab
Ing.: Willam Caiza
6.8 INTEGRACION DE ROMBERG
ℎ ∫ ℎ − ℎ ℎ ℎ ℎ
Método de Integración de Romberg (extrapolación de Richardson) Sea , El método de Romberg utiliza la regla del trapecio, Donde es la integral dada por el método del trapecio y del método del trapecio.
es el error de truncamiento
El método combina dos aproximaciones de integración numérica para obtener un tercer valor aproximado más exacto Nivel 0
Nivel 1
Nivel 2
Nivel 3
h1 h2
ℎ ℎ ℎ ℎ ℎℎℎℎ ℎℎℎ ℎ ℎℎ ℎ ℎ ℎ ℎℎ 1211 ℎ 12 ℎℎ ℎℎ ℎℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎ ℎℎℎ ℎ ℎℎ ℎ ℎ 1 ℎ ℎ h3 Supongamos que tenemos dos aproximaciones: del mismo intervalo. h4 Igualando (1) y (2)
,
con
,
son subintervalos
(1) (2)
(A) El error que se comete con la regla del trapecio con n subintervalos está dado por: y
(B)
(B) en (A)
165
Métodos Numéricos con MatLab
Ing.: Willam Caiza
ℎ ℎℎℎ 1ℎ ℎ 1ℎ ℎℎℎ ℎ 1ℎℎℎℎ ℎ ℎ ℎℎℎℎ3 ℎ ℎ 13 ℎ 13 ℎ (C) en (2)
Para el caso de Romberg se tiene
;
(Nivel 1) El número de niveles de aproximación depende de las aproximaciones que se hicieron en el nivel 0. Para el nivel 2, se tiene la expresión de Romberg Donde =integral más exacta Y =integral menos exacta} Para el nivel 3, se tiene la expresión de Romberg
Aun cuando la regla del trapecio es la fórmula de Newton Cotes más sencilla de aplicar, hemos mostrado en las secciones anteriores que carece del grado de exactitud requerido generalmente. La integración de Romberg es un método que tiene aplicaciones muy variadas debido a que usa la regla del trapecio para dar aproximaciones preliminares y luego aplicar el proceso de extrapolación, para obtener correcciones a las aproximaciones
ALGORITMO DE ROMBERG Nivel 1
43 ℎ 13 ℎ
Donde, hm : Integral más exacta he : Integral menos exacta Integrar mediante Romberg
2 ∫ 1 2 2 0.416150.54030 0.95645 1 1
ℎ1, ℎ 12 ; ℎ 21 a) Nivel 0
166
Métodos Numéricos con MatLab
Ing.: Willam Caiza
230.87538 ℎ1 12111 4 ℎ12 4 1 2 2 2 0.93643 3 0.93643 3 0.87538 0.95678 9 5678| |0.956450. |0.95645| ∗1000.03% 12 , ℎ 14 ℎ1, ℎ 230.87538 ℎ1 12111 ℎ12 4 2 2 2 0.93643 ℎ14 18 1 2 54 32 74 2 0.95146 4 1 ℎ ℎ 3 3 434 0.93643 131 0.87538 0.95678 3 0.95143 3 0.93643 0.1695647 1 ℎ ℎ 15 15 1615 0.95647 151 0.95678 0.95645 | | 0 . 9 56450. 9 5645 |0.95645| ∗1000% 6463 ℎ 151 ℎ Error:
b) Nivel 0
Nivel 1
Nivel 2
Nivel 3
La Cuadratura de Gauss es el nombre que se le conoce a una clase de técnicas para realizar tal estrategia o técnica. Las fórmulas particulares de cuadratura de Gauss descritas se denominan fórmulas de Gauss-Legendre. Antes de describir el procedimiento, mostraremos que las fórmulas de integración numérica, al igual que la regla del trapecio, pueden lograr
167
Métodos Numéricos con MatLab
Ing.: Willam Caiza
obtenerse usando el método de coeficientes indeterminados. Este método se empleará después para desarrollar las fórmulas de Gauss-Legendre. El método de coeficientes indeterminados ofrece un tercer procedimiento que también tiene utilidad para encontrar otras técnicas de integración, como la cuadratura de Gauss. Para ilustrar el procedimiento, la ecuación se expresa como
Ecuación
donde las c = constantes. Ahora observe que la regla del trapecio deberá dar resultados exactos cuando la función que se va a integrar es una constante o una línea recta. Dos ecuaciones simples que representan esos casos son Y = 1 y Y = x. Ambas se ilustran en la figura Así, las siguientes igualdades se deberán satisfacer:
− / −−/ 1 − / 2 2 −−/
después de evaluar las integrales tenemos:
6.10 DESARROLLO DE LA FÓRMULA DE GAUSS-LEGENDRE DE DOS PUNTOS
Así como en el caso anterior para la obtención de la regla del trapecio, el objetivo de la cuadratura de Gauss es determinar los coeficientes de una ecuación de la forma
(1)
donde las c = los coeficientes desconocidos. Sin embargo, a diferencia de la regla del trapecio que utiliza puntos extremos fijos a y b, los argumentos de la función x 0 y x 1 no están fijos en los extremos, sino que son incógnitas De esta manera, ahora se tienen cuatro incógnitas que deben evaluarse y, en consecuencia, se requieren cuatro condiciones para determinarlas con exactitud. Representación gráfica de las variables desconocidas x 0 y x 1 para la integración por medio de la cuadratura de Gauss.
168
Métodos Numéricos con MatLab
Ing.: Willam Caiza
El método de integración numérica emplea intervalos desiguales o diferentes de los primeros métodos en los cuales los intervalos eran constantes e iguales. El método de Cuadratura Gaussiana, también se lo conoce como Gauss Legendre. La primera expresión del método se basa en el método del trapecio o de 2 puntos. Conocemos:
2 2 2 1 2, 1, , , 1212 − 1 2 0 − 2 1 2 − 3 12 −0 121 (1)
En la expresión 1 C1,C2,
Suponiendo que 1 ajusta exactamente la integral mediante una constante
Resolviendo el sistema anterior obtenemos
169
Métodos Numéricos con MatLab
Ing.: Willam Caiza
1√ 3 1 √ 1 √
Es la expresión de Gauss-Legendre par 2 puntos.
6.11 TRASLACIÓN DE LA CUADRATURA DE GAUSS – LEGENDRE Basado en optimizar también los intervalos en los que se evalúa la función • n+1 puntos, aproximación es exacta hasta polinomio orden n • n+1 puntos y n+1 intervalos (2n+2
variables), aproximación exacta polinomio orden 2n+1 Para aplicar la cuadratura de Gauss - Legendre en un intervalo [a;b], se debe efectuar el cambio de variable:
De esta manera,
. 2 2 2 .
Por lo tanto, la fórmula de cuadratura está dada por:
2 =, 2 , 2 Para la transformación de cualquier integral en [a,b[ a una integral de [-1,1], se tiene las siguientes transformaciones.
; 2 , 2 2 2 − 2 = ú ó á , Derivando obtenemos En general el método se puede escribir
170
Métodos Numéricos con MatLab
los
∈
Ing.: Willam Caiza
∈ 22 2 ∈
corresponden a una tabla, son los m ceros del m-avo polinomio de Legendre.
Tabl a para pesos y nodos para integración Gauss-L egendr e diferentes pun tos
Ek 2 puntos -0.577350269 0.577350269 3 puntos 0.774596669241 0 0.774596669241 4 puntos -0.861136312 -0.339981044 0.339981044 0.861136312
Wk 1 1 0.555555556 0.888888889 0.555555556 0.347854845 0.652145155 0.652145155 0.347854845
Ejemplo 7: Resolver la integral por Gauss-Legendre con m=4
; 4 0,4674011003 4 4 0,33998104361,052418651 4 4 0,33998104360,5183776762 4 4 0,8611361161,461733041 4 4 0,8611361160,1080632958 0,0,52487769211 33412695 0,232569837 ahora evaluamos la integral
171
Métodos Numéricos con MatLab
Ing.: Willam Caiza
0,01182412727 4 4 0,6521451549 0 , 5 487769211 0 , 6 521451549 0 , 2 33412695 0,3478548451 0 , 2 32569837 0,34785484510,01182412727 0,4673836586 entonces
Ejemplo 8:
Calcular la siguiente in tegral
, ) (, + , − 0,4; 0,4 0, 40,4 0, 4 . − 0,2 25 200 675 200 4000,4 1 para m=2 ,
1√ 3 √ 03,4 0,40,5773502692 0,169059892 0,4 0,40,5773502692 0,630940107 1,0,55167405448 05837233 1,822577778 Ejemplo 9:
172
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Calcule por el método de cuadratura de gauss la siguiente integral
Utilizando la formula de cuadratura de gauss de dos puntos tenemos
Entonces tenemos
2 2 212 212 12 32 2 − 2 2 1 2 − 12 32 12 − 12 32+ 12 13 13 1 2 2√31 32−√ + 2√31 32 √ + 7,3832 ∗ ∗
Ahora integraremos de la forma normal
Es una integral por partes
Evaluando los limites tenemos 7,3830
Ejemplo 10: Evaluar la siguiente integral por medio de la cuadratura de Gauss.
Solución analítica
− − √ 13√ 13
173
Métodos Numéricos con MatLab
Ing.: Willam Caiza
1 2 − 2 2 √ √ 12√ √ 1
Reemplazando valores tenemos [2(
14
1.-Integre la función siguiente en forma tanto analítica como la regla de Simpson, con n=4 y 5. Anracialice los resultados.
4x3 dx −
2.- Integre la función siguiente tanto en forma analítica como numérica. Emplee las reglas del trapecio y de Simpson 1/3 para integrar numéricamente la función. Para ambos casos, utilice la versión de aplicación múltiple, con n=4. Calcule los errores relativos porcentuales para los resultados numéricos.
x e dx
3.- Integre la función siguiente tanto analítica como numéricamente. Para las evaluaciones numéricas use a) una sola aplicación de la regla del trapecio, b) la regla de Simpson 1/3, c) la regla de Simpson 3/8, d) la regla de Boole, e) el método del punto medio, f) la fórmula de integración abierta de 3 segmentos y 2 puntos, y g) la fórmula de integración abierta de 4 segmentos y 3 puntos. Calcule los errores relativos porcentuales de los resultados numéricos.
15 dx
4.- Integre la función que sigue tanto en forma analítica como numérica. Para las evaluaciones numéricas utilice, a) una sola aplicación de la regla del trapecio; b) la regla de Simpson 1/3; c) la regla de Simpson 3/8; d) aplicación múltiple de las reglas de Simpson, con n=5; e) la regla de Boole; f) el método del punto medio; g) la fórmula de integración abierta de 3 segmentos y 2 puntos, y h) la fórmula de integración abierta de 4 segmentos y 3 puntos.
53cosx dx
174
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Calcule los errores relativos porcentuales para los r esultados numéricos.
5.- Suponga que la fuerza hacia arriba de la resistencia del aire sobre un objeto que cae es proporcional al cuadrado de la velocidad. Para este caso, la velocidad se calcula con
vt gcm tanh gmc t
c c
s
Donde =coeficiente de arrastre de segundo orden, a) Si g=9.8 m/ , m=68.1 kg y 0.25 kg/m, use integración analítica para determinar qué tan lejos cae el objeto en 10 segundos, b) Haga lo mismo, pero evalúe la integral con la regla del trapecio de segmento múltiple. Use una n suficientemente grande para detener tres dígitos significativos de exactitud. 6.- Evalué la integral de los datos tabulados a continuación, con a) la regla del trapecio y b) las reglas de Simpson: x f(x)
0 1
0.1 8
7. - Evalué la integral siguiente:
0.2 4
0.3 3.5
0.4 5
0.5 1
π 84cosx d x
a)en forma analítica; b)con una sola aplicación de la regla del trapecio; c)con aplicación múltiple de la regla de trapecio, con n=2y4; d)con una sola aplicación de la regla de Simpson1/3; e con la aplicación múltiple de la regla de Simpson1/3, con n=4; f)con una sola aplicación de regla de Simpson 3/8; g) con aplicación múltiple de la regla de Simpson 3/8, con n=5.
8. - Evalué la integral siguiente:
1e−dx
a)en forma analítica; b)con una sola aplicación de la regla del trapecio; c)con aplicación múltiple de la regla de trapecio, con n=2y4; d)con una sola aplicación de la regla de Simpson1/3; e con la aplicación múltiple de la regla de Simpson1/3, con n=4; f)con una sola aplicación de regla de Simpson 3/8; g) con aplicación múltiple de la regla de Simpson 3/8, con n=5.
9. - Evalué la integral siguiente:
1e−dx
a)en forma analítica; b)con una sola aplicación de la regla del trapecio; c)con aplicación múltiple de la regla de trapecio, con n=2y4; d)con una sola aplicación de la regla de Simpson1/3; e con la aplicación múltiple de la regla de Simpson1/3, con n=4; f)con una sola aplicación de regla de Simpson 3/8; g) con aplicación múltiple de la regla de Simpson 3/8, con n=5.
175
Métodos Numéricos con MatLab
Ing.: Willam Caiza
1x4x 2xdx −
10. - Evalué la siguiente integral:
a)en forma analítica; b)con una sola aplicación de la regla del trapecio; c)con aplicación múltiple de la regla de trapecio, con n=2y4; d)con una sola aplicación de la regla de Simpson1/3; e con la aplicación múltiple de la regla de Simpson1/3, con n=4; f)con una sola aplicación de regla de Simpson 3/8; g) con aplicación múltiple de la regla de Simpson 3/8, con n=5. Referencia4: métodos numéricos para ingenieros (sexta edición), autor: Steve C. Chapra, pág.: 572
CAPÍTULO VII: ECUACIONES DIFERENCIALES ORDINARIAS DE PRIMER ORDEN
176
Métodos Numéricos con MatLab
Ing.: Willam Caiza
7.1 ECUACIONES DIFERENCIALES ORDINARIAS DE PRIMER ORDEN Las ecuaciones diferenciales son una parte muy importante del análisis matemático y modelan innumerables procesos de la vida real. Una ecuación diferencial es una relación, válida en cierto intervalo, entre una variable y sus derivadas sucesivas. Su resolución permite estudiar las características de los sistemas que modelan y una misma ecuación puede describir procesos correspondientes a diversas disciplinas. Las ecuaciones diferenciales tienen numerosas aplicaciones a la ciencia y a la ingeniería, de Modo que los esfuerzos de los científicos se dirigieron en un principio, a la búsqueda de métodos de resolución y de expresión de las soluciones en forma adecuada.
Clasificación de las Ecuaciones Diferenciales
30 3 ;
Tipo
Una o más variables dependientes con respecto a una sola variable independiente.
Orden
El orden de una ecuación diferencial se toma de la derivada mayor en la ecuación.
y'''+ 3y'' - 3y' - y = 0 es una ecuación de orden 3
Linealidad
Una ecuación diferencial ordinaria de orden n es lineal cuando F (x, y, y',..., y(n)) = 0
− − +...+
7.2 MÉTODOS DE RUNGE-KUTTA Los métodos de Runge-Kutta se aplican a ecuaciones diferenciales que tienen la siguiente forma:
7.2.1 MÉTODO DE EULER
, + , ℎ, + ℎ
También se lo conoce a este método como método de Euler-Cauchy o de punto pendiente.
177
Métodos Numéricos con MatLab
Ing.: Willam Caiza
En donde se predice un nuevo valor de y, usando la pendiente (igual a la primera derivada en el valor original de x) para extrapolar linealmente sobre el tamaño de paso h.
Imagen 7.1: Ilustración gráfica del método de Euler
Ejemplo 1:
. ∈, . Utilizando el método de Euler calcule: En x con
y la condición inicial
.
Desarrollo
1.2 1.2 1.2 l n 31,−,2+ 11 −,∗+ 1 0
Resolviendo analíticamente la ecuación diferencial tenemos:
Obteniendo el valor de c mediante la condición inicial y(0)=1, entonces
178
Métodos Numéricos con MatLab
0
Ing.: Willam Caiza
, +
0
Error
1
-1,2
0,7
1
0
0,7
-0,79625
0,5009375
0,7446 0,059897932
1
0,25
2
0,5
0,5009375 -0,47589063
0,38196484
0,5721 0,124388219
3
0,75
0,38196484 -0,24350259
0,3210892
0,4679 0,183661373
4
1
0,3210892 -0,06421784
0,30503474
0,4203 0,236047593
5
1,25
0,30503474
0,11057509
0,33267851
0,4278 0,286968824
6
1,5
0,33267851
0,34931244
0,42000662
0,5091 0,346536024
7
1,75
0,42000662
0,78226233
0,6155722
0,7308 0,425278299
8
2
0,6155722
1,72360216
1,04647274
1,3056 0,528513939
Fórmulas: Tabla 1.1
Tabla 1.2
. Tabla 1.3
Tabla 1.4
Tabla 1.5
Tabla 1.6
179
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Ejemplo 2:
′,, .
Con el método de Euler integre numéricamente la ecuación h=1 pasos de 1
Condición
Desarrollo
0
1
, +
0
Error
2
3
5
6,40216371
4,70108186
1
6,70108186
5,55162279
12,2527046
13,6857774
9,61870008
2
2
16,3197819
11,6522387
27,9720207
30,1066952
20,879467
3
3
37,1992489
25,4930811
62,69233
66,7839558
46,1385184
4
4
83,3377673
56,4612371
139,799004
-65,8995022
-4,71913255
++ 23×1 , ×ℎ + 5 ′′++ 1+; 5, + ,∗ 0. 5 ∗5 ′′++ 6,440216 , 2+, + 36,420216 4,7010815 ++ 24, ∗ℎ7010815 + 6,7010815 ′4,00. 0,55 4∗ 1 0,8 Aplicando Laplace a la ecuación
180
Métodos Numéricos con MatLab
Ing.: Willam Caiza
4 8 2 0,5 0, 6 0,5 421, 0,8 6 0,5 421, 0,8 6 0,421, 8 ∗0,5 22, 4 0,8 ∗0,5 0,8 0,5 22,40,50,8 0,2 50,82,4 1413 , 4013 −, Aplicando fracciones parciales
Ejemplo 3: Con el método de Euler integre numéricamente la ecuación
+ , 2 12 208.5 12 208.5 2 2 12 208.5 2 4 10 8.5 4 0 1010 8.50 0,5 4 10 8,5 1
Desde x=0 hasta x=4 con un tamaño de paso 0,5. La condición inicial en x=0 es y=1. Desarrollo
1=
181
Métodos Numéricos con MatLab
Ing.: Willam Caiza
3,218755,252,03125 10,50,5;5,250,5 +120,5 200,58,5 5, 2 5 2 0 , 5 5,875 + 0,5, 00,10,5 y0 0,1 20+120 200 8,58,5 0,51,08,50,55,25 0,50,5+40,5 100,5 8,50,5 13,21872 Error:
O, expresada como error relativo porcentual,
-63,1.
En el segundo paso:
Tabla de comparación de los valores verdaderos y aproximados mediante el método de Euler. Se utiliza la ecuación para implementar el método de Euler:
Donde
=1 y la pendiente estimada en x=0 es:
Por lo tanto,
La solución verdadera en x=0,5 es:
x 0 0,5 1 1,5 2 2,5 3 3,5 4
y verdadero 1 3,21875 3 2,21875 2 2,71875 4 4,71875 3
y euler 1 5,25 5,875 5,125 4,5 4,75 5,875 7,125 7
global
local
-63,1 -95,8 131 -125 -74,7 46,9 -51 -133,3
-63,1 -28 -1,41 20,5 17,3 4 -11,3 -53
182
Métodos Numéricos con MatLab
Ing.: Willam Caiza
8 7 6 5 4
y verd
3
y euler
2 1 0 0
2
4
6
8
10
12
Figura 7.2 grafica del método de Euler en Excel
Ejemplo 4: Resuelva el siguiente problema de valor inicial
dydt yt 1.5y
En el intervalo de t=0 a 2, donde y (0) = 1. Muestre todos sus resultados en la misma gráfica.
Desarrollo EULER h=0,5 i xi y real 0 0 1.0000 1 0.5 0.4798 2 1 0.2865 3 1.5 0.3737 4 2 2.7183
f(xi,yi) 0 -1.5000 -0.3438 -0.0391 0.1099
yi+1 1 0.2500 0.0781 0.0586 0.1135
3,0000 2,5000 EULER h=0,25
2,0000
EULER h=0,5 1,5000
Y REAL
1,0000
PUNTO MEDIO
0,5000
RK CUARTO ORDEN
0,0000 0
1
2
3
Figura7.3 métodos de Runge Kutta
183
Métodos Numéricos con MatLab
Ing.: Willam Caiza
7.3 ANÁLISIS DEL ERROR PARA EL MÉTODO DE EULER La solución numérica de las EDO implica dos tipos de error: Errores de truncamiento: Originados por la naturaleza de las técnicas empleadas para aproximar los valores de y. Errores de redondeo: Causados por el número limitado de cifras significativas que una computadora puede retener. 7.3.1 ERRORES DE TRUNCAMIENTO Los errores de truncamiento se componen de dos partes: Error de truncamiento local: Que resulta de una aplicación del método considerado, en un solo paso. Error de truncamiento propagado: Que resulta de las aproximaciones producidas durante los pasos previos. La suma de los dos es el error total de truncamiento. 7.4 MEJORAS DEL MÉTODO DE EULER Un motivo fundamental de error en el método de Euler es suponer que la derivada al inicio del intervalo es la misma durante todo el intervalo. Hay dos modificaciones simples para evitar esta consideración y son: 1. Método de Heun 2. Método del punto medio Algoritmo de resolución de ecuaciones diferenciales por el método de Euler
184
Métodos Numéricos con MatLab
Ing.: Willam Caiza
PROGRAMA DEL MÉTODO DE EULER % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) f1=get(handles.edit1, 'string'); [1] f=inline(f1, 'x','y'); [2] x(1)=str2double(get(handles.edit2, 'string')); [3] xf(1)=str2double(get(handles.edit3, 'string')); [4] h=str2double(get(handles.edit4, 'string')); [5] yi=get(handles.edit5, 'string'); [6] y(1)=str2double(yi); [7] n=(xf-x)/h; [8] sol=strcat('Dy=',f1); [9] soly=strcat( 'y(0)=',yi); [10] in=dsolve(sol,soly,'x'); [11] inte=inline(in,'x','y'); [12] fun=string(in); [13] ff(1)=y(1); [14] a(1)=0; [15] for i=1:n [16] a(i+1)=i; [17] y(i+1)=y(i)+h*f(x(i),y(i)); [18] x(i+1)=x(i)+h; [19] ff(i+1)=inte(x(i+1),y(i+1)); [20] end [21] set(handles.edit6, 'string',fun); [22] set(handles.uitable1, 'data',[a',x',ff',y']); [23] plot(handles.axes1,x,y, 'b','linewidth',3); [24] legend EULER ORIGINAL [25] plot(handles.axes1,x,ff, 'r','linewidth',2) [26] hold(handles.axes1,'on'); [27] grid(handles.axes1,'on'); [28]
[1] Permite el ingreso de la función. [2] Ingresa la función con la sintaxis de Matlab. [3] Ingresa el valor inicial para evaluar. [4] Ingresa el valor final para evaluar. [5] Ingresa el valor de h que es el paso a usar (distancia entre puntos). [6] Ingresa la condición inicial para la resolución de la función. [7] Toma el valor de la condición inicial y lo transforma de caracteres a números. [8] Determina el número de repeticiones operando los valores ingresados. [9] Concatena la función original que se ingresó. [10] Concatena la condición inicial ingresada. [11] La función SOLVE permite resolver la ecuación diferencial ingresada. [12] La función INLINE permite llamar a la función de resolución de forma automática. [13] Toma la resolución de la ecuación como carácter. [14] Deriva el valor de y. [15] Inicializa la variable. [16] Define el bucle for.
185
Métodos Numéricos con MatLab
Ing.: Willam Caiza
[17] Asigna un valor a la variable a. [18] Resuelve la ecuación para encontrar el valor de y. [19] Resuelve la ecuación para encontrar el valor de x. [20] El valor final de la función con los valores x e y hallados. [22] Muestra el resultado de la resolución. [21] Termina el bucle del for. [23] Establece las etiquetas para la tabla. [24] Grafica la curva de resolución de Euler. [25] Muestra la leyenda de los resultados graficados. [26] Muestra una tabla con los datos obtenidos. [27] Mantiene los ejes de la grafica [28] Muestra una cuadrícula en la gráfica. 7.4.2 MÉTODO DE HEUN Este método emplea dos derivadas uno en el punto inicial y otra en el final. Las dos derivadas se promedian con la finalidad de obtener una mejor estimación de la pendiente en todo el intervalo. Recuerde que en el método de Euler la pendiente al inicio del intervalo
yf x,y y+ y +y fx,yh : y + fx+,y+ Ȳ fx,y f2x+,y+ ∗ℎ
la expresión anterior se utiliza para extrapolar linealmente a expresión
,mediante la siguiente
La ecuación es una predicción intermedia, da una estimación que permite el cálculo de la estimación de la pendiente al final del intervalo
de
y+
Combinando las dos pendientes, para obtener un pendiente promedio se obtiene: +
La cual va a ser la pendiente de la expresión de Euler
+ , + , , Resumen de las ecuaciones
(Predictor)
= +
+
(Corrector)
El método de Heun es un procedimiento predictor corrector de un solo paso. Un criterio de terminación para la convergencia del corrector está dado por:
j j − y y + + |E| y+j
186
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Imagen 7.4 Representación gráfica del método de Heun
7.5 MÉTODO DE RUNGE-KUTTA DE SEGUNDO ORDEN La expresión del método de Runge-Kutta de 2do orden es:
Y Y a k a k h + kk ff xx, y ph,y q; kh Y + Y f x, yh f′x2!, y h f ′ x , y f′x, y dfdf xdx , y∂f dy∂x∂f ∗ dxdx ∂y∂f ∗ dydx f′x, y dx ∂y ∗ dxdf ∂f dy h Y+ Y f x, yh dx ∂y ∗ dx 2! gx r;ys gx; y ∗r∗ ∂g∂x s∗ ∂g∂y ⋯ ph , y qkh f x, y ph qkh Oh f x/ aa+pa1 ≫ ≫p a1 1 12 1/2 aq ≫ q 1 Donde:
Recordando la serie de Taylor, tenemos:
Encontrando
:
Utilizando la serie de Taylor de dos variables; tenemos:
Veamos el valor de: Si
(7)
tenemos:
187
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Yk+fY x,y12 k 12 kh kf x h ,y kh aa+pa1 ≫ ≫pa1/2 110 aq ≫ q 1/2 Yk+fY x,y kh k f x 1/2h , y 1/2kh ; ; ℎ + x Y ak ak ak kk xx; py y qk kk xx pp yy qq−kk qq−k2k h q−n1kh Entonces:
METODO HEUN
Si
tenemos:
Entonces:
METODO DE PUNTO MEDIO
Explicación Los métodos de Runge-Kutta tienen la exactitud del esquema de la Serie de Taylor, sin necesitar del cálculo de derivadas superiores. La fórmula general es: Donde φ ( ;
;h) es la función de incremento, y representa el promedio de la pendiente sobre el intervalo. La función de incremento se puede escribir en su forma general como: + φ= +…+ Donde las ai son constantes y las ki son: = f ) = f( + h; + h) = f( + h; + h++ h)… = f( + h; + h+ ) +…….+ Todas las k son relaciones recurrentes. Por lo que k1 aparece en la ecuación k2, que aparece en la ecuación k3, etc. Esta recurrencia hace a los métodos RK eficientes para su cálculo en computadora. Algoritmo de resolución de ecuaciones diferenciales por el método de Heun
188
Métodos Numéricos con MatLab
Ing.: Willam Caiza
189
Métodos Numéricos con MatLab
Ing.: Willam Caiza
PROGRMA DEL MÉTODO DE HEUN % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) f1=get(handles.edit1, 'string'); [1] f=inline(f1, 'x','y'); [2] %condiciones inciales x(1)=str2double(get(handles.edit2, 'string')); [3] y(1)=str2double(get(handles.edit5, 'string')); [4] %Parametros xf(1)=str2double(get(handles.edit3, 'string')); [5] h=str2double(get(handles.edit4, 'string')); [6] n=(xf-x)/h; [7] a(1)=0; [8] for i=1:n [9] a(i+1)=i; [10] x(i+1)=x(i)+h; [11] k1= f(x(i),y(i)); [12] k2=f(x(i)+h,y(i)+h*k1); [13] y(i+1)=y(i)+(h/2)*(k1+k2); [14] k(i+1)=k1; [15] l(i+1)=k2; [16] end [17] set(handles.edit6, 'string',y(i+1)); [18] set(handles.uitable1, 'data',[a' x' k' l' y']); [19] plot(handles.axes1,x,y, 'b','linewidth' ,2); [20] plot(handles.axes1,x,k, 'r','linewidth' ,1); [21] plot(handles.axes1,x,l, 'g','linewidth' ,1); [22] legend Original Rk k1 k2 [23] hold(handles.axes1,'on'); [24] grid(handles.axes1,'on'); [25] zoom(handles.axes1,'on'); [26]
[1] Permite el ingreso de la función. [2] Ingresa la función con la sintaxis de Matlab. [3] Ingresa el valor inicial para evaluar. [4] Ingresa el valor final para evaluar. [6] Ingresa el valor de h que es el paso a usar (distancia entre puntos). [6] Ingresa la condición inicial para la resolución de la función. [7] Determina el número de repeticiones operando los valores ingresados. [8] Inicializa la variable. [9] Inicia bucle for. [10] Asigna un valor a la variable a dependiendo del ciclo de iteración. [12] Obtiene el valor de la primera constante. [13] Obtiene el valor de la segunda constante. [14] Obtiene el valor de y. [15] Asigna a una variable el valor de la primera constante. [16] Asigna a una variable el valor de la segunda constante. [17] Termina el bucle for. [18] Muestra el resultado como ecuación. [19] Establece etiquetas para la tabla.
190
Métodos Numéricos con MatLab
Ing.: Willam Caiza
[20] Genera la gráfica de RK. [21] Genera la gráfica de K1. [22] Genera la gráfica de K2. [23] Coloca la legenda de la gráfica realizada. [24] Mantiene los ejes de la gráfica. [25] Muestra una cuadrícula en la gráfica. [26] Muestra un acercamiento a la gráfica. 7.6 MÉTODOS DE RUNGE-KUTTA DE TERCER ORDEN Para el resultado son seis ecuaciones con ocho incógnitas, por lo tanto se deben suponer dos valores con antelación para poder desarrollar el sistema de ecuaciones. Una versión ampliamente usada es:
Y+ Y 16 k 4k kh kk ffx x, y1 h , y 1 kh 2 2 k f x h ,y kh 2kh
Si la ecuación deferencial ordinaria está en función solo de x, este método de tercer orden se reduce a la regla de Simpson 1/3. Los métodos de RK de tercer orden dan resultados exactos cuando la solución es cubica, al tratarse de polinomios la ecuación será exacta cuando la ecuación diferencial ordinaria sea cúbica y la solución sea de cuarto grado.
Imagen 7.8 : Ejemplo en Excel
191
Métodos Numéricos con MatLab
Ing.: Willam Caiza
7.7 MÉTODOS DE RUNGE-KUTTA DE CUARTO ORDEN El más popular de los métodos Rk es el de cuarto orden. La versión comúnmente usada se llama método clásico de Rk de cuarto orden:
1 Y Y + 6 k 2k 2k kh kk ff xx,1/2h y , y 1/2kh kk ff xx 1/2h , y 1/2 k h h ,y kh Y+ Y ak ak aYYk a kxh Y Y+ x+ hx+ x Y+Y , x+ x ! , x+ x ! , x+ x ! , x+ x f x, y y h x+ x Y+ Y f x, yh ! f′x, y h ! f′ x, y h ! f′ ′x, y h Y+ Y 16 k 2k 2k kh Demostración: El método de RK de cuarto orden está basado en lo siguiente: (1) Dónde: sabiendo el valor de para , nosotros podemos encontrar el valor de para , y La ecuación (1) es comparada con los primeros cinco términos de la serie Taylor
(2)
Sabiendo que Entonces:
Basándonos en la ecuación (2) y (3), una de las soluciones más usadas es:
Este método tiene similitud con el procedimiento de Héun en cuanto a que se usan múltiples estimaciones de la pendiente para obtener una mejor pendiente promedio en el intervalo.
Y+
Y
Así, el siguiente valor ( ) es determinado por el presente valor ( mas el producto del tamaño del intervalo (h) por una pendiente estimada. La pendiente es un promedio ponderado de pendientes: k1 es la pendiente al principio del intervalo;
x h/2
k2 es la pendiente en el punto medio del intervalo, usando k1 para determinar el valor de y en el punto usando el método de Euler
192
Métodos Numéricos con MatLab
Ing.: Willam Caiza
k3 es otra vez la pendiente del punto medio, pero ahora usando k2 para determinar el valor de y k4 es la pendiente al final del intervalo, con el valor de y determinado por k3 Promediando las cuatro pendientes, se le asigna mayor peso a las pendientes en el punto medio:
Ejemplo: Resuelva el siguiente problema de valor inicial en el intervalo de t=0 a 2, donde y (0) = 1. Muestre todos sus resultados en la misma gráfica.
dydt yt 1.5y
Desarrollo
a) Método RK de cuarto orden con h=0.5. RK CUARTO ORDEN i
xi
yreal
k1
0
0
1
0
0
1 0,5
0,4798
-1,5
2
0,2865
3 1,5 4
1 2
xi+0,5*h yi+0,5*k1*h
k2
yi+0,5*k2*h
k3
xi+h yi+k3*h
k4
yi+1
0
0
0
0
0
0
0
1
0,25
0,625
-0,9277
0,7681
-1,1401
0,5
0,43
-0,5912
0,4811
-0,6615
0,75
0,3157
-0,3404
0,396
-0,4269
1
0,2676
-0,1338
0,2869
0,3737
-0,1435
1,25
0,2511
0,1138
0,3154
0,1429
1,5
0,3584
0,672
0,3738
2,7183
0,7008
1,75
0,5489
2,1186
0,9034
3,4866
2
2,117
13,7607
2,5131
Imagen 7.9: Cuadro de datos del método de runge kutta 4to orden 3,0000 2,5000 EULER h=0,25
2,0000
EULER h=0,5 1,5000
Y REAL PUNTO MEDIO
1,0000
RK CUARTO ORDEN 0,5000 0,0000 0
0,5
1
1,5
2
2,5
Imagen 7.10: grafica del método de Runge Kutta 4to orden
193
Métodos Numéricos con MatLab
Ing.: Willam Caiza
7.8 MÉTODOS DE RUNGE-KUTTA DE ORDEN SUPERIOR Para tener resultados más exactos, se recomienda el método de RK de quinto orden.
Y+ Y 901 7k 32k 12k 32k 7kh
Dónde:
k f x, y k fx 14 h , y 14 kh k fx 14 h , y 18 kh 18 kh k fx 12 h , y 12 kh kh k fx 34 h , y 163 kh 169 kh k fx h ,y 37 kh 27 kh 127 kh 127 kh 87 kh Ejemplo 6:
Use el método clásico de Runge-Kutta de 5to Orden para integrar numéricamente la siguiente ecuación: f(x;y) = -2 + 12 – 20x + 8,5 desde x=0 hasta x=4, con un tamaño de paso de 0,5. Condición inicial en x=0 y y=1.
Desarrollo x 0 0,5 1 1,5 2 2,5 3 3,5 4
k1
k2
k3
k4
k5
k6
8,5 1,25 -1,5 -1,25 0,5 2,25 2,5 -0,25
6,1836 0,1992 -1,6602 -0,8945 0,9961 2,5117 2,1523 -1,582
6,1836 0,1992 -1,6602 -0,8945 0,9961 2,5117 2,1523 -1,582
4,2188 -0,5938 -1,6563 -0,4688 1,4688 2,6563 1,5938 -3,2188
2,582 -1,1523 -1,5117 0,0039 1,8945 2,6602 0,8008 -5,1836
1,25 -1,5 -1,25 0,5 2,25 2,5 -0,25 -7,5
y 1 3,2188 3 2,2188 2 2,7188 4 4,7188 3
194
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Imagen 7.11: grafica de Runge Kutta orden superior
EJERCICIOS PROPUESTOS 1.- Resuelva el siguiente problema de valor inicial en el intervalo de t=0 a 2, donde y (0) = 1. Muestre todos sus resultados en la misma gráfica.
dydt yt 1.5y
b) Analíticamente. c) Método de Euler con h=0.5 y 0.25. d) Método RK de cuarto orden con h=0.5.
2.- Resuelva el siguiente problema en el intervalo de x=0 a 1. Usando un tamaño de paso de 0.25 donde y (0)=1. Muestre todos sus resultados en la misma gráfica.
a) b) c) d) e)
dydx 12x y
Analíticamente. Método de Euler. Método de Heun sin el corrector. Método de Ralston. Método de RK de cuarto orden.
ddty ty0 y0 0 ddxy 0.6 dydx 8y0
3.- Utilice los métodos de a) Euler y b) Heun (sin iteración) para resolver:
Donde y (0) = 2 y . Resuelva de x = 0 a 4, con h = 0.1. Compare los métodos por medio de graficar las soluciones. 4.- Resuelva el problema siguiente con el método de RK de cuarto orden:
195
Métodos Numéricos con MatLab
Donde y (0) = 4 y
y00.
Ing.: Willam Caiza
Resuelva de x = 0 a 5 con h= 0.5. Grafique sus resultados.
5.- Resuelva la ecuación que se presenta a continuación, de t = 0 a 3, con h = 0.1, con los métodos de a) Heun (sin corrector), y b) RK y Ralston de segundo orden:
dydx y sent y0 1 t0 a 3: dydt yt, y0 1
6.-Solucione en forma numérica el problema siguiente, de
Utilice el método de RK de tercer orden, con un tamaño de paso de 0,5. 7.-Use los métodos de: a) Euler b) RK de cuarto orden Para resolver:
2y4e− dz yz
dx 3 x0 a 1, 0,2 y0 2 z0 4 dm dtx c dxdt kx0 N∙ k20N∙ x1 m 0≤t≤15 s
En el rango de
con un tamaño de paso de
, con
y
.
8.-El movimiento de un Sistema acoplado masa-resorte (como indica la figura) esta descrito por la ecuación diferencial ordinaria que sigue:
Donde x=desplazamiento desde la posición de equilibrio (m), t=tiempo(s), m=20(kg) masa y c= coeficiente de amortiguamiento
. El coeficiente de amortiguamiento c adopta tres
valores, 5 (subamortiguado), 40 (amortiguamiento crítico) y 200 (sobreamortiguado). La constante del resorte es
. La velocidad inicial es de cero y el desplazamiento
inicial es . Resuelva esta ecuación con el uso de un método numérico durante el periodo grafique el desplazamiento versus el tiempo de amortiguamiento sobre la misma curva. 9.- Si se drena el agua desde un tanque cilíndrico vertical por medio de abrir una válvula en la base, el líquido fluirá rápido cuando el tanque este lleno y despacio conforme se drene. Como se ve, la tasa a la que el nivel del agua disminuye es:
dydt k y
196
Métodos Numéricos con MatLab
k t k0.006
Ing.: Willam Caiza
Donde es una constante que depende de la forma del agujero y del area de la sección transversal del tanque y agujero de drenaje. La profundidad del agua y se mide en metros y el tiempo en minutos. Si , determine cuanto tiempo se requiere para vaciar el tanque si el nivel de fluido se encuentra en un inicio a . Resuelva con la aplicación de la ecuación de Euler y escriba un programa de computadora en Excel. Utilice un paso de minutos. 10.-La siguiente es una ecuación diferencial de Segundo orden con valor inicial:
Dónde:
3m 0.5 ddtx 5x dxdt x 7senwt 0 dxdt 01,5 y x06 w1 t0 a 15
Observe que . Descomponga la ecuación en dos ecuaciones diferenciales de primer orden. Después de la descomposición, resuelva el sistema , y grafique sus resultados. Referencia5: métodos numéricos para ingenieros (sexta edición), autor: Steve C. Chapra, pág.: 68
Algoritmo de resolución de ecuaciones diferenciales por el método de Runge Kutta
197
Métodos Numéricos con MatLab
Ing.: Willam Caiza
PROGRAMA % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton1 (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) f1=get(handles.edit1, 'string'); [1] f=inline(f1, 'x','y'); [2] %condiciones inciales x(1)=str2double(get(handles.edit2, 'string')); [3] y(1)=str2double(get(handles.edit5, 'string')); [4] %Parametros xf(1)=str2double(get(handles.edit3, 'string')); [5] h=str2double(get(handles.edit4, 'string')); [6] n=(xf-x)/h; [7] a(1)=0; [8] for i=1:n [9] a(i+1)=i; [10] x(i+1)=x(i)+h; [11] k1= f(x(i),y(i)); [12] k2=f(x(i)+h/2,y(i)+(h/2)*k1); [13] k3=f(x(i)+h/2,y(i)+(h/2)*k2); [14] k4=f(x(i)+h,y(i)+(h)*k3); [15] y(i+1)=y(i)+h*(k1+2*k2+2*k3+k4)/6; [16] k(i+1)=k1; [17] l(i+1)=k2; [18] m(i+1)=k3; [19] p(i+1)=k4; [20] end [21] set(handles.edit6, 'string',y(i+1)); [22] set(handles.uitable1, 'data',[a' x' k' l' m' p' y']); [23] plot(handles.axes1,x,y, 'b','linewidth' ,2); [24] plot(handles.axes1,x,k, 'r','linewidth' ,1); [25] plot(handles.axes1,x,l, 'g','linewidth' ,1); [26] plot(handles.axes1,x,p, 'y','linewidth' ,1); [27] plot(handles.axes1,x,m, 'k','linewidth' ,1); [28] legend Original Rk k1 k2 k3 k4 [29] hold(handles.axes1, 'on'); [30] grid(handles.axes1, 'on'); [31] zoom(handles.axes1, 'on'); [32] -------------------------------------------------------------------------------------------------------------------------------------
198
Métodos Numéricos con MatLab
Ing.: Willam Caiza
[1] Permite el ingreso de la función. [2] Ingresa la función con la sintaxis de Matlab. [3] Ingresa el valor inicial para evaluar. [4] Ingresa el valor final para evaluar. [6] Ingresa el valor de h que es el paso a usar (distancia entre puntos). [6] Ingresa la condición inicial para la resolución de la función. [7] Determina el número de repeticiones operando los valores ingresados. [8] Inicializa la variable. [9] Inicia bucle for. [10] Asigna un valor a la variable a dependiendo del ciclo de iteración. [12] Obtiene el valor de la primera constante. [13] Obtiene el valor de la segunda constante. [14] Obtiene el valor de la tercera constante. [15] Obtiene el valor de la cuarta constante. [16] Obtiene el valor de y. [17] Asigna a una variable el valor de la primera constante. [18] Asigna a una variable el valor de la segunda constante. [19] Asigna a una variable el valor de la tercera constante. [20] Asigna a una variable el valor de la cuarta constante. [21] Termina el bucle for. [22] Muestra el resultado como ecuación. [23] Establece etiquetas para la tabla. [24] Genera la gráfica de RK. [25] Genera la gráfica de K1. [26] Genera la gráfica de K2. [27] Genera la gráfica de K3. [28] Genera la gráfica de K4. [29] Coloca la legenda de la gráfica realizada. [30] Mantiene los ejes de la gráfica. [31] Muestra una cuadrícula en la gráfica. [32] Muestra un acercamiento a la gráfica.
Propiedades de Laplace
L{ f(t) + g(t) } = F(s) + G(s) L{ a.f(t) } = a.F(s)
L{ f(at) } =
L{ eat.f(t) } = F(s-a) L{ f(t-a) } = e-as.F(s) L{ f ’ (t) } = s.F(s) – f(0) L{ f ‘’ (t) } = s2.F(s) – s.f(0) – f(1)
L{
∫
f(T). dt } =
199
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Tabla de la transformada de Laplace
cos . 1 ∗ f(t)
1 1 !2+ 1 − 1 ∞ . F(s)
EJERCICIOS DE LAPLACE CON ECUACIONES DIFERENCIASLES POR LAPLACE
− ( ) ( )− − 2528 18 , 2 10 3 124 251 1 11 .
Usando la transformada de Laplace encuentre la solución de la ecuación.
Aplicación la transformada de Laplace a nuestra ecuación obtenemos:
Lo que implica:
Por lo tanto
200
Métodos Numéricos con MatLab
Ing.: Willam Caiza
124 11 − 31 ℒ 3ℒ− −−+34ℒ− cos−2+4 seℒn2−+ − +
Obtenga la ecuación que es solución de la siguiente ecuación diferencial por el método de la transformada de Laplace, haciendo uso de las tablas y propiedades.
ℒℒDDggtt4ℒ4ggttℒℒsesnen44tt 0 4Gs S 44 SGsSg g 0 4 0 15 4 4 4 41 1520 44 4 36 4 4 5 5 41 5 4 6 6 5 5 4 4 ⟹ 5 4 4 1 6 ℒ− ℒ− 554 4 ℒ− 0.26672 0.08344 , 0 0≤<3≥3 3 3 3 3 3, 01 <0≥0
Aplicando la transformada Inversa de Laplace
Resuelva usando transformada de Laplace la ecuación Donde
Primero observamos que: Donde
201
Métodos Numéricos con MatLab
Entonces si obtenemos
Esto implica
ℒ(yt)s,
Ing.: Willam Caiza
aplicando transformada de Laplace a la ecuación diferencial
4 31 − − 31 31 4 ℒ− 4 − 31 4 4 , , 31 3 1 1 1 3 1 4 4 4 4 4 4 4 3 1 3 1 ℒ− 31 cos 2 4 4 4 4 8 sin2 3 3 34 14 3 34 cos(2 3) 18 sin(2 3)3 { } ℒ4 6 34 22 3ℒ4 2ℒcos2 4ℒ46ℒ 15 6 3! 3 164 2 4 54 36 1216 24 − ℒ2 −ℎ2
Resolviendo se obtiene
,
Así
Por lo tanto
Hallar:
Por la propiedad de linealidad tenemos que:
Hallar:
Por la propiedad de linealidad tenemos que:
202
Métodos Numéricos con MatLab
Ing.: Willam Caiza
− ℒ ℒ 2 cos h 2 − ℒ ℒ 44 cos h 2 ℒ 4ℒ 4ℒ ℒ− cosh2 ℒ2! 4ℒ 4 4ℒ4 ℒ −4cosh2 1 5 29 1 9 1 2120 4 4 126
Aplicando el primer teorema de la traslación:
203
Métodos Numéricos con MatLab
Ing.: Willam Caiza
ANEXO I: MULTIPLICADORES DE LAGRANGE 1 MULTIPLICADORES DE LAGRANGE
El método de los multiplicadores de Lagrange es un procedimiento para encontrar los máximos y minimos de funciones de variables multiples las cuales estan sujetas a restricciones. Para poder tener una mejor comprensión del método de los multiplicadores de Lagrange se debe tener en cuenta estos conceptos fundamentales En cálculo, un punto crítico de una función de una variable real es cualquier valor en el dominio en donde la función no es diferenciable o cuando su derivada es 0.
Función de variables múltiples
variables.
Puntos estacionarios: Un
, es aquella función la cual consta de varias
, , , … ,
punto estacionario de una función de una variable real, es
un número donde la derivada de es cero. Si la función es derivable y tiene un extremo local en un punto, ese punto estará entre sus puntos estacionarios.
Curvas de nivel de una función de variables:
cuando la función tiene dos variables
podría representarse mediante una superficie en el espacio tridimensional. Dicha superficie estaría formada por los puntos de la forma
(, , , )
.
No obstante, existe una forma de representar gráficamente funciones de dos variables en el plano: mediante las conocidas como curvas de nivel de la función. Dichas curvas
204
Métodos Numéricos con MatLab
Ing.: Willam Caiza
se obtienen al cortar la superficie mediante planos horizontales a distintas alturas, de forma que todos esos cortes forman una familia de curvas que se proyectan sobre el plano
.
, : ⟶
El método dice que los puntos donde la función tiene un extremo condicionado con k restricciones, están entre los puntos estacionarios (puntos donde la derivada de la función es igual a cero) de una nueva función sin restricciones construida como una combinación lineal de la función y las funciones implicadas en las restricciones, cuyos coeficientes son los multiplicadores.
Se tiene una función de tipo
, , , … ,
la cual tiene un dominio D, donde las variables
de dicha función está sujeta a las siguientes restricciones de tipo se encuentran en el dominio D de la función primaria. Las variables
, , , … , 0 ,, ,, ,, …… ,, 0 ⋮
, , , … ,
las cuales
están sujetas a las restricciones de igualdad (m < n):
205
Métodos Numéricos con MatLab
Ing.: Willam Caiza
, , , … , 0 , , , … , , , ⟹ , , , , , Donde las funciones
son diferenciables , debe tener segundas derivadas
continuas, mientras que las
deben tener primeras derivadas continuas.
Para simplificar el cálculo se trabajara con un función doble restricción
,
,
y sujeto a una
la cual se encuentra dentro del dominio de
.
Como sabemos una funcion de tipo
, se
la puede representar por medio de sus
curvas de nivel; es decir para cada valor de d tendré una curva. La funcion
, sería una única función que pasa una de
El punto donde cruza la función
las curvas de nivel.
, por un punto de la curva de nivel de la función
es un punto crítico.
Para determinar ese punto critico se utilizara el gradiente vector, el cual se encuentra en dirección del máximo cambio de la función, se sabe que el gradiente es perpendicular a las curvas de nivel.
,, , , , , , ∆∆ Punto estacionario: En este punto la restriccion curvas de nivel de la funcion El gradiente de
interseca en un punto de las
.
, es paralelo al gradiente de la función
de ahí se obtiene
Una vez optenida esta relación:
, ⟹
donde la constante c se remplaza por .
∇∇ ⃗∇ ,
Se procede a obtener las derivadas parciales:
206
Métodos Numéricos con MatLab
Ing.: Willam Caiza
⃗∇ , , , ,
De esta manera obtendre las siguientes igualdades:
Ejemplo 1:
Encuentre los valores óptimos de la función: a. Los puntos críticos. b. Los puntos máximos y mínimos de la función. Sea
,
Sujeta a la Restricción: Paso # 1
Ec. Lagrange:
Paso # 2
, , … , , , … , = , , … ,
, , , ,, 1224 25 21280 12420 4 250
Derivar aplicando derivadas parciales:
Paso # 3
Formar el sistema de ecuaciones no lineales:
207
Métodos Numéricos con MatLab
Paso # 4
Ing.: Willam Caiza
12 12420 21280 3 4 250 1282 4 23 16 124 23 3416 2 234 16 0 5 3 3 3 0 2 1 2 1 1 4 3 6 2 3 6 6 250 23 16 16 250 4 23 2 6 14536 49 29 250 343 3 43 0 17 0; 2 ; 4 145 4 17 2 17 36 9 1004 9 4 250 9 250 3 225100 3 2 ; 2 ;
Resolver el sistema; de la ecuación 1) despejamos y:
Sustituyo 4) en 2)
Sustituyo 4) en 3)
Paso # 5
Factorizamos la ecuación 5)
Sustituyo
Sustituyo
en 5)
en 4)
208
Métodos Numéricos con MatLab
Sustituyo
Sustituyo
Paso # 6
Ing.: Willam Caiza
32 ; 4 ; 174 2 145 4 2 36145 9 162 922 250 36 925 9 250 25 4 2; 2 2 ; 2 2; 3 ; 2 2; 3 ; 2 en 6)
en 6)
Analizar los puntos críticos de la función cuando existe un como máximo relativo o mínimos relativo.
,, >0<0 . 2,3; 32,3 359 . 2 ,4; 2 , 4 90.25 . , .
Soluciones:
Ejemplo 2:
Encontrar el máximo de esta función:
El gráfico de la función restricción:
Restricción
.
El código en Matlab es: x=[-3:0.1:3]; y=[-3:0.1:3]; [X,Y]=meshgrid(x,y); Z=X.*Y mesh(X,Y,Z); title('GRAFICA DE FUNCION') hold on %% x=-3:0.1:3 y=sqrt((1-(x.^2/9))*16); plot(x,y); hold on %% x=-3:0.1:3
209
Métodos Numéricos con MatLab
Ing.: Willam Caiza y=-sqrt((1-(x.^2/9))*16); plot(x,y); hold on
Figura 1: Gráfica de una función.
Nuestra restricción pasa hacer nuestra función g.
Paso # 1
, 1
•
Derivada parcial de la función f con respecto a x.
•
Multiplicamos λ con la función g, procedemos a la Derivada parcial de la función g con respecto a x.
4 29 λx
Paso # 2
•
Derivada parcial de la función f con respecto a y
•
Multiplicamos λ con la función g, procedemos a la Derivada parcial de la función g con respecto a y.
Paso #3
Establecemos nuestras 3 ecuaciones:
1. 2. 3.
4 λx 4 λy 1
Paso # 4
Despejamos la primera ecuación
λ
, obtenemos nuestra ecuación (4).
210
Métodos Numéricos con MatLab
Paso # 5
18 λ 41 16218λy 4x8
Ing.: Willam Caiza
Remplazamos nuestra ecuación (4) en nuestra ecuación (2).
Obtenemos la ecuación (5). Paso # 6
9 16 1 1 3 2 3 2 √ √ 1 2 ; 2 2
Remplazamos nuestra ecuación (5) en nuestra ecuación (3).
;
Paso # 7
Obtenemos nuestro valores de, y. Paso # 8
Obtenemos nuestros puntos:
12√ 2 ; 2 2√ 2 √ ; 2 √ 2 ; √ ; 2√ 2
Los puntos obtenidos se pueden encontrar con el solver de Matlab: Paso # 9
Remplazamos nuestros puntos en la función, con lo cual obtendremos nuestro punto máximo y mínimo.
, 4
En este caso obtenemos un valor de 24 en ambos casos por lo que se determina que los dos son puntos máximos. Programa 1: Programa de Multiplicadores de Lagrange.
211
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Código del programa: syms x y L k a b c f=char(get(handles.edit1,'string')); g=char(get(handles.edit2,'string')); L=f+k*g fx=diff(L,x) fy=diff(L,y) fk=diff(L,k) [var1 var2 var3]=solve(fx==a,fy==b,fk==c,a,b,c); set(handles.edit3,'string',char(var1)); set(handles.edit4,'string',char(var2)); set(handles.edit5,'string',char(var3)); L=f+k*g [x,y,k]=solve(diff(L,x),diff(L,y),diff(L,k),x,y,k) set(handles.edit6,'string',char(x)); set(handles.edit7,'string',char(y)); set(handles.edit8,'string',char(k)); x=[-4:0.1:4]; y=[-4:0.1:4]; [x,y]=meshgrid(x,y); z=x.^2+12*x.*y+2*y.^2; mesh(x,y,z); title('GRAFICA DE FUNCION'); hold on rotate3d on
Figura 2: Gráfica de una función .
212
Métodos Numéricos con MatLab
Ing.: Willam Caiza
ANEXO II: SISTEMA DE ECUACIONES NO LINEALES “MÉTODO DE NEWTON”
1. SISTEMA DE ECUACIONES NO LINEALES “METODO DE NEWTON”
Este es un método iterativo, a diferencia de los métodos directos donde la solución a una ecuación o sistema de ecuaciones se logra siempre “al primer intento” siguiendo paso a paso un procedimiento determinado, los métodos iterativos obtienen la solución como resultado de una serie de aproximaciones generadas sucesivamente a partir de una “aproximación inicial a
la solución”. También se lo conoce como el método de NEWTON– RAPHSON MULTIVARIABLE, Tiene una convergencia cuadrática siempre y cuando se conozca un valor inicial suficientemente preciso. Para este método partiremos ya con el conocimiento del método de Newton Raphson para resolver una ecuación con una incógnita en el cual podemos ver que necesitamos un valor
213
Métodos Numéricos con MatLab
Ing.: Willam Caiza
inicial, la función evaluada en ese punto y la derivada de la función evaluada en el punto inicial y mediantes esta ecuación obtenemos un nuevo valor. Pero ahora como tenemos un sistema de ecuaciones se tendrá que adaptar esta fórmula para que nos permita obtener la solución a dicho sistema:
+ /
Pues ahora ya tenemos un conjunto de ecuaciones no lineales de f 1, f 2, f 3, …, f n. Las cuales debemos igualar a cero, esto significa que vamos a encontrar las raíces de cada una de estas ecuaciones no lineales que resuelvan todo el sistema.
((,,,,,,……,,)) 00 ℎ(,,,…,) 0
Ahora debemos tomar en cuenta la manera en que vamos a derivar este conjunto de ecuaciones y para adaptar este método como ya se mencionó ya no tenemos una variable sino un vector de variables, al igualar las funciones a cero obtenemos un vector de funciones y de estas necesitamos las derivadas pero al ser un conjunto se realiza las derivadas parciales de cada función respecto a cada variable acomodadas en una matriz la cual se denomina MATRIZ JACOBIANA aquí se expresa ya de manera matricial.
11 ((,,,,……,,)) ∗ ⋯ ⋮1 ⋮ ℎ(, ⋮, … , ,) ℎ ⋮ ℎ ⋱ ℎ⋮ ⋯
DERIVADA DE LA PRIMERA FUNCION CON
DERIVADA DE LA PRIMERA FUNCION CON
DERIVADA DE LA PRIMERA FUNCION CON
Por lo que al obtener la matriz Jaciobiana, también debemos encontrar su inversa y de existir la misma para poder desarrollar este método al efectuar la siguientes operaciones matemáticas obtengo los valores de cada variable para la siguiente iteración y esto lo calculamos hasta que le valor de la nueva iteración menos la antigua iteración sea prácticamente cero, es decir llegar a obtener la convergencia. Ejemplo 1:
214
Métodos Numéricos con MatLab
Resolver
Ing.: Willam Caiza
, ,
Figura 1. Gráfica de las funciones en Matlab.
1.
Realizaremos el proceso para encontrar el primer X i+1, dadas las siguientes ecuaciones las igualamos a cero y damos un punto inicial.
2.
20 (,(,,,,…,) …) 0, 5 0, 1 0
Encontramos Derivadas parciales de las funciones con respecto a cada una de las variables.
3.
2 20,5 2 1
4.
Remplazamos los puntos iniciales para obtener valores numéricos en la matriz
Formamos la matriz Jacobiana.
2 5 21 20. 1,2; 0,8
Jacobiana y calculamos su inversa.
215
Métodos Numéricos con MatLab
Ing.: Willam Caiza
22∗1.∗ 1.220. 5 2∗0.81 21..490 0.1160 21..490 2.40.1160 0.⋮16010 01 1 0 1.9012.402→2 ⋮ 0 5. 4 4 1. 9 0 2. 4 0 1/2.90→120.4 0.5.14604 ⋮ 1 1.0190 2.0.108402/5.0.29 44→2 0.505221→1 ⋮ 0 1 0. 3 5 0. 4 4 0..1385 0.0.2494 00..0184∗00..1385 0.0.42490.0.05533 10..2800.0.0553310..1843
5.
Calculamos la matriz inversa aumentando la matriz identidad.
6.
Evaluamos las ecuaciones en el punto inicial y multiplicamos por la inversa del Jacobiano.
7.
Para encontrar el X i+1, restamos el producto anterior menos los puntos iniciales.
8.
Como ya lo explicamos se repite el proceso asumiendo como nuevo punto inicial el Xi+1 encontrado.
9.
Este método es complejo si se lo realiza de forma manual por lo que se presenta un ejercicio realizado en Excel. Considérese el sistema no lineal siguiente:
20 ,, 0, 5 0, 1 0 2 0, 50,1
(Circunferencia)
a)
(Parábola)
Usar el método de Newton comenzando en el punto P 0 = (p0, q0) = (1,2; 1,8) y calcular los puntos P 1 y P2.
f(x1,x2,…,xn)=
g(x1,x2,…,xn)= df/dx= dg/dx=
2x 2x-0,5
df/dy= dg/dy=
2y -1
MATRIZ JACOBIANA 2x 2y
216
Métodos Numéricos con MatLab
Ing.: Willam Caiza
2x-0,5
2 0,5 0,1 f(Xi)
J(Xi)
-1
22 0,5 21 1 1 1 J-1(Xi)
J-1(Xi)*f(Xi)
Xi+1=Xi-(J-1(Xi)*f(Xi))
Xi
1,200000
0,080000
2,400000
1,600000
0,183824
0,294118
0,055882
1,144118
Yi
0,800000
0,140000
1,900000
-1,000000
0,349265
-0,441176
-0,033824
0,833824
Xi+1
1,144118
0,004267
2,288235
1,667647
0,189740
0,316419
0,001798
1,142320
Yi+1
0,833824
0,003123
1,788235
-1,000000
0,339299
-0,434169
0,000092
0,833732
2
1,142320
0,000003
2,284640
1,667463
0,190097
0,316980
0,000002
1,142318
0,833732
0,000003
1,784640
-1,000000
0,339255
-0,434304
0,000000
0,833732
1,142318
0,000000
2,284637
1,667464
0,190098
0,316981
0,000000
1,142318
0,833732
0,000000
1,784637
-1,000000
0,339255
-0,434304
0,000000
0,833732
-0,800000
0,080000
-1,600000
2,400000
-0,150602
-0,361446
0,009639
-0,809639
1,200000
-0,060000
-2,100000
-1,000000
0,316265
-0,240964
0,039759
1,160241
-0,809639
0,001674
-1,619277
2,320482
-0,152975
-0,354975
-0,000289
-0,809350
1,160241
0,000093
-2,119277
-1,000000
0,324196
-0,247709
0,000520
1,159721
-0,809350
0,000000
-1,618699
2,319443
-0,153071
-0,355040
0,000000
-0,809349
1,159721
0,000000
-2,118699
-1,000000
0,324312
-0,247776
0,000000
1,159721
1,300000
0,500000
2,600000
1,800000
0,156740
0,282132
0,146082
1,153918
0,900000
0,240000
2,100000
-1,000000
0,329154
-0,407524
0,066771
0,833229
1,153918
0,025798
2,307837
1,666458
0,187952
0,313213
0,011533
1,142386
0,833229
0,021340
1,807837
-1,000000
0,339786
-0,433761
-0,000491
0,833719
1,142386
0,000133
2,284772
1,667439
0,190086
0,316957
0,000067
1,142318
0,833719
0,000133
1,784772
-1,000000
0,339261
-0,434304
-0,000013
0,833732
1,142318
0,000000
2,284637
1,667464
0,190098
0,316981
0,000000
1,142318
0,833732
0,000000
1,784637
-1,000000
0,339255
-0,434304
0,000000
0,833732
1,400000
0,960000
2,800000
2,000000
0,135135
0,270270
0,227027
1,172973
1,000000
0,360000
2,300000
-1,000000
0,310811
-0,378378
0,162162
0,837838
1,172973
0,077838
2,345946
1,675676
0,183852
0,308077
0,030189
1,142784
0,837838
0,051541
1,845946
-1,000000
0,339381
-0,431307
0,004187
0,833651
1,142784
0,000929
2,285567
1,667303
0,190018
0,316818
0,000465
1,142318
0,833651
0,000911
1,785567
-1,000000
0,339291
-0,434300
-0,000081
0,833732
1,142318
0,000000
2,284637
1,667464
0,190098
0,316981
0,000000
1,142318
0,833732
0,000000
1,784637
-1,000000
0,339255
-0,434304
0,000000
0,833732
-0,900000
0,500000
-1,800000
2,600000
-0,128535
-0,334190
-0,084319
-0,815681
1,300000
0,060000
-2,300000
-1,000000
0,295630
-0,231362
0,133933
1,166067
-0,815681
0,025048
-1,631362
2,332134
-0,151470
-0,353247
-0,006305
-0,809376
3
4
5
6
7
8
9
10
11
12
13
14
15
16
217
Métodos Numéricos con MatLab
17
18
19
20
21
22
Ing.: Willam Caiza
1,166067
0,007110
-2,131362
-1,000000
0,322837
-0,247102
0,006330
1,159737
-0,809376
0,000080
-1,618752
2,319475
-0,153066
-0,355032
-0,000026
-0,809349
1,159737
0,000040
-2,118752
-1,000000
0,324308
-0,247775
0,000016
1,159721
-0,809349
0,000000
-1,618699
2,319443
-0,153071
-0,355040
0,000000
-0,809349
1,159721
0,000000
-2,118699
-1,000000
0,324312
-0,247776
0,000000
1,159721
-1,000000
0,960000
-2,000000
2,800000
-0,111111
-0,311111
-0,168889
-0,831111
1,400000
0,200000
-2,500000
-1,000000
0,277778
-0,222222
0,222222
1,177778
-0,831111
0,077906
-1,662222
2,355556
-0,148028
-0,348689
-0,021478
-0,809633
1,177778
0,028523
-2,162222
-1,000000
0,320070
-0,246056
0,017917
1,159861
-0,809633
0,000782
-1,619266
2,319721
-0,153013
-0,354949
-0,000283
-0,809350
1,159861
0,000461
-2,119266
-1,000000
0,324276
-0,247769
0,000139
1,159721
-0,809350
0,000000
-1,618699
2,319443
-0,153071
-0,355040
0,000000
-0,809349
1,159721
0,000000
-2,118699
-1,000000
0,324312
-0,247776
0,000000
1,159721
Este método nos permite obtener un x i+1 un par ordenado (x, y) pero para representarlo gráficamente en Matlab debemos evaluar este x, y para obtener una z y graficar los puntos z = (x, y) para las dos funciones f y g.
+ + 2 z1=f(x, y) 0,004267 0,001674 0,025798 0,077838 0,025048 0,077906
+ + 0,5+
z2=f(x, y) 0,003122837 9,29017E-05 0,021339806 0,051541271 0,007109654 0,028523457
z1=f(x,y) 0,000000 0,000000 0,000000 0,000000 0,000000 0,000000
z2=f(x,y) 0 7,13318E-15 0 1,22402E-14 1,38778E-16 1,97065E-15
Gráficamente en Matlab podemos observar los puntos (xx +1, yyi+1, z) e interpretar las respuestas.
218
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Figura 1: Gráfica de las funciones en Matlab.
PROGRAMA 1: Código usado para graficar los puntos. x=[-3:0.2:3]; y=[-3:0.2:3]; [X,Y]=meshgrid(x,y); Z=X.^2+Y.^2-2; mesh(X,Y,Z); hold on x1=x; y1=y; [X1,Y1]=meshgrid(x1,y1); Z1=X.^2-Y-0.5*X+0.1; mesh(X1,Y1,Z1); hold on x=[1.144118 -0.809639 1.13918 1.172973 -0.815681 -0.831111] y=[0.833824 1.160241 0.833229 0.837838 1.166067 1.177778] z=[0.004267 0.001674 0.025798 0.077838 0.025048 0.077906] [X,Y,Z]=meshgrid(x,y,z) plot3(x,y,z,'xr') hold on x=[1.144118 -0.809639 1.13918 1.172973 -0.815681 -0.831111] y=[0.833824 1.160241 0.833229 0.837838 1.166067 1.177778] z=[0.003123 0.000093 0.021340 0.051541 0.007110 0.028523] [X,Y,Z]=meshgrid(x,y,z) plot3(x,y,z,'*g') hold on x=[1.144118 -0.809639 1.13918 1.172973 -0.815681 -0.831111] y=[0.833824 1.160241 0.833229 0.837838 1.166067 1.177778] z=[0.000000 0.000000 0.000000 0.000000 0.000000 0.000000] [X,Y,Z]=meshgrid(x,y,z) plot3(x,y,z,'om') hold on
Pero la interpretación de estos puntos son los más aproximados a la solución del sistema, pero debemos notar que su resultado final sería una serie de aproximaciones generadas
219
Métodos Numéricos con MatLab
Ing.: Willam Caiza
sucesivamente a partir de una “aproximación inicial a la solución” que generarían una curva
en la intersección como se puede ver.
PROGRAMA 2: Código usado para graficar la Curva. x=[-3:0.2:3]; y=[-3:0.2:3]; [X,Y]=meshgrid(x,y); Z=X.^2+Y.^2-2; mesh(X,Y,Z); hold on x1=x; y1=y; [X1,Y1]=meshgrid(x1,y1); Z1=X.^2-Y-0.5*X+0.1; mesh(X1,Y1,Z1); hold on x=[1.144118 -0.809639 1.13918 1.172973 -0.815681 -0.831111] y=[0.833824 1.160241 0.833229 0.837838 1.166067 1.177778] z=[0.004267 0.001674 0.025798 0.077838 0.025048 0.077906] [X,Y,Z]=meshgrid(x,y,z) plot3(x,y,z,'r') hold on x=[1.144118 -0.809639 1.13918 1.172973 -0.815681 -0.831111] y=[0.833824 1.160241 0.833229 0.837838 1.166067 1.177778] z=[0.003123 0.000093 0.021340 0.051541 0.007110 0.028523] [X,Y,Z]=meshgrid(x,y,z) plot3(x,y,z,'g') hold on x=[1.144118 -0.809639 1.13918 1.172973 -0.815681 -0.831111] y=[0.833824 1.160241 0.833229 0.837838 1.166067 1.177778] z=[0.000000 0.000000 0.000000 0.000000 0.000000 0.000000] [X,Y,Z]=meshgrid(x,y,z) plot3(x,y,z,'m') hold on
220
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Son muy variadas las aplicaciones del método de Newton. Para destacar está en la solución de problemas de flujos de potencia en ingeniería eléctrica. También se encuentran aplicaciones mecánicas en la solución de ecuaciones que determinan la posición en la dinámica de un mecanismo o sistema.
El método de newton es eficiente en la solución de sistemas de ecuaciones no lineales, converge muy rápidamente y proporciona una muy buena precisión en los resultados. El método se emplea en la solución de problemas académicos y en problemas propios del mundo real. Note que el método de Newton-Raphson no trabaja con intervalos donde nos asegure que encontraremos la raíz, y de hecho no tenemos ninguna garantía de que nos aproximaremos a dicha raíz. Desde luego, existen ejemplos donde este método no converge a la raíz, en cuyo caso se dice que el método diverge. Sin embargo, en los casos donde si converge a la raíz lo hace con una rapidez impresionante, por lo cual es uno de los métodos preferidos.
221
Métodos Numéricos con MatLab
Ing.: Willam Caiza
ANEXO III: INTRODUCCIÓN A LA PROGRAMACIÓN EN MATLAB 1. INTRODUCCIÓN En el presente anexo, se hará uso y se explicara Matlab ya que es uno de los principales softwares de desarrollo para la ingeniería, entre sus principales características se hallan: la manipulación de matrices, la representación de datos y funciones, la implementación de algoritmos, la creación de interfaces de usuario (GUI) y la comunicación con programas en otros lenguajes y con otros dispositivos hardware. Matlab es al mismo tiempo un entorno y un lenguaje de programación. Uno de sus puntos fuertes es el hecho de que el lenguaje de Matlab permite construir nuestras propias herramientas reusables. La manera más fácil de visualizar Matlab es pensar en él como en una calculadora totalmente equipada, aunque, en realidad, ofrece muchas más características y es mucho más versátil que cualquier calculadora. Matlab es una herramienta para hacer cálculos matemáticos, e implementaciones complejas de programas de uso para la ingeniería cuyo desarrollo se realiza con facilidad relativa.
222
Métodos Numéricos con MatLab
Ing.: Willam Caiza
1.1 CARACTERISTICAS BASICAS 1.1.1 COMANDOS BASICOS Los comandos básicos que se utilizan en Matlab son parecidos a los de cualquier calculadora. Operación Adición Sustracción Multiplicación División Potencia Raíz Cuadrada Logaritmo Base 10 Logaritmo Natural Exponencial Funciones Trigonométricas
Símbolo + * / ^ sqrt( ) log10( ) log( ) exp( ) sin cos tan
Tabla 1.1 Comandos Básicos en Matlab
1.2 CARACTERES ESPECIALES Y COMANDOS Matlab distingue entre mayúsculas y minúsculas. Las Flechas del teclado recuperan los comandos anteriores. Símbolo % ; \n input() clc clear all format rat format short 223isp.() num2str help plot() hold on hold off
Operación Símbolo de comentario (ignora la línea) Separación de comandos. Si se coloca al final del comando, no se muestra el resultado Expresión de escape (línea siguiente) Nos permite obtener valores desde la consola Borrar la pantalla Limpiar toda la memoria Resultado en fracción Resultado en decimales Imprimir mensaje Convertir numero a cadena Permite obtener ayuda sobre un comando Graficar Mantener las anteriores graficas No conservar las anteriores graficas Tabla 1.2 Caracteres Especiales y comandos
2. VECTORES Y FUNCIONES 2.1 VECTORES Para crear un vector se utiliza el operador dos puntos “:” x=1:5 x= 1 2 3 4 5
223
Métodos Numéricos con MatLab
Ing.: Willam Caiza
También se puede indicar el paso de la sucesión de datos x=1:0.5:3 x= 1 1.5 2 2.5 3
Mediante el uso de subíndices, por ejemplo x (1) es el primer elemento, x (2) el segundo x(3) será el tercero y así sucesivamente Por ejemplo: x=1:0.4:5; x(3) ans= 1.8000
Para acceder a un bloque de elementos se usa el operador “:” por ejemplo, elementos
de la posición 2 a la 5 x=1:0.4:5; x (2:5) ans= 1.4000 1.8000 2.2000 2.6000 3.0000
También se puede utilizar la palabra clave “end” para encontrar elementos desde la
posición deseada hasta el final, por ejemplo, elementos de la posición 2 al final x=1:0.5:5; x (2: end) ans= 1.5000.1000 2.5000 3.0000 3.5000 4.0000 4.5000 5.0000
2.2 FUNCIONES Las funciones son expresiones reusables, son una especie de objetos en las cuales se programa secuencias que se repiten dentro de la aplicación algunas veces Ejemplo 2.1: SUMA clc; clear all; format rat; var1=input('ingrese el primer sumando\n'); var2=input('ingrese el segundo sumando\n'); s=var1+var2; disp(['la suma de: ' num2str(var1) ' + ' num2str(var2) ' = ' num2str(s)]);
[1] [2] [3] [4] [5]
EXPLICACION:
224
Métodos Numéricos con MatLab
Ing.: Willam Caiza
[1] Borra todas las variables, incluyendo las globales, y las funciones [2] Matlab cuenta con distintos modos de trabajo, por defecto es el format short, para este ejemplo se coloca el modo de trabajo en formato racional, es decir que expresa los números racionales como cocientes de enteros [3] La función input permite ingresar por teclado los datos requeridos en el programa [4]A la variable s se le asigna la operación suma (var1+var2) [5] La función disp de MATLAB se utiliza para mostrar un escalar, un mensaje (string), un vector o una matriz.
Imagen 2.1: Ejecución del programa
Como se observa en la fig. 2.1 mediante el uso de comandos básicos y el ingreso de datos por teclado se puede realizar distintas operaciones básicas, en este caso una suma de valores ingresados por teclado
FUNCIÓN clc; clear all; funcion=input('Ingrese la funcion:','s'); f=inline(funcion); a=input('Ingrese el valor inicial de x, a=\n'); b=input('Ingrese el valor final de x, b=\n'); paso=input('Ingrese el paso de [a,b]\n'); x=a:paso:b; [filax columnax]=size(x); for i=1:columnax y(i)=f(x(i)); end disp(['columna x columna y']); disp([x' y']);
[1] [2]
[3]
[4]
EXPLICACION: [1] La función input permite ingresar por teclado los datos requeridos en el programa [2] la función inline permite que la variable función sea reconocida como una expresión matemática [3] Forma de expresar un vector
225
Métodos Numéricos con MatLab
Ing.: Willam Caiza
[4] La función disp de MATLAB se utiliza para mostrar un escalar, un mensaje (string), un vector o una matriz.
Imagen2.2: Ejecución del programa
Ejemplo 2.3:
GRAFICA PARABOLA clc; clear all; funcion=input('Ingrese la funcion:','s'); f=inline(funcion); tinicial=input('Ingrese el tiempo inicial:\n'); tfinal=input('Ingrese el tiempo final:\n'); t=tinicial:0.2:tfinal; [filat columnat]=size(t); for i=1:columnat y(i)=f(t(i)); end plot(t,y,'r'); disp(['columna t columna y']); disp([t' y']);
[1] [2]
[3]
[4]
EXPLICACION: [1] La función Inline nos permite crear en la misma ventana de comandos, una corta función que puede ser llamada de forma repetida [2] Asignacion de datos a una variable [3] Forma de expresar un vector [4] La función disp imprime al vector
226
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Imagen 2.3: Ejecucion del Programa
El siguiente programa realiza el grafico de una función por medio del comando plot, el cual toma los valores de la variable ingresada. De esta manera primero se ingresa la función deseada y se ingresan los valores límite para la variable. Por medio del bucle for se evalúa la función de acuerdo a los valores que tome la variable logrando así obtener los puntos para la gráfica. Ejemplo 2.4: FUNCIÓN DE VARIAS VARIABLES clc; clear all; funcion=input('Ingrese la funcion: ', 's'); f=inline(funcion); disp(f(2,-2,3,-3))
[1] [2] [3]
EXPLICACION: [1] Borra todas las variables, incluyendo las globales, y las funciones [2] La función input permite ingresar por teclado los datos requeridos en el programa [3] La función Inline nos permite crear en la misma ventana de comandos, una corta función que puede ser llamada de forma repetida
227
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Imagen 2.4: Ejecucion del Programa
Para el siguiente programa se desea evaluar una función con varias variables, por medio del comando inline se facilita el cálculo. Se ingresa la función de varias variables y de acuerdo a los valores constantes de cada variable se hará el cálculo. 3. MATRICES Para trabajar con matrices se debe, ingresar sus valores por filas, cada valor de la fila deberá estar separada por espacio o por coma y cada fila se separa con un punto y coma como se indica a continuación: >>A=[3 7;-1 2] A= 3 -1
7 2
Para encontrar una posición en especial de la matriz: >>A(2,2) Ans= 2
Ejemplo 3.1: MATRIZ clc; clear all; filas=input('Ingrese el numero de filas=\n'); columnas=input('Ingrese el numero de columnas=\n'); for i=1:filas for j=1:columnas etiqueta=['Ingrese la matriz A(' num2str(i) ',' num2str(j) ')=']; A(i,j)=input(etiqueta); end end disp(A);
228
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Imagen 3.1: Ejecucion del Programa
El ejemplo ilustra la construcción de una matriz, para la cual se debe ingresar el número de filas y columnas deseadas por medio del teclado Por medio de un bucle se ingresan los datos que ocuparan cada posición de la Matriz.
4 OPERADORES RELACIONALES Permiten comparar datos, los resultados son valores lógicos, es decir: 1 (verdadero) o 0 (falso).
Imagen A1. Operadores relacionales
ESTRUCTURAS DE CONTROL Matlab se manejan principalmente tres estructuras de control:
Decisión: if ... elseif ... else ... end
Repetición un número fijo de veces: for ... end
229
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Repetición bajo condiciones: while... end Se puede, pero no es habitual, utilizar estas estructuras en la ventana de trabajo de Matlab.
CONDICIONAL Si queremos ejecutar un conjunto de instrucciones en el caso de que se cumpla una condición, usaremos una estructura if. La manera más sencilla de usarla es la siguiente:
if expresion logica Conjunto de ordenes (de Matlab) end
El conjunto de ordenes se ejecuta si la expresión lógica es verdadera. CONTROL DE FLUJO MATLAB, al igual que la mayoría de los lenguajes de programación, incluye instrucciones para el control del flujo de sus programas, incrementando de esta forma la potencia de los cálculos realizables. BUCLES FOR Estos bucles permiten la ejecución de un comando o grupo de comandos, en base a un número predeterminado de veces. Por ejemplo:
for i=1:n, x(i)=0, end
Asigna el valor 0 a los n primeros elementos del vector x. Si n es menor que 1, el comando central no se ejecutará ninguna vez. Si x no existe, o bien tiene menos de n elementos, se reservará memoria adicional de forma automática. Una práctica común es la utilización de bucles anidados: for i=1:m for j=1:m A(i,j)=1/(i+j-1) ; end end
Es importante no olvidar que cada sentencia for debe concluir con su end correspondiente. BUCLES WHILE
230
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Los bucles WHILE permiten la ejecución de un comando o grupo de comandos un número indeterminado de veces bajo el control de una condición lógica. Esto es, los comandos se ejecutarán mientras se verifique dicha condición. Como ejemplo mostramos los comandos necesarios para averiguar cuál es el primer número entero cuyo factorial es un número de 100 dígitos: n=1 while prod(1:n)< 1e100, n=n+1; end;
SENTENCIA IF En su forma más simple, la sentencia if se escribe en la siguiente forma (obsérvese que a diferencia de C/C++/Java – la condición no va entre paréntesis, aunque se pueden poner si se desea): if condicion sentencias end
Existe también la bifurcación múltiple, en la que pueden concatenarse tantas condiciones como se desee, y que tiene la forma: if condicion1 bloque1 elseif condicion2 bloque2 else [1] bloque3 end [1] opción por defecto para cuando no se cumplen las condiciones 1 ni 2
La opción por defecto else puede ser omitida: si no está presente no se hace nada en caso de que no se cumpla ninguna de las condiciones que se han chequeado. Un ejemplo de uso podría ser: if I == J A(I,J) = 2; elseif abs(I-J) == 1 A(I,J) = -1; else A(I,J) = 0; end
Es interesante aquí observar qué obtenemos al ejecutar las sentencias anteriores dentro de dos bucles for anidados. Ejecutando help relop se puede obtener información sobre el funcionamiento de los operadores relacionales utilizados en las sentencias de control.
231
Métodos Numéricos con MatLab
Ing.: Willam Caiza
5 INTRODUCCIÓN A LA INTERFACE GRÁFICA DE USUARIO (GUI) Desde el punto de vista de la programación, una GUI es una visualización gráfica de una o más ventanas que contienen controles, llamados componentes, que permiten a un usuario realizar tareas en forma interactiva. GUI es un entorno de programación gráfica, que ofrece Matlab para poder realizar y ejecutar diversos programas, el entorno de Matlab tiene las características básicas de todos los programas visuales como Visual Basic o Visual C++.
Para poder realizar un programa en GUI, se debe seguir los siguientes pasos: 1. En la ventana principal de Matlab, se debe ejecutar el comando ‘guide’, obteniendo la siguiente ventana
Imagen 1: Comando Guide
Con las siguientes opciones, como se describe en el grafico anterior. Elegimos la primera opción, Blank GUI, y tenemos la siguiente ventana:
Imagen 2: Mascara De Interface De Matlab
232
Métodos Numéricos con MatLab
Ing.: Willam Caiza
2. En la ventana anterior se puede colocar diversos componentes predefinidos por Matlab, los cuales podrían ser: Select
Push Button
Slider
Radio Button
Check Box
Edit Text
Static Text
Po -u Menu
ListBox
Toggle Button
Table
Axes
Panel
Button Grou
ActiveX Control
Imagen 3: Paleta de componentes
3. Grabar el archivo con la extensión predefinido por Matlab (.m).
Una aplicación GUI consta de dos archivos uno cuya extensión es .m y otro cuya extensión es .Imagen, la cual es la parte grafica del programa. Las dos partes están unidas a través de las subrutinas callback. Una vez que se graba los archivos podemos ejecutar el programa desde la ventana del comando de Matlab solamente escribiendo el nombre del archivo. Por ejemplo si guardamos un archivo sumador.Imagen y sumador.m escribiendo sumador y presionando enter se ejecuta el programa.
6 EJEMPLOS BASICOS A LA INTRODUCCION A MATLAB
Ejemplo 1: En el ejemplo se hace uso de un “pushbutton”, “edit” y “text”, se ingresa un texto en “edit” se hace click y el texto pasa a “text”.
233
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Pushbutton1 Edit1
Text1
Ejemplo 1: Interfaz
function pushbutton1_Callback(hObject, eventdata, handles) objeto1=get(handles.edit1,'string'); set(handles.text1,'string',objeto1)
[1] [2]
EXPLICACION: [1] El método get permite que la variable objetos1 guarda los datos escritos en el objeto edit1 [2] El método set permite ingresar en el objeto text1 lo almacenado en la variable objeto1
Ejemplo 1: Ejecución
Ejemplo 2: El ejemplo hace uso del objeto “axes”, para graficar una función
234
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Pushbutton1
Axes1
Ejemplo 2: Interfaz
function pushbutton1_Callback(hObject, eventdata, handles) x=linspace(0,10,100); [1] plot(handles.axes1,x,cos(x)); [2]
EXPLICACION: [1] La función linspace (a,b,n) permite definir un intervalo y un número de puntos a utilizarse en ese intervalo [2] La función plot permite graficar en el objeto axes1 todos los puntos de la variable x en base a la función coseno
Ejemplo 2: Ejecución
Ejemplo 3: Se hace uso de dos objetos “axes”, en el cual se puede ver su uso para realizar gráficos.
235
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Pushbutton1
Axes1
Axes2
Ejemplo 3: Interfaz
function pushbutton1_Callback(hObject, eventdata, handles) x=linspace(0,10,100); [1] plot(handles.axes1,x,cos(x)); [2] plot(handles.axes2,x,x.^2); [3]
EXPLICACION: [1] La función linspace(a,b,n) permite definir un intervalo y un número de puntos a utilizarse en ese intervalo [2] La función plot permite graficar en el objeto axes1 todos los puntos de la variable x en base a la función coseno [3] La función plot permite graficar en el objeto axes2 todos los puntos de la variable x en base a la función X^2
Ejemplo 3: Ejecución
Ejemplo 4: En el ejemplo se muestra un menú de opciones de colores, que al elegir nos muestra el color seleccionado.
236
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Popupmenu 1 Text 1
Ejemplo 4: Interfaz
PRIMERA FORMA: function popupmenu1_Callback(hObject, eventdata, handles) texto=get(handles.popupmenu1,'Value'); switch(texto) case 1 color='y'; case 2 color='g'; case 3 color='b'; case 4 color= [ 1 0 1]; end set(handles.text1,'Backgroundcolor',color);
[1] [2]
EXPLICACION: [1] El objeto popupmenu1 contiene un arreglo ordenado de números (en este caso va del 1 al 4), y a cada posición del arreglo le es asignado un nombre, la variable texto acoge la opción seleccionada [2] La función switch permite seleccionar una acción en base a lo asignado en la variable texto SEGUNDA FORMA: function popupmenu1_Callback(hObject, eventdata, handles) clc; contenido=get(hObject,'string'); valor=get(hObject,'Value'); texto=contenido(valor); switch cell2mat(texto) case 'Amarillo' color='y'; case 'Verde' color='g'; case 'Azul' color='b'; case 'Rojo' color='r'; end
[1] [2] [3] [4] [5]
237
Métodos Numéricos con MatLab
Ing.: Willam Caiza
set(handles.text1,'Backgroundcolor',color);
[6]
EXPLICACION: [1] Vector de objetos amarillo, verde, azul [2] La función hObject permite acceder a la variable contenido cuando el programa se encuentra en ejecución [3] Acceder a cada uno de los índices [4] Transforma la matriz de arrays en una matriz del tipo matemático [5] Si se escoge la opción” Amarillo”, la variable color almacena la letra “y” [6] El objeto text1 , con la función “Backgroundcolor”, cambia al color indicado por la variable col or
OBSERVACIONES Para los demás casos se repiten los mismas acciones realizadas en el literal [5]
Ejemplo 4: Ejecución
Ejemplo 5: En este ejemplo mostramos una lista con operaciones aritméticas, ingresando los números n1=5 y n2=10, procedemos a seleccionar una de las operaciones y ver su resultado.
Listbox 1
Text 2 Ejemplo 5: Interfaz
function listbox1_Callback(hObject, eventdata, handles) contenido=get(hObject,'string') a=get(hObject,'Value') operaciones=contenido(a) n1=5; [1] n2=10; switch cell2mat(operaciones)
238
Métodos Numéricos con MatLab case 'Suma' res=n1+n2 case 'Resta' res=n1-n2; case 'Multiplicacion' res=n1*n2; case 'División' res=n1/n2; end set(handles.text2,'string',res);
Ing.: Willam Caiza
[2]
EXPLICACION: [1] La variable n1 se encuentra inicializada con el numero 5
[2] A la variable res se le asigna una operación matemática (suma)
Ejemplo 5: Ejecución
Ejemplo 6:
Uibuttongroup 1
Text 2
Radiobutton 1
Text 3 Pushbutton 1 Ejemplo 6: Interfaz
function pushbutton1_Callback(hObject, eventdata, handles) estado = get(handles.radiobutton1,'Value'); if estado==1 set(handles.text3,'String', 'Sopa'); end
[1] [2] [3]
239
Métodos Numéricos con MatLab
Ing.: Willam Caiza
estado = get(handles.radiobutton2,'Value'); if estado==1 set(handles.text3,'String', 'Sandwich'); end
EXPLICACION: [1] La función valué permite comprobar si ha sido seleccionado el radiobuton, entonces la variable "estado” se le asigna el numero 1
[2] Si la variable estado es 1 entonces asido seleccionado radiobuton 1 [3] En el objeto text3 se visualizara la el mensaje "Sopa", caso contrario la otra opción
Ejemplo 6: Ejecución
Ejemplo 7: Uso de un Radio Button para cambiar el tamaño de letra en un mensaje
Buttongroup 1 Text 1
Radiobutton
Ejemplo 7: Interfaz function uibuttongroup1_SelectionChangedFcn(hObject, eventdata, handles) A=get(hObject,'String'); [1] switch A case '10' set(handles.text1,'FontSize',10); [2] case '14' set(handles.text1,'FontSize',14); [3]
240
Métodos Numéricos con MatLab case '18' set(handles.text1,'FontSize',18); end
Ing.: Willam Caiza
[4]
EXPLICACION: [1] La variable A almacena la opción seleccionada en el radio button [2] La función Fotsize permite seleccionar el tamaño de la letra en base a la variable A, si A=10 entonces el tamaño de la letra cambia a 10 [3] Si A = 14 cambia el tamaño de la letra del texto [4] Si A = 18 cambia el tamaño de la letra del texto OBSERVACIONES: El siguiente ejemplo ilustra el uso de un Radio Button para cambiar el tamaño de letra en un mensaje, para ello es necesario tener presente las siguientes definiciones: Button Group: Solo se puede tener un Button Group en la Gui, permite exclusividad de selección con los radio button. Radio Button: Indica una opción que puede ser seleccionada y realiza una acción determinada.
Ejemplo 7: Ejecución
Ejemplo 8:
Realizaremos un ejemplo de cómo usar el check Box. 1. Creamos una nuevo Gui y colocamos cada elemento que usaremos. 2. Realizamos el algoritmo que muestre la función de cada elemento
241
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Uibuttongroup 1 Axes 1
Radiobutton 1
Checkbox 1 Ejemplo 8: Interfaz
function uibuttongroup1_SelectionChangedFcn(hObject, eventdata, handles) A=get(hObject,'String'); switch A case 'Seno' ezplot('sin(x)',[0 10]); case 'Coseno' ezplot('cos(x)',[0 10 ]); case 'Tangente' ezplot('tan(x)',[0 10]); end function checkbox1_Callback(hObject, eventdata, handles) valor=get(hObject,'Value'); if valor==1 grid on; else grid off ; end
[1]
[2]
[3] [4]
EXPLICACION: [1] Uibuttongropu1 contiene a un grupo de radiobutton, y asu vez permite que solo un radiobutton pueda ser seleccionado a la vez [2] Permite graficar la función en base al interval dado [3] La función grid on permite mostrar líneas de la cuadrícula [4] La función grid on permite ocultar líneas de la cuadrícula OBSERVACIONES: Check Box: Indica el estado (on ó off) de un atributo, y Toggle Button: Un botón con solo 2 estados (on ó off)
242
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Ejemplo 8: Ejecución
Ejemplo 9: Para realizar el ejemplo se realiza lo siguiente: 1. Creamos una nuevo Gui y colocamos cada elemento que usaremos. 2. Realizamos el algoritmo que muestre la función de cada elemento
Slider1
Axes1
Ejemplo 9: Interfaz
function slider1_Callback(hObject, eventdata, handles) A=get(hObject,'Value'); x=linspace(0,10,100); y=A*sin(A*x); plot(x,y);
[1] [2] [3]
EXPLICACION: [1] En este ejemplo se
muestra como poder aumentar o disminuir la ampliación de una gráfica con el uso de Slide.
243
Métodos Numéricos con MatLab
Ing.: Willam Caiza
[2] La variable A evalúa las acciones hechas en el slider1 [3] A la variable y se le asigna el producto de A por la función seno OBSERVACIONES: Slider: Es una barra que nos permite deslizarnos para aumentar o disminuir el rango de valores.
Ejemplo 9: Ejecución
3. 4.
Ejemplo 10: Realizaremos un ejemplo de cómo usar tablas. 1. Creamos una nuevo Gui y colocamos cada elemento que usaremos. 2. Realizamos el algoritmo que muestre la función de cada elemento.
Uitable1
Ejemplo 10: Interfaz
function pushbutton1_Callback(hObject, eventdata, handles) A={'Pedro' 'Ana' 'David' 'Gabriela'}; [1] P={10 20 15 12}; [2] datos=[A' P']; [3] set(handles.uitable1,'data',datos);
244
Métodos Numéricos con MatLab
Ing.: Willam Caiza
EXPLICACION: [1] A es un vector de string [2] P es un vector de numeros [3] A' es la transpuesta del vector A , P' es la transpuesta del vector P , la variable datos une la transpuesta del vector A y la transpuesta del vector P
Ejemplo 10: Ejecución
Ejemplo 11: A continuación realizaremos el algoritmo de la suma de 2 variables 1. Como muestra la figura 11.1 procedemos a insertar los objetos necesarios. 2. De la paleta de componentes escogemos dos edit text, los cuales serían edit1 y edit2 respectivamente, insertamos un push button y dos static text.
Figura 11.1: componentes para la interface
3. Al guardar el archivo, Matlab internamente crea el código necesario de los objetos insertados para proceder a utilizarlos y manipular los objetos insertados en la fig.11.1 OBSERVACION:
245
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Generalmente se programara dentro de la “function pushbutton1_Callback (hObject, eventdata, handles)”.
text2
Text 6
Edit 1
Edit 2
Pushbutton 1 Text 4
Text 5
Ejemplo 11: Interfaz function pushbutton1_Callback(hObject, eventdata, handles) valor1=str2double(get(handles.edit1,'string')); valor2=str2double(get(handles.edit2,'string')); suma=valor1+valor2; set(handles.text5,'string',suma);
[1] [2] [3]
EXPLICACION: [1] Al “valor1” se le asigna el contenido del objeto “edit1” La función “str2double” realiza la transformación de string a un valor numérico; La función “get” es la función por medio de l a cual obtenemos los valores ingresados por el usuario
[2] Suma=valor1+valor2, realiza la respetiva suma. [3] La función “set” (colocar), muestra los resultados obtenidos en el programa por medio del objeto
“text2”.
Ejemplo 12: Ejecución del algoritmo de la suma
Ejemplo 12:
246
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Algoritmo de Suma y Promedio.
Text 2 Text 6
Pushbutton 1
Text 5
Ejemplo 12: Interfaz function pushbutton1_Callback(hObject, eventdata, handles) n=str2double(inputdlg('cuantos numeros desea ingresar')); for i=1:n etiqueta1=['Ingrese dato(' num2str(i) ')']; datos(i)=str2double(inputdlg(etiqueta1)); end s=0; for i=1:n s=s+datos(i); end promedio=s/n; set(handles.text5,'string',s); set(handles.text6,'string',promedio);
[1] [2] [3] [4]
[5] [6]
Ejemplo 22: Ejecución
EXPLICACION: [1] inputdlg aparece un cuadro de dialogo donde idicamos cuantos datos se ingresaran [2]Utilizamos el comando “ for… end”, para poder ingresar los datos al programa. [3] la variable "etiqueta1" indica el orden de los datos [4] el arreglo datos(i), aparece un cuadro de dilogo que acojera todos los datos que ingresemos [5] Utilizamos la variable s como inicializador de la suma de los números ingresados, mediante la cual podemos realizar la suma de los datos.
247
Métodos Numéricos con MatLab
Ing.: Willam Caiza
[6] calculamos el promedio, utilizando la suma anterior dividida para el número de datos ingresados.
Ejemplo 32: Ejecución
Ejemplo 12: Ejecución de algoritmo suma y promedio
Ejemplo 13: Programa Para Sumar o Multiplicar Datos en un listbox
248
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Uipanel 1 Pushbutton 1
Edit 1 Pushbutton 2
Listbox 1
Pushbutton 3
Text 1
Ejemplo 43: Interfaz
function pushbutton1_Callback(hObject, eventdata, handles) dato=get(handles.edit1,'String'); old_dato=get(handles.listbox1,'String'); new_dato=strvcat(old_dato,dato); set(handles.listbox1,'String',new_dato);
[1] [2] [3] [4]
EXPLICACION: [1] Se importan los datos del edit1 [2]Se importa el dato ingresado del Listbox1 [3]Se crea un nuevo dato concatenando verticalmente los datos del Listbox1 con el comando “strvcat”. [4]Se imprimen los datos concatenados en el Listbox1. SUMA
249
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Ejemplo 53.1: Ejecución Suma
function pushbutton2_Callback(hObject, eventdata, handles) acum=0; x=str2num(get(handles.listbox1,'string')); for i=1:length(x) acum=acum+x(i); end set(handles.text1,'string',acum);
[1] [2] [3]
EXPLICACION: [1] Se crea un acumulador que este igualado a 0, [2] Se asigna a una variable los datos encontrados en el Listbox [3] Se crea un bucle con un For que empiece desde 1 y recorra hasta el número de datos ingresados en el Listbox [4] Dentro del for se acumulan los datos (acum=acum+ datos), de esta manera los datos quedan sumados. MULTIPLICACIÓN
250
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Ejemplo 63.2: Ejecución Multiplicación
function pushbutton3_Callback(hObject, eventdata, handles) mul=1; x=str2num(get(handles.listbox1,'string')); for i=1:length(x) mul=mul*x(i); end set(handles.text1,'string',mul);
[1] [2] [3] [4]
EXPLICACION:
[1]Se crea una variable que este igualado a 1 ya que con esta variable vamos a realizar las multiplicaciones y la multiplicación por 0 es 0, [2] Se coloca en una variable los datos encontrados en el Listbox [3] se crea un For que empiece desde 1 y recorra hasta el número de datos ingresados en el Listbox [4] Dentro del for se multiplican los datos (mul=mul*datos Ejemplo 14: Importación y exportación de datos entre Excel y Matlab
251
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Pushbutton 1
Pushbutton 2
Text 2
Text 3
Uitable 1
Ejemplo 14: Interfaz
function pushbutton1_Callback(hObject, eventdata, handles) Ruta=inputdlg('Ingrese ruta de archivo xlsx(con extensión)'); set(handles.text2,'string',Ruta); A=cell2mat(Ruta); B=xlsread(A); set(handles.uitable1,'data',B); function pushbutton2_Callback(hObject, eventdata, handles) B=get(handles.uitable1,'data'); Ruta2=inputdlg('Ingrese ruta de destino (con extensión):' ); set(handles.text3,'string',Ruta2); C=cell2mat(Ruta2); xlswrite(C,B);
[1] [2] [3] [4]
[5] [6] [7] [8]
EXPLICACION: [1] Se utiliza la función inputdlg para ingresar por un cuadro de diálogo la dirección del archivo a leer [2] Se usa la función cell2mat en la variable ruta para convertir el vector tipo cell a vector normal. [3] Se usa la función xlsread para importar los datos desde la ruta ingresada. [4] En la quinta línea presentamos los datos importados en una tabla de datos. Botón 2: [5] Se obtienen los datos de la tabla. [6] se ingresa la ruta de destino para el nuevo archivo [7] Se utiliza usamos la función cell2mat para convertir el vector tipo cell a vector normal. [8] Se exporta el archivo, con la función xlswrite, a la ruta ingresada con los datos obtenidos.
252
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Ejemplo 14: Importación y Exportacion
Ejemplo 14: Ejecución
Ejemplo 15:
253
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Uso de Axes Mediante el uso del axes en el entorno grafico guide del Matlab nosotros podemos crear la gráfica de una función que ingresemos: Para obtener un axes presionamos el botón indicado por la flecha en el entorno grafico guide:
Pushbutton 1
Axes 1
Ejemplo 15: Uso de Axes Interfaz
function pushbutton1_Callback(hObject, eventdata, handles) funcion=char(inputdlg('ingrese la funcion')); f=inline(funcion); etiqueta1=['(x)inicial']; xi =str2double(inputdlg(etiqueta1)); etiqueta2=['(x)final']; xf =str2double(inputdlg(etiqueta2)); x=xi:0.1:xf; [f1 c]=size(x); for i=1:c y(i)=f(x(i)); end plot(handles.axes1,x,y ,'g'); hold on; plot(handles.axes1,[min(x) max(x)],[0 0],'r'); plot(handles.axes1,[0 0], [min(y) max(y)], 'r'); xlabel('x') ylabel('y')
[1] [2]
[3]
[4]
EXPLICACION: [1] Usamos la función (char) para convertir la función en una cadena de caracteres y poder evaluarla
254
Métodos Numéricos con MatLab
Ing.: Willam Caiza
[2] Ingresamos los datos para poder evaluar la función mediante etiquetas: [3]Mediante un (for) Definimos el vector para poder realizar las graficas. [4]Mediante la función plot dibujamos un vector de valores (y) en ordenadas frente a otro vector(x) en las abscisas. Ambos vectores tienen el mismo número de elementos. OBSERVACIONES:
La función hold on, nos permite dibuja barias líneas en una misma figura. La función lebel podemos poner nombre a los ejes de la grafica
También es posible cambiar el color y la forma de la grafica
Colores: 'r'(rojo), 'b'(azul), 'g'(verde), 'y'(amarillo), 'k'(negro), 'm'(morado), 'w'(blanco), 'c'(celesta),…
Ejemplo 15: Ejecución
Ejemplo 16: Uso del Uitable Uitable es una función del entorno grafico de Matlab que enumera los datos ingresados o enumera los resultados de un programa. Para obtener un uitable presionamos el botón indicado en el entorno grafico guide:
255
Métodos Numéricos con MatLab
Ing.: Willam Caiza
Ui anel 1
Pushbutton 1
Uitable 1
Axes 1 Ui anel 2 Uitable 2 Ejemplo 16: Uso de Uitable Interfaz
function pushbutton1_Callback(hObject, eventdata, handles) funcion=char(inputdlg('ingrese la funcion')); f=inline(funcion); etiqueta1=['(x)inicial']; xi =str2double(inputdlg(etiqueta1)); etiqueta2=['(x)final']; xf =str2double(inputdlg(etiqueta2)); x=xi:0.1:xf; [f1 c]=size(x); for i=1:c y(i)=f(x(i)); end plot(handles.axes1,x,y); hold on; plot(handles.axes1,[min(x) max(x)],[0 0],'r'); plot(handles.axes1,[0 0], [min(y) max(y)], 'r'); datos1=[x' y']; datos2=[xi xf']; set(handles.uitable1, 'ColumnName', {'x','y'}); set(handles.uitable1,'data', datos1); set(handles.uitable2, 'RowName', {'X0','Xf'}); set(handles.uitable2,'data',datos2 ); xlabel('x') ylabel('y')
[1] [2]
[3]
EXPLICACION: [1] Ingresamos la funcion en el inputdlg [2] La función Inline permite que la variable función se con vierta en una expresión matemática [3] [m,n] = size(X) [m,n] = size(X) devuelve el tamaño de la matriz X en las independientes m y n
variables
OBSERVACIÓN: Se puede poner nombres a las filas o columnas de nuestra uitable mediante las funciones :
256
Métodos Numéricos con MatLab
Ing.: Willam Caiza
'ColumnName': La cual nos sirve para nombrar las columnas. 'RowName’: La cual usamos para nombrar las filas.
Ejemplo 16: Ejecución
Ejemplo 17: Uso del elemento Checkbox y Msgbox
Text 2 Checkbox 1
Ejemplo 17: Uso de Checkbox y Msgbox Interfaz
function checkbox1_Callback(hObject, eventdata, handles) if (get(hObject,'Value') == get(hObject,'Max')) msgbox('Seleccionado'); else msgbox('No seleccionado'); end
[1] [2]
257