Está en la página 1de 163

ndice

Introduccin..5 Pasos a seguir para resolucin de problemas...5 Definicin de error..6 Tipos de errores..8 Aplicaciones de los mtodos numricos en ingeniera....9 Mtodos numricos Eliminacin Gaussiana sin normalizar Objetivo ...11 Introduccin.12 Desarrollo Ejemplo para resolucin manual13 Cdigo en Matlab.....14 Diagrama de flujo.....15 Cdigo en C++.........16 Conclusin..17 Eliminacin Gaussiana Normalizado Objetivo...18 Introduccin....19 Desarrollo Ejemplo para resolucin manual....20 Cdigo en Matlab..21 Diagrama de flujo....................22 Cdigo en C++............................24 Conclusin......25 Eliminacin Gauss-Jordan Objetivo.............................26 Introduccin..........................27 Desarrollo Ejemplo para resolucin manual....29 Cdigo en Matlab..30 Diagrama de flujo .....32 Conclusin......33 Matriz inversa Objetivo....35 Introduccin.....36 Desarrollo Ejemplo para resolucin manual.37 Cdigo en Matlab.......38 Diagrama de flujo39 Cdigo en c..40 Conclusin....42 Factorizacin LU Objetivo..41 Introduccin......42 Desarrollo Factorizacin LU con pivote.43 Ejemplo para resolucin manual.44 Cdigo en Matlab...46 Diagrama de flujo...46

Pgina 1

Conclusin...48 Eliminacin Gauss-Seidel Objetivo.53 Introduccin..54 Desarrollo Ejemplo para resolucin manual..56 Cdigo en Matlab....57 Conclusin.59 Eliminacin por medio de biseccin Objetivo.....60 Introduccin..61 Desarrollo Ejemplo para resolucin manual..........63 Cdigo en Matlab....64 Diagrama de flujo.65 Cdigo en C..66 Conclusin.......................68 Eliminacin por regla falsa Objetivo.....69 Introduccin..70 Desarrollo Ejemplo para resolucin manual..........72 Cdigo en Matlab....73 Diagrama de flujo.74 Conclusin.......................75

Eliminacin por Newton-Raphson Objetivo.....76 Introduccin..77 Desarrollo Ejemplo para resolucin manual.........78 Cdigo en Matlab....79 Diagrama de flujo.80 Conclusin.......................81 Eliminacin por secante Objetivo.....82 Introduccin..83 Desarrollo Ejemplo para resolucin manual.........84 Cdigo en Matlab...85 Diagrama de flujo...86 Cdigo en C.87 Conclusin......................88 Eliminacin por interpolacin de Newton Objetivo.....89 Introduccin..90

Pgina 2

Desarrollo Ejemplo para resolucin manual..........92 Cdigo en Matlab....93 Diagrama de flujo.94 Cdigo en c...95 Conclusin.......................96 Eliminacin por diferencias divididas de Newton Objetivo.....97 Introduccin..98 Desarrollo Ejemplo para resolucin manual.........100 Cdigo en Matlab....101 Diagrama de flujo.102 Cdigo en C..103 Conclusin.......................104 Eliminacin por el mtodo de LaGrange Objetivo......105 Introduccin...106 Desarrollo Ejemplo para resolucin manual..........107 Cdigo en Matlab.....108 Diagrama de flujo.109 Cdigo en C..110 Conclusin.......................111 Eliminacin por mtodo de mnimos cuadrados Objetivo.....112 Introduccin..113 Desarrollo Ejemplo para resolucin manual.........114 Cdigo en Matlab....115 Diagrama de flujo....116 Cdigo en C.117 Conclusin.......................118 Eliminacin por regla del trapecio Objetivo.....119 Introduccin..120 Desarrollo Ejemplo para resolucin manual.........122 Cdigo en Matlab....123 Diagrama de flujo....124 Cdigo en C.125 Conclusin......................126 Eliminacin por mtodo de Simpson 1/3 Objetivo.....127 Introduccin..128 Desarrollo Ejemplo para resolucin manual.........129 Cdigo en Matlab....130 Diagrama de flujo....131 Cdigo en C.132 Conclusin......................133

Pgina 3

Eliminacin por mtodo de Simpson 3/8 Objetivo.....134 Introduccin..135 Desarrollo Ejemplo para resolucin manual.........137 Cdigo en Matlab...138 Diagrama de flujo...139 Cdigo en C.140 Conclusin......................141 Eliminacin por mtodo de Euler Objetivo.....142 Introduccin..143 Desarrollo Ejemplo para resolucin manual.........145 Cdigo en Matlab...146 Diagrama de flujo...147 Cdigo en C....148 Conclusin......................148 Eliminacin por mtodo de Euler mejorado Objetivo.....149 Introduccin..150 Desarrollo Ejemplo para resolucin manual.........151 Cdigo en Matlab....152 Diagrama de flujo....154 Cdigo en C.155 Conclusin......................156 Eliminacin por mtodo de Runge-Kutta Objetivo.....157 Introduccin..158 Desarrollo Ejemplo para resolucin manual.........159 Cdigo en Matlab...160 Diagrama de flujo...161 Cdigo en C162 Conclusin.....................163 Bibliografa164

Pgina 4

Introduccin
A lo largo del tiempo, los mtodos numricos han sido desarrollados con el objeto de resolver problemas matemticos cuya solucin es difcil o imposible de obtener por medio de los procedimientos tradicionales. Los mtodos numricos son tcnicas mediante las cuales es posible formular problemas de tal forma que sean resueltas con operaciones aritmticas, Estos nos vuelven aptos para entender esquemas numricos a fin de resolver problemas matemticos, de ingeniera, cientficos y administracin, reducir esquemas numricos bsicos, escribir programas y resolverlos en una computadora y usar correctamente el software existente para dichos mtodos y no solo aumenta nuestra habilidad para el uso de computadoras sino que tambin amplia la pericia matemtica y la comprensi6n de los principios cientficos bsicos. Son adecuados para la solucin de problemas comunes de ingeniera, ciencias y administracin, utilizando computadoras electrnicas. Pueden manejar sistemas de ecuaciones grandes, no linealidades y geometras complicadas, comunes en la ingeniera. Tambin es posible que se utilice software disponible comercialmente que contenga mtodos numricos. El uso inteligente de estos programas depende del conocimiento de la teora bsica de estos mtodos; adems hay muchos problemas que no pueden plantearse al emplear programas hechos, conociendo bien los mtodos numricos se puede disear programas propios y as no comprar software costoso. Al mismo tiempo se aprende a conocer y controlar los errores de aproximacin que son inseparables de los clculos numricos a gran escala.

Pasos a seguir para resolucin de problemas


En el proceso de solucin de problemas por medio de computadoras se requieren los pasos siguientes. Especificacin del problema. Con esto se indica que se debe identificar perfectamente el problema y sus limitaciones, las variables que intervienen y los resultados deseados. Anlisis. es la formulacin de la solucin del problema denominada tambin algoritmo, de manera que se tenga una serie de pasos que resuelvan el problema y que sean susceptibles de ejecutarse en la computadora. Programacin. Este paso consiste en traducir el mtodo de anlisis o algoritmo de solucin expresndole como una serie detallada de operaciones. Verificacin. Es la prueba exhaustiva del programa para eliminar todos los errores que tenga de manera que efecte lo que desea los resultados de prueba se comparan con soluciones conocidas de problemas ya resueltos. Documentacin. Consiste en preparar un instructivo del programa de manera que cualquier persona pueda conocer y utilizar el programa. Produccin. Es la ltima etapa en la que solo se proporcionan datos de entrada del programa obtenindose las soluciones correspondientes. De lo antes expuesto se puede concluir que es necesario un conocimiento completo del problema, y de los campos de las matemticas relacionados con el que es precisamente el objeto de los mtodos numricos para computadora.

Pgina 5

Para resolver el problema con una computadora significa mucho ms que el trabajo que ejecuta la maquina. Identificacin y definicin de objetos. descripcin matemtica. Anlisis numrico. Programacin de la computadora. Verificacin del programa. Produccin. Interpretacin.

La maquina sigue una serie de pasos o tambin denominado mtodo numrico la respuesta final para el usuario debe interpretar los resultados para ver lo que significan en funcin de las combinaciones del objetivo que el sistema propuesto debe satisfacer. Las soluciones que ofrecen los mtodos numricos son aproximaciones de los valores reales y, por tanto se tendr un cierto grado de error que ser conveniente determinar. El concepto de cifras o dgitos significativos se ha desarrollado para designar formalmente la contabilidad de un valor numrico. El numero de cifras significativas es el numero de dgitos, ms un digito estimado que se pueda usar con confianza; los ceros no siempre son cifras significativas ya que pueden usarse solo para ubicar el punto decimal. 1.-Los mtodos numricos obtienen resultados aproximados. Por lo tanto se debe desarrollar criterios para especificar que tan precisos son los resultados obtenidos. 2.-Aunque ciertas cantidades tales como , e o 7 representan nmeros especficos, no se puede expresar exactamente con un numero finitos de dgitos.

Definicin de un error
Los errores numricos se generan con el uso de aproximaciones para representar las operaciones y cantidades matemticas. Solo en raras ocasiones los datos proporcionados de un problema sern exactos, puesto que suelen originarse en procesos de medida, de modo que hay un error probable en la informacin de entrada. Adems el propio algoritmo genera un error, quiz redondeos inevitables. La informacin de salida contendr entonces error generados por las dos fuentes. Algunos trminos importantes en el anlisis de un error: Exactitud: se refiere a la cercana de un nmero o de una medida del valor verdadero que representa. Precisin: se refiere al nmero de cifras significativas que representan una cantidad. Esto incluye errores de truncamiento que resultan de representar aproximadamente un procedimiento matemtico exacto, y los errores de redondeo, que resultan de presentar aproximadamente nmeros exactos. Para los tipos de errores, la relacin entre el resultado exacto o verdadero y el aproximado esta dado por: Valor verdadero = valor aproximado + error Se encuentra que el error numrico es igual a la diferencia entre el valor verdadero y el valor aproximado esto es:

Pgina 6

E = valor verdadero valor aproximado Donde E se usa para redondear el valor exacto del error. Se incluye el subndice v par dar a entender que se trata del verdadero error. E = (error aproximado/ valor aproximado) 100 Donde el subndice a significa que el error est normalizado a un valor aproximado. Uno de los retos a que se enfrentas los mtodos numricos es el de determinar estimaciones del error en ausencia de conocimiento de los valores verdaderos. El error se calcula como la diferencia entre la aproximacin previa y la actual. Por lo tanto, el error relativo porcentual est dado por: E =ABS (((aproximacin actual- aproximacin previa)/ aproximacin actual) 100) Errores de redondeo Los errores de redondeo se deben a que las computadoras solo guardan un nmero finito de cifras significativas durante un clculo. Las computadoras realizan esta funcin de maneras diferentes; esta tcnica de retener solo los primeros siete trminos se llam truncamiento en el ambiente de computacin. Errores de truncamiento Los errores de truncamiento son aquellos que resultan al usar una aproximacin en lugar de un procedimiento matemtico exacto. Estos tipos de errores son evaluados con una formulacin matemtica: la serie de Taylor. Rn= (((n+1) (x))/(n+1)!)hn+1 Error numrico total El error numrico total es la suma de los errores de redondeo y de truncamiento. La nica forma de minimizar los errores de redondeo es la de incrementar el nmero de cifras significativas de la computadora. Errores por equivocacin En los primeros aos de la computacin los resultados numricos errneos fueron atribuidos algunas veces al mal funcionamiento de la computadora misma. Hoy en da esta fuente de error es muy improbable y la mayor parte de las equivocaciones se atribuye a errores humanos. Las equivocaciones ocurren a cualquier nivel del proceso de modelacin matemtica y pueden contribuir con todas las otras componentes del error. Errores de formulacin Los errores de formulacin o de modelamiento degeneran en lo que se podra considerar como un modelo matemtico incompleto, ya que si se est usando un modelo deficiente, ningn mtodo numrico generara los resultados adecuados.

Pgina 7

Aplicacin de los mtodos numricos en la ingeniera


Las aplicaciones de los mtodos numricos son prcticamente ilimitadas, y se requieren conocimientos de la materia en disciplinas tan variadas como: economa, contabilidad, mercadotecnia, qumica, ingeniera en computacin, etc. Encontramos as aplicaciones de los mtodos numricos en los mbitos ms diversos desde sectores tecnolgicos tan clsicos como la ingeniera estructural o la aerodinmica de aviones, hasta aplicaciones ms sofisticadas como ingeniera de alimentos, ingeniera medica, diseo de frmacos, biologa, etc... En la actualidad, gracias a la gran evolucin que han tenido los mtodos numricos y su implementacin en potentes computadoras, es posible, por ejemplo, modelar el choque de un vehculo o hacer el anlisis aerodinmico estructural de un avin, resolviendo en cada caso sistemas algebraicos de ecuaciones con varios cientos de miles (a veces de millones) de incgnitas. Se presentan a continuacin algunas aplicaciones de los mtodos numricos a diversos problemas de ingeniera. Mecnica de Slidos Existen hoy en da, un gran nmero de estructuras en ingeniera civil, que son modelados desde su concepcin utilizando tcnicas de elementos finitos. Mecnica de Fluidos Una rama muy importante de la ingeniera, es el estudio de la mecnica de fluidos, en donde las ecuaciones que gobiernan el fenmeno fsico tienen ciertas peculiaridades que las hacen difciles de abordar desde el punto de vista numrico. Aqu se presentan problemas de bloqueo numrico de la solucin y deben seguirse ciertas alternativas para hacer abordable el problema. Un tipo de problemas que es interesantes resolver es por ejemplo determinar las presiones que provoca el viento sobre una estructura determinada. Un ejemplo muy representativo podra ser el siguiente: Simulacin de aerodinmica de vehculos. Otro aspecto muy importante en una aplicacin de la Mecnica de Fluidos es el de generar laboratorios virtuales para modelar fenmenos fsicos. Por ejemplo el tnel de viento para modelar el paso de un vehculo a una cierta velocidad y determinar el coeficiente de penetracin en el aire, el cual puede incidir en el gasto energtico del vehculo para poder mantener una velocidad constante.

Pgina 8

Medios de Transporte En general, para la concepcin y produccin de un vehculo (ya sea un automvil, un avin o un barco) es muy comn utilizar modelos numricos de dinmica de fluidos para simular el comportamiento del vehculo en movimiento (ya sea en tierra, en aire o en ambos). Esto permite optimizar la forma geomtrica exterior del mismo de manera que su resistencia al avance sea la mnima posible, lo que permitir tener una vida til ms larga, menor consumo de combustible, que sea menos contaminante, que sea ms ligero (ms barato de producir). Procesamiento de Imgenes Mdicas. El problema de registro en imgenes, un problema relevante de procesamiento de imgenes medicas, consiste en encontrar la transformacin geomtrica que ponga dos imgenes dadas en la mejor correspondencia posible. Una de sus aplicaciones ms inmediatas es realizar el registro de un cerebro espcimen con el de un atlas anatmico en el que se conoce perfectamente a qu corresponde cada uno de los boxeles que forman la imagen. El aplicar una buena tcnica de registro de imgenes entre el atlas y el espcimen, nos permitira segmentar muy fcilmente cada una de las partes que integran la cabeza del espcimen.

Pgina 9

Eliminacin gaussiana sin normalizar


Objetivo
La eliminacin gaussiana es un mtodo para eliminar renglones o columnas de una matriz, esto ayuda a tener una matriz equivalente pero ms fcil de utilizar, la eliminacin gaussiana se utiliza para resolver sistemas de ecuaciones o encontrar la inversa de una matriz, el objetivo de la eliminacin gaussiana es tener una matriz escalonada realizando diferentes operaciones entre renglones o columnas de una matriz. En esta prctica veremos procedimientos sistemticos para resolver un sistema de ecuaciones lineales. Estos algoritmos trabajan directamente sobre la matriz aumentada del sistema llevndola a la matriz de un sistema triangular que es equivalente al sistema inicial. La equivalencia del sistema triangular final con el inicial se argumenta debido a que el algoritmo solo utiliza los tres tipos de operaciones.

Pgina 10

Introduccin
El primer mtodo que se presenta usualmente en lgebra, para la solucin de ecuaciones algebraicas lineales simultneas, es aquel en el que se eliminan las incgnitas mediante la combinacin de las ecuaciones. Este mtodo se conoce como Mtodo de eliminacin. Se denomina eliminacin gaussiana si en el proceso de eliminacin se utiliza el esquema particular atribuido a Gauss. Utilizando el mtodo de Gauss, un conjunto de n ecuaciones con n incgnitas se reduce a un sistema triangular equivalente (un sistema equivalente es un sistema que tiene iguales valores de la solucin), que a su vez se resuelve fcilmente por sustitucin inversa; un procedimiento simple que se ilustrar con la presentacin siguiente:
a11 x1 + a12 x2 + a13 x3 + + a1n xn = c1 a21 x1 + a22 x2 + a23 x3 + + a2n xn = c2 ..... ..... ..... an1 x1 + an2 x2 + an3x3 + + ann. xn = cn

En donde: Aij: Se denomina trminos. Xi: Se denomina variables. Ci: Se denomina constantes. Aplicando la definicin de producto entre matrices, este sistema de n ecuaciones algebraicas lineales con n incgnitas puede escribirse en forma matricial, de la forma
A X = B.

Para realizar una correcta introduccin al tema que a continuacin se dar es necesario retomar algunos conceptos clave los cuales nos ayudaran a comprender mejor cada tema como es el caso de un sistema de ecuaciones lineales, tambin conocido como sistema lineal de ecuaciones o simplemente sistema lineal, que es un conjunto de ecuaciones lineales sobre un cuerpo o un anillo conmutativo. El mtodo de eliminacin Gaussiana para la solucin de sistemas de ecuaciones lineales consiste en convertir a travs de operaciones bsicas llamadas operaciones de rengln un sistema en otro equivalente ms sencillo cuya respuesta pueda leerse de manera directa. El mtodo de eliminacin Gaussiana es el mismo para sistemas de ecuaciones 22, 33, 44 y as sucesivamente siempre y cuando se respete la relacin de al menos una ecuacin por cada variable. Antes de ilustrar el mtodo con un ejemplo, es necesario primeramente conocer las operaciones bsicas de rengln las cuales son presentas a continuacin: 1. Ambos miembros de una ecuacin pueden multiplicarse por una constante diferente de cero. 2. Los mltiplos diferentes de cero de una ecuacin pueden sumarse a otra ecuacin 3. El orden de las ecuaciones es intercambiable. Una vez conocidas las operaciones que en mi afn por resolver un sistema de ecuaciones puedo realizar procedo a ilustrar el mtodo con un ejemplo:

Pgina 11

Ejemplo para resolucin manual


1. Resolver el siguiente sistema de ecuaciones: x + 2y + 3z = 1 4x + 5y + 6z= 2 7x + 8y + 10z = 5 Donde cada ecuacin representa un rengln y las variables iguales de las 3 ecuaciones representan las columnas 1, 2 y 3 respectivamente. Usando el mtodo de eliminacin Gaussiana. Solucin: Para simplificar las operaciones se retiran las variables y se mantienen exclusivamente los coeficientes de cada una, el signo de igual tambin es eliminado pero se mantienen los datos del lado derecho de la ecuacin. Quedando como sigue: Diagonal principal La diagonal principal de la matriz busca quede conformada por solo unidades (1) la parte inferior a la diagonal debe quedar en ceros. Esto se hace utilizando las operaciones bsicas de rengln para las ecuaciones, de arriba hacia abajo y de izquierda a derecha. Multiplico la ecuacin 1 por 4 y el resto de la ecuacin 2, de igual forma la multiplico por 7 y la resto de la 3 obteniendo. Despus divido la ecuacin 2 (rengln 2) entre 3 para hacer el componente de la diagonal principal 1 quedando como sigue: Multiplico la ecuacin 2 (rengln 2) por 6 y lo sumo a la ecuacin 3 (rengln 3). Una vez lograda la diagonal principal formada por unidades y los datos por debajo de la diagonal principal ceros reintegro las variables en cada ecuacin y tambin el signo igual de las ecuaciones obteniendo: Donde el valor de z= 10 y al sustituir este valor en la ecuacin resultante 2, tendramos y + 2z = 2 al sustituir el valor de z obtenemos que: y + 2(10) = 2 y + 20 = 2 y = 2- 20 y = 18 Al sustituir estos valores en la ecuacin resultante 1 se tiene: 1x + 2y + 3z = 1 Si z= 10 y y=18, entonces el valor de x ser: 1x + 2y + 3z = 1 x + 2(18) + 3(10)= 1 x 36 + 30 = 1 x6=1 x=1+6 x=7 La solucin del sistema de ecuaciones sera x= 7, y= 18, y z= 10. El sistema de eliminacin gaussiana es el mismo no importando si es un sistema de ecuaciones lineales del tipo 22, 33, 44 etc. siempre y cuando se respete la relacin de al menos tener el mismo nmero de ecuaciones que de variables.

Pgina 12

Cdigo en Matlab
%*********************************************************** >> clear all >> A=[2 -0.9 3 -3.61; -0.5 0.1 -1 2.035; 1 -6.35 -0.45 15.401]; >> [r,c]=size(A) r= 3 c= 4 >> %ELIMINACION HACIA ADELANTE >> for k=1:r-1 for i=k+1:r for j=c:-1:k A(i,j)=A(i,j)-(A(i,k)/A(k,k))*A(k,j); end end end >> A A= 2.0000 -0.9000 3.0000 -3.6100 0 -0.1250 -0.2500 1.1325 0 0 9.8500 -36.2480 >> %ELIMINACION HACIA ATRAS >> for k=r:-1:2 for i=k-1:-1:1 for j=c:-1:k A(i,j)=A(i,j)-A(i,k)*A(k,j); end end end %**********************************************************

Pgina 13

Diagrama de flujo

A continuacin se muestra el cdigo para realizar la eliminacin gaussiana en el software de programacin C++

Pgina 14

Cdigo en C

#include <stdio.h> #include <stdlib.h> int main() { //declarando variables para contadores int k,i,j,m,n; //inicializando dimensiones n=3;m=4; //inicializando matriz float A[3][4]={{40,-10,-30,10},{-10,30,-5,0},{-30,-5,65,0}}; //mover el pivote for(k=0;k<=n-1;k++) { //moverse en el rengln for(i=k+1;i<=n-1;i++) { //moverse en la columna for(j=m-1;j>=0;j--) { //haciendo las modificaciones para gauss sin normalizar A[i][j]=A[i][j]-((A[i][k]/A[k][k])*A[k][j]); } } } //para imprimir la matriz resultante printf("Mtodo: Gauss sin normalizar\n\n"); for(i=0;i<n;i++) { for(j=0;j<m;j++) { printf("%f\t",A[i][j]); } printf("\n");}return 0; }

Pgina 15

Conclusin
A partir de este tema que es eliminacin gaussiana es como se toma base para las dems formas de resolucin de ecuaciones lineales y de esta manera se agiliza el trabajo, pues es un mtodo muy sencillo que simplemente para lograr poder comprenderlo a la perfeccin se necesita realizar de muchos ejercicios, como el ejemplo que se propuso y as mismo existen una infinidad. Con respecto al mtodo, al principio parece un tanto difcil pero a mi parecer es laborioso pero muy prctico al fin y al cabo, y pues simplemente se utilizan de operaciones aritmticas lo cual nos dice que es un mtodo muy prctico y adems muy eficiente.

Pgina 16

Eliminacin gaussiana normalizado

Objetivo
El objetivo principal de la siguiente practica es aprender y saber cmo se realiza el mtodo de gauss normalizado el cual consiste en convertir un sistema de ecuaciones en uno escalonado , dejando sus incgnitas con valor de 1.En la 1 ecuacin tendr 3 incgnitas , en la 2 tendr 2 incgnitas y en la tercera 1 incgnita . De esta forma ser fcil a partir de la ltima ecuacin y subiendo hacia arriba, calcular el valor de las 3 incgnitas.

Pgina 17

Introduccin
El mtodo de Gauss Normalizado es una generalizacin del mtodo de reduccin, que utilizamos para eliminar una incgnita en los sistemas de ecuaciones. Consiste en la aplicacin sucesiva del mtodo de reduccin, utilizando los criterios de equivalencia de sistemas, para transformar la matriz ampliada con los trminos independientes en una matriz triangular, de modo que cada fila (ecuacin) tenga una incgnita menos que la inmediatamente anterior. Se obtiene as un sistema, que llamaremos escalonado, tal que la ltima ecuacin tiene una nica incgnita, la penltima dos incgnitas, la antepenltima tres incgnitas y la primera tendr todas las incgnitas. A diferencia del Gauss sin normalizar este sistema normaliza cada incgnita para que su valor sea igual a 1 y as la sustitucin hacia atrs ser ms directa. El mtodo de gauss normalizado bsicamente es parecido al proceso de eliminacin escalonada que el mtodo de gauss, pero con la nica diferencia que este sistema ocupa la normalizacin de las incgnitas, esto facilita la sustitucin hacia atrs dado que el resultado de cada una ser directo sin despejes

Ejemplo para resolucin manual


Para poder realizar el gauss normalizado y comprender bien la diferencia entre el mtodo de gauss sin normalizar es necesario realizar un ejemplo Ejemplo 1: Solucionar el siguiente sistema de ecuaciones por el mtodo de gauss normalizado

El sistema se expresa con una matriz aumentada

Primer paso normalizar el primer rengln dividiendo por el elemento a11 en este caso entre 2, el resultado queda: 2/2=1 2/2=2 6/2=3 18/2=9

Despus de normalizar procedemos a colocar el primer 0 en el segundo rengln, para esto tomamos el numero a modificar y se lo restamos al producto cruzado entre el pivote Ejemplo: Pgina 18

5-(2x4)/1 =-3 6-(3x4)/1=-6 24-(9x4)/1=-14

Hecho el cero en el segundo rengln se hace cero en el tercer rengln con el mismo procedimiento Ejemplo: 1-(2x3)/1=-5 2-(3x3)/1=-7 4-(9x3)/1=-23

Hecho los ceros debajo del pivote de la primera columna, procedemos a normalizar el segundo rengln dividiendo todo el rengln entre -3 -3/-3=1 -6/-3= -12/-3=

Despus de normalizar el segundo rengln hacemos cero en el tercer rengln Ejemplo: -7-(2x-5)=3 -23-(4x-5)=-3

Ahora normalizamos el tercer rengln Ejemplo 3/3=1 -3/3=-1

Sustitucin hacia atrs X3=-1 X2=4-2(-1)=6 X1= 9-3(-1)-2(6)=0

Pgina 19

Cdigo Matlab

%*********************************************************** clc clear all a=[2 4 6 18; 4 5 6 24; %Eta es nuestra matriz 3 1 2 4 ;] [r,c]= size (a) %Eliminacin hacia adelante for k=1:r for j=c:-1:1 %Aqu empieza la eliminacin hacia adelante a(k,j)=a(k,j)/a(k,k) end for i=k+1:r for j=c:-1:k a(i,j)= a(i,j)-a(i,k)*a(k,j) end end end a %sustitucin hacia atrs x(r)=a(r,c) %Aqu empieza la sustitucin hacia atrs for i=r-1:-1:1 sum=0 for j=i+1:r sum=sum+a(i,j)*x(i) end x(i)=(a(i,c)-sum)/a(i,j); end x %***********************************************************

Pgina 20

Diagrama de Flujo

Inicio

Input: Matriz a

for k=1:r-1

for j=c:-1:1

a(k,j)=a(k,j)/a(k,k)

for i=k+1:r

for j=c:-1:k

a(i,j)= a(i,j)-a(i,k)*a(k,j)

Pgina 21

x(r)=a(r,c)

for i=r-1:-1:1

sum=0

for j=i+1:r

sum=sum+a(i,j)*x(j)

x(i)=(a(i,j)-sum)/a(i,j)

Fin

Pgina 22

Cdigo en C
#include <stdio.h> #include <stdlib.h> int main(){ int k,i,j,m,n; n=3; m=4; float A[3][4]={{40,-10,-30,10},{-10,30,5,0},{-30,-5,65,0}}; for(k=0;k<=n-1;k++){ for(i=k+1;i<=n-1;i++){ for(j=m-1;j>=0;j--){ //solo que aqu se hace la normalizacin A[k][j]=A[k][j]/A[k][k]; A[i][j]=A[i][j]-(A[i][k]*A[k][j]); }}} k=m-1; while(k>=n-1){ //terminando normalizacin A[n-1][k]=A[n-1][k]/A[n-1][n-1]; k--; } for(i=0;i<n;i++){ for(j=0;j<m;j++){ printf("%f\t",A[i][j]); } printf("\n"); } //declarando variables para sustitucin float sum; float x[n]; for(i=n-2;i>0;i--){ sum=0; for(j=i+1;j<n;j++){ sum=sum+A[i][j]*x[j]; } x[i]=(A[i][m-1]-sum)/A[i][i]; } //mostrando matriz de resultados for(i=0;i<=n-1;i++){ printf("%f\t",x[i]); } return 0; }

Pgina 23

Conclusin
El mtodo de gauss normalizado nos ayuda para resolver sistemas de ecuaciones de cualquier tamao, a diferencia del gauss sin normalizar este mtodo gracias a la normalizacin no tiene necesidad de despejar la incgnita y esto hace que la sustitucin hacia atrs sea con mayor facilidad, claro, es necesario realizar un poco mas de operaciones pero al final solo ser igualar los valores de cada incgnita, para conocer su valor. Al llevar a cabo la resolucin de algn problema mediante este mtodo, es donde se percibe que es muy fcil, y que conforme mas ejercicios se realizan, este proceso se agiliza cada vez ms.

Pgina 24

Eliminacin Gauss-Jordan

Objetivo

El objetivo fundamental del presente trabajo es desarrollar un programa de computadora que resuelva sistemas de ecuaciones simultneas basndose en el mtodo de eliminacin de Gauss o mtodo de Gauss-Jordan, en un principio se expondr la base terica matemtica que sustenta este mtodo y posteriormente se presenta un diagrama de flujo representativo de dicho mtodo, de donde ms tarde se presenta una solucin ejemplar de un sistema ejecutando este programa.

Lograr una correcta introduccin al programa Matlab, as como a los conocimientos acerca de los mtodos de eliminacin existentes para de esta manera hacer un correcto uso de software mencionado y lograr el objetico del curso, poder programar de manera fcil y correcta, para posteriormente poder utilizar este programa como una herramienta de gran apoyo durante el transcurso de nuestra carrera y a lo largo de nuestra vida.

Pgina 25

Introduccin
La distribucin normal fue presentada por primera vez por Abraham de Moivre en un artculo del ao 1733, que fue reimpreso en la segunda edicin de su The Doctrine of Chances, de 1738, en el contexto de cierta aproximacin de la distribucin binomial para grandes valores de n. Su resultado fue ampliado por Laplace en su libro Teora analtica de las probabilidades (1812), y en la actualidad se llama Teorema de De Moivre-Laplace. Laplace us la distribucin normal en el anlisis de errores de experimentos. El importante mtodo de mnimos cuadrados fue introducido por Legendre en 1805. Gauss, que afirmaba haber usado el mtodo desde 1794, lo justific rigurosamente en 1809 asumiendo una distribucin normal de los errores. El nombre de Gauss se ha asociado a esta distribucin porque la us con profusin cuando analizaba datos astronmicos y algunos autores le atribuyen un descubrimiento independiente del de De Moivre. Esta atribucin del nombre de la distribucin a una persona distinta de su primer descubridor es un claro ejemplo de la Ley de Stigler. Utilizando el mtodo de Gauss, un conjunto de n ecuaciones con n incgnitas se reduce a un sistema triangular equivalente (un sistema equivalente es un sistema que tiene iguales valores de la solucin), que a su vez se resuelve fcilmente por sustitucin inversa; un procedimiento simple que se ilustrar con la presentacin siguiente:
a11 x1 + a12 x2 + a13 x3 + + a1n xn = c1 a21 x1 + a22 x2 + a23 x3 + + a2n xn = c2 ..... ..... ..... an1 x1 + an2 x2 + an3x3 + + ann. xn = cn

En donde: aij: Se denomina trminos. xi: Se denomina variables. Ci: Se denomina constantes. Aplicando la definicin de producto entre matrices, este sistema de n ecuaciones algebraicas lineales con n incgnitas puede escribirse en forma matricial, de la forma A X = C. El problema de los sistemas lineales de ecuaciones es uno de los ms antiguos de la matemtica y tiene una infinidad de aplicaciones, como en procesamiento digital de seales, anlisis estructural, estimacin, prediccin y ms generalmente en programacin lineal as como en la aproximacin de problemas no lineales de anlisis numrico. El Mtodo de Gauss Jordn o tambin llamado eliminacin de Gauss Jordan, es un mtodo por el cual pueden resolverse sistemas de ecuaciones lineales con n nmeros de variables, encontrar matrices y matrices inversas. La eliminacin de Gauss-Jordan, ms conocida como mtodo de Gauss, es un mtodo aplicable nicamente a los sistemas lineales de ecuaciones, y consistente en triangular la matriz aumentada del sistema mediante transformaciones elementales, hasta obtener ecuaciones de una sola incgnita, cuyo valor ser igual al coeficiente situado en la misma fila de la matriz.

Pgina 26

El Mtodo de Gauss consiste en convertir un sistema normal de 3 ecuaciones con 3 incgnitas en uno escalonado, en la que la primera ecuacin tiene 3 incgnitas, la segunda ecuacin tiene 2 incgnitas, y la tercera ecuacin tiene 1 incgnita. De esta forma ser fcil a partir de la ltima ecuacin y subiendo, calcular el valor de las tres incgnitas. Para resolver sistemas de ecuaciones lineales aplicando este mtodo, se debe en primer lugar anotar los coeficientes de las variables del sistema de ecuaciones lineales en su notacin matricial:

Entonces, anotando como matriz (tambin llamada matriz aumentada):

Una vez hecho esto, a continuacin se procede a convertir dicha matriz en una matriz identidad, es decir una matriz equivalente a la original, la cual es de la forma:

Esto se logra aplicando a las distintas filas y columnas de las matrices simples operaciones de suma, resta, multiplicacin y divisin; teniendo en cuenta que una operacin se aplicara a todos los elementos de la fila o de la columna, sea el caso. Obsrvese que en dicha matriz identidad no aparecen los trminos independientes, esto se debe a que cuando nuestra matriz original alcance la forma de la matriz identidad, dichos trminos resultaran ser la solucin del sistema y verificaran la igualdad para cada una de las variables, correspondindose de la siguiente forma: d1 = x d2 = y d3 = z

Pgina 27

Ejemplo para resolucin manual


Resolver el siguiente sistema de ecuaciones.

Solucin. a) La matriz aumentada del sistema es:

El primer elemento del primer rengln queremos que sea uno, una manera de obtenerlo es dividiendo entre 3, sin embargo, no es el nico camino (ni el mejor) para obtenerlo, en este caso obtendremos 1, primero y despus haremos cero los dems elementos de la primer columna, posteriormente obtendremos 1. b) Desarrollo.

c) Resultado. La solucin del sistema es

Pgina 28

Cdigo de Matlab
%*********************************************************** >> clear all >> A=[2 -0.9 3 -3.6; -0.5 0.1 -1 2.035; 1 -6.35 -0.45 15.401]; >> [r,c]=size(A) r= 3 c= 4

>> %eliminacin hacia adelante >> for k=1:r for j=c:-1:1 A(k,j)=A(k,j)/A(k,k); end for i=k+1:r for j=c:-1:k A(i,j)=A(i,j)-A(i,j)*A(k,j); end end end >> A A= < 1.0e+003 * 0.0010 -0.0004 0 0.0010 0.0015 -0.0018 0.0393 Pgina 29

0.0034

0.0010

2.9979

>> %eliminacin hacia atrs >> for k=r:-1:2 for i=k-1:-1:1 for j=c:-1:k A(i,j)=A(i,j)-A(i,k)*A(k,j); end end end >> A A= 1.0e+004 * 0.0001 0 0 0 0 -0.9133 0 -1.0298 0.299

0.0001 0

0.0001

Pgina 30

Diagrama de flujo

Pgina 31

Cdigo en C
#include <stdio.h> #include <stdlib.h> int main() { //declarando contadores int k,i,j,m,n; //inicializando dimensiones n=3;m=4;<<<<<<<<<<<<<< //inicializando matriz float A[3][4]={{40,-10,-30,10},{-10,30,-5,0},{-30,-5,65,0} }; for(k=0;k<=n-1;k++) { for(i=k+1;i<=n-1;i++) { for(j=m-1;j>=0;j--) { //normalizando A[k][j]=A[k][j]/A[k][k]; //modificando matriz y haciendo ceros A[i][j]=A[i][j]-(A[i][k]*A[k][j]);}}} //acabando de normalizar k=m-1; while(k>=n-1){A[n-1][k]=A[n-1][k]/A[n-1][n-1];k--; } //imprimiendo la parte de Gauss printf("Haciendo Gauss\n\n"); for(i=0;i<n;i++){for(j=0;j<m;j++){ printf("%f\t",A[i][j]); } printf("\n"); } for(k=0;k<m;k++){ for(i=k+1;i<n;i++){ for(j=m-1;j>=k;j--) { //haciendo ceros del otro lado de la matriz A[k][j]=A[k][j]-(A[k][i]*A[i][j]);} } } printf("\n"); //mostrando la matriz Gauss-Jordan printf("Haciendo Jordan\n\n"); for(i=0;i<n;i++){for(j=0;j<m;j++) { printf("%f\t",A[i][j]); }printf("\n"); } return 0; }

Pgina 32

Conclusin
Es un sistema de eliminacin muy prctico pues es parecido al que ocupaba en otras clases de matemticas, pues nos hace realizar una eliminacin de variables en cada una de las ecuaciones para al final solamente tener que realizar una pequea sustitucin de valores y poder calcular cada el valor de cada una de las incgnitas. A mi parecer este mtodo fue uno de los ms fciles pues como ya haba mencionado se parece a los mtodos que nos enseaban desde la secundaria y por lo cual tena ms nocin de cuales serian los pasos a seguir en la elaboracin de un problema como ejemplo.

Pgina 33

Matriz inversa

Objetivo
El clculo de la matriz inversa no es un proceso sencillo. Primeramente se aborda desde el punto de vista del mtodo de Gauss y, despus por determinantes y adjuntos; posteriormente, se hace uso del software Matlab para su clculo o de manera manual y, por ltimo, se muestran diversas aplicaciones de sta. Del mismo modo, las aplicaciones que se presentan son ejemplos dentro de un campo muy amplio. Incluso los ejemplos mostrados no finalizan en lo escrito en este bloque, sino que es una introduccin al mismo, con el objeto de ilustrar el uso de matrices en problemas no matemticos, por una parte y hacer accesible los modelos y sus diversas derivaciones, por otra.

Pgina 34

Introduccin
Sean A y B matrices de n x n, y suponiendo que la multiplicacin AB = BA = Identidad. De la definicin anterior se deduce que , si A tiene inversa. Nosotros podemos conocer fcilmente si una matriz tiene inversa; basta con encontrar su determinante, y si resulta cero, no tiene inversa; cualquier otro nmero nos indica que tiene inversa. Una matriz inversa cuadrada A-1 es la inversa de una matriz cuadrada A, si A A-1 = I. Cualquier matriz cuadrada no singular A, tiene una A-1 nica tal que: AA-1 = A-1A = I. Tambin (AB)-1 = B-1 A-1 donde A, B son matrices n x n. Clculo de la inversa de las matrices. Mediante el procedimiento de eliminacin completa de Gauss-Jordan se vio que un sistema de ecuaciones lineales, se reduce por etapas de clculo a la forma escalonada, eliminando sucesivamente variables de las ecuaciones hasta reducirla a la solucin.

Las eliminaciones del procedimiento transforman la matriz de coeficientes.

En la matriz identidad que corresponde a los coeficientes de las ecuaciones transformadas

Se observa que la transformacin total con el procedimiento de eliminacin de GaussJordan es equivalente a multiplicar el sistema por A-1. Frecuentemente es necesario no solo resolver un sistema de ecuaciones simultneas, sino tambin obtener la inversa de la matriz de coeficientes. Esto se logra colocando una matriz identidad I m x m a la derecha de la matriz original de coeficientes y aplicando las transformaciones de eliminacin a la matriz extendida.

Pgina 35

La inversa se genera en el lugar de la matriz identidad. Las matrices se escriben en particiones como sigue: (A| I |b) (A-1A | A-1I | A-1b) = (I | A-1 | X) La obtencin por eliminacin de la inversa mediante eliminacin tambin se denomina operaciones elementales a renglones de matrices y se resume as: Intercambio de renglones para que a11 0 Multiplicar el primer rengln por una constante k 0 (Ri kRi) para que a11= 1

Reemplazar todo rengln i > 1, multiplicando el primer rengln (que contiene a11 = 1) por - ai1 y luego sumando por el i-esimo rengln (i > 1), de tal manera que se elimina el primer coeficiente ai1. El ejemplo ayuda a aclarar el procedimiento.

El determinante es una cantidad importante asociada a una matriz cuadrada. De hecho no podemos obtener una solucin nica de un conjunto no homogneo de ecuaciones lineales si el determinante de la matriz de coeficientes es cero. Esto se debe a que, si por lo menos una ecuacin de un conjunto de ecuaciones lineales no es linealmente independiente, el determinante es cero. Si el valor del determinante es extremadamente pequeo o grande, es seal de que hay errores graves en la solucin de las ecuaciones. El determinante de una matriz tambin desempea un papel importante cuando se calculan los valores propios de una matriz. El determinante de una matriz A se denota como "det(A)". En el caso de una matriz de 2x2 el determinante de A se calcula:

Pgina 36

Ejemplo para resolucin manual


Resolver la siguiente matriz mediante su inversa

1. Calculamos el determinante de la matriz, en el caso que el determinante sea nulo la


matriz no tendr inversa.

2. Hallamos la matriz adjunta, que es aquella en la que cada elemento se sustituye por su
adjunto.

3. Calculamos la traspuesta de la matriz adjunta.

4. La matriz inversa es igual al inverso del valor de su determinante por la matriz


traspuesta de la adjunta.

Pgina 37

Cdigo de Matlab
%**************************************************************** clear; clc; fprintf('Dame la matriz a la que le quieres calcular la inversa\n') f=input('cuantas filas:'); c=input('cuantas columnas:'); %********************************************************* %** Los siguientes for anidados son para introducir ** %** los datos de la matriz a que se quiere calcular ** %** su inversa ** %********************************************************* for k=1:c for j=1:f fprintf('fila: %x\n',j) fprintf('columna: %x',k) r=input('numero de esta fila y columna'); a(j,k)=r; j=j+1; end k=k+1; end a b=a; ************************************************************ %** Se calcula la inversa para comprobar el resultado %*********************************************************** fprintf(inversa de una matriz con Matlab\n') c=inv(b); c

**

Diagrama de flujo

Pgina 38

Cdigo en C
#include <stdio.h> #include <stdlib.h> float** crea_matriz(int f, int c); void destruye_matriz(float** m, int f); void lee_matriz(float** m, int f, int c); void imprime_matriz(float** m, int f, int c); float** matriz_inversa(float** m, int d); int main() { float** Mo; float** Mi; int D; printf("ingrese orden de la matriz: "); scanf("%d", &D); Mo = crea_matriz(D, D); lee_matriz(Mo, D, D); Mi = matriz_inversa(Mo, D); if( Mi == NULL ) { printf("la matriz dada no es invertible:\n"); imprime_matriz(Mo, D, D); } else { printf("matriz original:\n"); imprime_matriz(Mo, D, D); printf("matriz inversa:\n"); imprime_matriz(Mi, D, D); } destruye_matriz(Mo, D); if( Mi != NULL ) { destruye_matriz(Mi, D); } return 1; } float** crea_matriz(int f, int c) { int i; float** r; r = (float**)malloc(f*sizeof(float*)); for(i = 0; i < f; ++i) r[i] = (float*)malloc(c*sizeof(float)); return r; } void destruye_matriz(float** m, int f) { int i; if( m != NULL ) Pgina 39

{ for(i = 0; i < f; ++i) free( m[i] ); free( m ); } } void lee_matriz(float** m, int f, int c) { int i, j; for(i = 0; i < f; ++i) { for(j = 0; j < c; ++j) { printf("m[%d][%d]? ", i, j); scanf("%f", &m[i][j]); } } } void imprime_matriz(float** m, int f, int c) { int i, j; printf(" "); for(j = 0; j < c; ++j) { printf(" | %8d", j); } printf("\n"); printf("---"); for(j = 0; j < c; ++j) { printf("-+---------"); } printf("\n"); for(i = 0; i < f; ++i) { printf("%3d", i); for(j = 0; j < c; ++j) { printf(" | %8.3f", m[i][j]); } printf("\n"); } } float** matriz_inversa(float** m, int d) { return NULL; }

Pgina 40

Conclusin
Este procedimiento es bastante laborioso y poco recomendable cuando el orden de la matriz es mayor que 2, pues, por ejemplo, para una matriz de orden 3 hay que resolver 3 sistemas de ecuaciones lineales, cada uno de ellos con tres ecuaciones y tres incgnitas. Por lo que, este no es el mtodo ms adecuado, ya que por el mtodo de eliminacin de Gauss-Jordan es posible encontrar la inversa de una matriz ms rpidamente, adems de que por este mtodo es necesario calcular su determinante ya que si este es cero la matriz original no tiene inversa, y por lo tanto es intil realizar todas las operaciones.

Pgina 41

Factorizacin LU

Objetivo
En la vida real, muchas veces podemos obtener respuestas a problemas las cuales vienen expresadas en forma de sistema de ecuaciones lineales de la forma Ax = b. Cuando la matriz es pequea no hay mucho problema, porque podemos proceder de forma manual (con lpiz y papel) a solucionar dichos sistemas (usando los mtodos conocidos). Pero, tendremos problemas para dar solucin a sistemas los cuales se expresan por matrices en orden mn siendo m y n muy grandes. La forma manual es tediosa, engorrosa y propensa a errores de clculo. Es en estos casos que necesitamos ayuda herramienta computadora para que pueda (por medio de ciertas tcnicas) dar solucin a estos sistemas de ecuaciones. As, es como es este trabajo se encarga de esas tcnicas de operar que se repetirn (iterarn) encontrar con la solucin final (nosotros llamaremos a estas tcnicas algoritmos iterativos).

Pgina 42

Introduccin
La factorizacin LU de una matriz es una factorizacin que resume el proceso de eliminacin gaussiana aplicado a la matriz y que es conveniente en trminos del nmero total de operaciones de punto flotante cuando se desea calcular la inversa de una matriz o cuando se resolver una serie de sistemas de ecuaciones con una misma matriz de coeficientes. la factorizacin o descomposicin LU (del ingls Lower-Upper) es una forma de factorizacin de una matriz como el producto de una matriz triangular inferior y una superior. Debido a la inestabilidad de este mtodo, por ejemplo si un elemento de la diagonal es cero, es necesario pre multiplicar la matriz por una matriz de permutacin. Mtodo llamado factorizacin PA = LU o LU con pivote. Sea A una matriz no singular (si lo fuera, entonces la descomposicin podra no ser nica) Donde L y U son matrices inferiores y superiores triangulares. Para matrices 3x3, esto es:

Por otro lado la descomposicin PLU tiene esta forma:

Lm 1Pm 1...L2P2L1P1A = U
Con Lm 1...L1 matrices triangulares inferiores, Pm 1...P1 matrices de permutacin y U una matriz triangular superior. Para determinar L:

L = (L'm 1 * ... * L'2 * L'1) 1


Y cada L'k est dado por:

L'k =
Esto se debe a que L'k es igual a Lk, pero con los elementos de la subdiagonal permutados. Otra forma de ver ste tipo de factorizacin es: A = PTLU Recordando que las matrices de permutacin matriz permutacin son invertibles y su inversa es su traspuesta

La factorizacin LU es bsicamente una forma modificada de la eliminacin gaussiana. Transformamos la matriz A en una triangular superior U anulando los elementos debajo de la diagonal.

E1 * E2 * ... * En * A = U

Pgina 43

Donde E1,E2,...,En son matrices elementales, que representan los distintos pasos de la eliminacin. Luego recordando que la inversa de una matriz elemental, es otra matriz elemental:

Llamamos L a

una matriz triangular inferior.

Factorizacin LU con pivote


Al utilizar la tcnica de triangulacin de Gauss para obtener la descomposicin L-U de una matriz A podemos encontrarnos con el mismo problema de encontrar un coeficiente en la diagonal que sea 0 o un mal condicionamiento. Podemos entonces utilizar la misma tcnica de pivoteo: buscar el siguiente elemento en la columna que sea distinto de 0 o, mejor an, el de mayor valor absoluto. Pero una vez obtenida la descomposicin L-U, si queremos aplicarla a resolver un sistema de ecuaciones, tendremos que tener en cuenta la historia o registro de las pivotaciones efectuadas para aplicar al vector de trminos independientes. Esto se realiza mediante la matriz de permutacin P, que consiste en efectuar sobre la matriz identidad, las mismas permutaciones de filas que se vayan efectuando sobre la matriz que se est triangulando por Gauss. Al mismo tiempo se efectan las mismas permutaciones sobre los elementos subdiagonal de la matriz L. As, si tenemos, por ejemplo, el sistema: AX=B Y L y U son las matrices obtenidas de la matriz A como descomposicin L-U por triangulacin de Gauss con pivotaciones recogidas en la matriz de permutacin P, es fcil comprobar que : LU=PA (LU)X=P(AX)=PB=NUEVOB Por tanto los procesos de sustitucin descendente y ascendente los aplicamos a : LD=NUEVOB UX=D

Pgina 44

Ejemplo para resolucin manual


Determine una factorizacin LU de la matriz:

Solucin La idea del mtodo es ir acumulando las inversas de las operaciones hechas sobre los renglones la matriz para irla transformando en una matriz escalonada. Y ms que propiamente las inversas de las operaciones sobre los renglones, las matrices elementales involucradas. As por ejemplo el primer calculo que se realiza es hacer un cero debajo de el elemento (1, 1) que es el elemento 2, para ello debemos realizar la operacin Esta operacin tiene como matriz elemental la matriz:

As la situacin est:

En el siguiente paso del proceso de eliminacin es como matriz elemental la matriz:

, esta operacin tiene

As la situacin est:

En el siguiente paso del proceso de eliminacin es R4 R4+R1, esta operacin tiene como matriz elemental la matriz:

As la situacin est:

Pgina 45

Observamos que el hipottico caso de que en La matriz B3 ya fuera escalonada, es decir la U buscada, entonces:

As, en el avance de la conversin a escalonada de A:

En este caso la matriz U est en la forma escalonada y por consiguiente el proceso se detiene haciendo cero aquellos valores desconocidos. Por consiguiente una factorizacin de A ser:

Pgina 46

Cdigo en Matlab
% Factorizacin LU (sin intercambio de filas) % [L, U] = slu(A) usa la eliminacin gaussiana para computar una matriz % triangular inferior L y una matriz triangular superior U tal forma que % L*U = A. El algoritmo se detendr si la entrada de pivote es muy pequea. [n, n] = size(A); for k = 1:n if abs(A(k, k)) < sqrt(eps) disp([Pivote muy pequeo encontrado en columna int2str(k) .]) end L(k, k) = 1; for i = k+1:n L(i,k) = A(i, k) / A(k, k); for j = k+1:n A(i, j) = A(i, j) - L(i, k)*A(k, j); end end for j = k:n U(k, j) = A(k, j); end End

Diagrama de flujo

Pgina 47

Pgina 48

Cdigo en C
#include <stdio.h> int main() {int k,i,j,m,n,w; printf("Da el orden de la matriz\n"); scanf("%d",&n); m=n+1; float A[n][m]; float Res[n]; float L[n][m]; printf("Da valores en la matriz en la posicion\n"); for(i=0;i<n;i++){ for(j=0;j<m;j++){ printf("[%i][%i]= ",i+1,j+1); if(j<n) scanf("%f",&A[i][j]); elsescanf("%f",&Res[i]);}} printf("U=\n"); for(k=0;k<=n-1;k++){ //para moverse por los renglones for(i=k+1;i<=n-1;i++){ for(j=n-1;j>=0;j--){if((j==n-1)&&(i==k+1)){ for(w=0;w<n;w++){ if(w>=k) L[w][k]=A[w][k]/A[k][k]; elseL[w][k]=0;}} //Hace las modificaciones de A[i][j] A[i][j]=A[i][j]-((A[i][k]/A[k][k])*A[k][j]);}}} for(i=0;i<n;i++){ for(j=0;j<n;j++)printf("%f\t",A[i][j]); printf("\n");} for(w=0;w<n;w++){ if(w==n-1) L[w][n-1]=1; elseL[w][n-1]=0;} printf("L= \n"); for(i=0;i<n;i++){ for(j=0;j<n;j++) printf("%f\t",L[i][j]); printf("\n");} for(i=0;i<n;i++) L[i][n]=Res[i]; printf("L*y=b \n"); for(i=0;i<n;i++){ for(j=0;j<m;j++) printf("%f\t",L[i][j]); printf("\n");}float y[n]; float sum; y[0]=L[0][n];for(i=1;i<n;i++){sum=0;for(j=0;j<i;j++)sum=sum+L[i][j]*y[j];y[i]=L[i][n]-sum;} printf("y= \n"); Pgina 49

for(i=0;i<n;i++) printf("%f\t",y[i]); //para los valores de las X float x[n]; printf("\nU*x=y\n"); for(i=0;i<n;i++){ for(j=0;j<m;j++){ if(j==n)A[i][j]=y[i]; printf("%f\t",A[i][j]);} printf("\n");}x[n-1]=A[n-1][m-1]/A[n-1][n-1]; for(i=n-2;i>=0;i--){sum=0;for(j=i+1;j<=n-1;j++) //para obtener los valores de la sustitucin sum=sum+A[i][j]*x[j]; //se introduce el valor de Xn en la matriz de resultados x[i]=(A[i][m-1]-sum)/A[i][i];} printf("\nLos valores de X's son\n\n"); //se imprime la matriz de resultados for(i=0;i<=n-1;i++){ printf("%f\t",x[i]);} return 0;}

Pgina 50

Conclusin

Un mtodo muy utilizado por las computadoras para resolver ecuaciones lineales no singulares. La factorizacin LU se tiene la gran ventaja de ser un mtodo barato (de poco coste computacional en su ejecucin) y rpido para resolver ecuaciones lineales que no sean singulares (y que su diagonal principal sea diferente de cero). Este mtodo se basa en el mtodo de la eliminacin gaussiana con sustitucin hacia atrs. Es por lo mismo que este proceso es fcil de dominar puesto que la mayora de los temas a ver se basa en la eliminacin gaussiana lo que hace que se tenga una nocin mucho ms factible a cmo resolver los problemas.

Pgina 51

Eliminacin Gauss-Seidel

Objetivo

Comprender las diferentes formas de solucionar sistemas de ecuaciones lineales por medio del mtodo Gauss-Seidel. Mostrar cmo aplicar los mtodos mencionados para facilitar la solucin de sistemas de ecuaciones, y poder as programar dichos mtodos en la computadora.

Pgina 52

Introduccin

El mtodo de Gauss-Seidel es un mtodo iterativo utilizado para resolver sistemas de ecuaciones lineales. El mtodo se llama as en honor a los matemticos alemanes Carl Friedrich Gauss y Philipp Ludwig von Seidel. Un mtodo iterativo trata de resolver un problema (como una ecuacin o un sistema de ecuaciones) mediante aproximaciones sucesivas a la solucin, empezando desde una estimacin inicial. Esta aproximacin contrasta con los mtodos directos, que tratan de resolver el problema de una sola vez (como resolver un sistema de ecuaciones Ax=b encontrando la inversa de la matriz A). Los mtodos iterativos son tiles para resolver problemas que involucran un nmero grande de variables (a veces del orden de millones). Aunque este mtodo puede aplicarse a cualquier sistema de ecuaciones lineales que produzca una matriz (cuadrada, naturalmente pues para que exista solucin nica, el sistema debe tener tantas ecuaciones como incgnitas) de coeficientes con los elementos de su diagonal no-nulos, la convergencia del mtodo solo se garantiza si la matriz es diagonalmente dominante o si es simtrica y, a la vez, definida positiva. En notacin matricial se resuelve de la siguiente manera: Se comienza planteando el sistema de ecuaciones con el que se va trabajar:

De la ecuacin 1 despejar x1, de la ecuacin 2 despejar x2,, de la ecuacin n despejar xn. Esto da el siguiente conjunto de ecuaciones:

Para comenzar el proceso iterativo, se le da el valor de cero a las variables x2,, xn; esto dar un primer valor para x1. Ms precisamente, se tiene que:

Pgina 53

Enseguida, se sustituye este valor de x1 en la ecuacin 2, y las variables x3,, xn siguen teniendo el valor de cero. Esto da el siguiente valor para x2:

Estos ltimos valores de x1 y x2, se sustituyen en la ecuacin 3, mientras que x4,, xn siguen teniendo el valor de cero; y as sucesivamente hasta llegar a la ltima ecuacin. Todo este paso arrojar una lista de primeros valores para las incgnitas, la cual conforma el primer paso en el proceso iterativo. Para una mejor comprensin esto se simbolizar de esta forma: Se vuelve a repetir el proceso, pero ahora sustituyendo estos ltimos datos en vez de ceros como al inicio. Se obtendr una segunda lista de valores para cada una de las incgnitas, lo cual se simbolizar as:

En este momento se pueden calcular los errores aproximados relativos, respecto a cada una de las incgnitas. La lista de errores se presenta a continuacin:

El proceso se vuelve a repetir hasta que:

Pgina 54

Ejemplo para resolucin manual


Usar el mtodo de Gauss-Seidel para aproximar la solucin del sistema:

Primero se despejan las incgnitas x1, x2 y x3 de las ecuaciones 1, 2 y 3 respectivamente. Se tiene:

Se comienza el proceso iterativo sustituyendo los valores de x2= x3= 0 en la primera ecuacin, para calcular el valor de x1:

Se sustituye en la ecuacin dos: Por ltimo, se sustituyen los dos valores anteriores en la ltima ecuacin:

Puesto que todava no se puede calcular ningn error aproximado, se repite el proceso pero ahora con los ltimos datos obtenidos para las incgnitas:

Pgina 55

Puesto que no se ha logrado el objetivo, se debe repetir el mismo proceso con los ltimos valores obtenidos de cada una de las incgnitas. Ntese que aunque el error aproximado ya cumple con ser menor al 1%, esto se debe cumplir para los tres errores aproximados. Por lo tanto se repite el mismo proceso. Omitiendo los pasos intermedios, se obtiene:

Cdigo en Matlab

function[]=gaus(y,v) [r,c]=size(y);%r guarda el numero de renglones y c el numero de columnas d=diag(y);%d ser un vector el cual contendr los elementos de la %diagonal principal de la matriz formada por el sistema %de ecuaciones h=0;%h servir de contador z=0;%z ser el valor que usaremos para condicionar k=0;%Contador w=0;%Contador for i=1:r m=0; n=0; for j=1:c-1 if j~=i m=m+abs(y(i,j));%sumando el valor absoluto de cada elemento que %no pertenece a la diagonal principal else n=abs(y(i,j));%guardando el valor de la diagonal principal end end if m>n %se compara la suma de los elementos que no son de la diagonal %principal con los de la diagonal principal, si esta condicin %llegara a ser verdadera el sistema no converge. w=w+1; Pgina 56

end end if w==0 jacobi(y,v); for i=1:r%Inicio de despeje de incgnitas for j=1:c if j~=i x(i,j)=[-y(i,j)./d(i)];%x ser una matriz la cual contendr %en sus renglones nuestras incgnitas %despejadas end end end %incgnitas despejadas while z~=1%ciclo que se repetir hasta encontrar el valor de las incgnitas for i=1:r%este ciclo nos servir para controlar el numero de rengln en que se est analizando y as evaluar las %incgnitas despejadas y obtener los nuevos valores que se utilizaran para evaluar dichas incgnitas f(i)=0;%la posicin i del vector f se le asignara cero para evitar una acumulacin for j=1:c%ciclo que nos servir para encontrar los nuevos valores en los que se evaluara nuestras incgnitas if j~=c%condicion para evitar multiplicar el valor constante f(i)=f(i)+(x(i,j).*v(j));%el vector f tomara los nuevos valores en los se volvern a evaluar las incgnitas despejadas else f(i)=f(i)+(x(i,j)); end end if f(i)==v(i)%se comparan los valores del vector f con los del vector v h=h+1;%si se cumple la condicin el contador aumenta end v(i)=f(i);%el vector v toma inmediatamente los valores calculados de las incgnitas end if h==r z=1;%si el contador es igual al nmero de renglones quiere decir que los valores utilizados anteriormente son iguales a los acabados de obtener else h=0;%si no el contador regresa a cero end k=k+1; end%valores de las incgnitas obtenidos disp(*****Gauss-Seidel*****) for i=1:r f(i)%imprimir los valores de las incgnitas. end disp(Numero de iteraciones: );disp(k); else disp(*****No converge el sistema de ecuaciones*****); end

Pgina 57

Conclusin
Luego de haber estudiado a profundidad estos temas o herramientas para resolver sistemas de ecuaciones, se concluye que para resolver estos sistemas de ecuaciones lineales existen diferentes mtodos, pero depender del gusto de cada persona elegir uno en especfico. Sin embargo, muchas veces la eleccin no ser arbitraria, pues cada mtodo tiene sus ventajas y sus desventajas. Algunos mtodos son ms exactos, otros ms fciles de programar, otros ms cortos, etc. Como se mencion en la introduccin, los dos mtodos estudiados en este trabajo son ideales para programarlos por computadora, pues son iterativos y muy largos.

Se concluye que para resolver estos sistemas de ecuaciones lineales existen diferentes mtodos, pero depender del gusto de cada persona elegir uno en especfico. Sin embargo, muchas veces la eleccin no ser arbitraria, pues cada mtodo tiene sus ventajas y sus desventajas. Algunos mtodos son ms exactos, otros ms fciles de programar, otros ms cortos, etc. Para ser capaces de elegir un mtodo apropiado, lo primero que se necesita es comprender cmo se desarrolla cada uno de estos procesos.

Pgina 58

Eliminacin por medio de biseccin


Objetivo

Aprender el proceso de Biseccin el cual nos brinda una manera fcil y precisa para poder resolver ecuaciones lineales que de otro modo seran ms difciles de resolver. En matemticas, el mtodo de biseccin es un algoritmo de bsqueda de races que trabaja dividiendo el intervalo a la mitad y seleccionando el sub intervalo que tiene la raz.

Pgina 59

Introduccin

El Mtodo de Biseccin, conocido tambin como de corte binario, de particin en dos intervalos iguales o mtodo de Bolzano, es un mtodo de bsqueda incremental donde el intervalo se divide siempre en dos. Si la funcin cambia de signo sobre un intervalo, se evala el valor de la funcin en el punto medio. La posicin de la raz se determina situndola en el punto medio del subintervalo dentro del cual ocurre un cambi de signo. El proceso se repite hasta obtener una mejor aproximacin. En otras palabras; establece que toda funcin continua f en un intervalo cerrado [a,b] toma todos los valores que se hallan entre f(a) y f(b). Esto es que todo valor entre f(a) y f(b) es la imagen de al menos un valor en el intervalo [a,b]. En caso de que f(a) y f(b) tengan signos opuestos, el valor cero sera un valor intermedio entre f(a) y f(b), por lo que con certeza existe un p en [a,b] que cumple f(p)=0. De esta forma, se asegura la existencia de al menos una solucin de la ecuacin f(a)=0. El mtodo consiste en lo siguiente:

Debe existir seguridad sobre la continuidad de la funcin f(x) en el intervalo [a,b] A continuacin se verifica que Se calcula el punto medio m del intervalo [a,b] y se evala f(m) si ese valor es igual a cero, ya hemos encontrado la raz buscada En caso de que no lo sea, verificamos si f(m) tiene signo opuesto con f(a) o con f(b) Se redefine el intervalo [a, b] como [a, m] [m, b] segn se haya determinado en cul de estos intervalos ocurre un cambio de signo Con este nuevo intervalo se contina sucesivamente encerrando la solucin en un intervalo cada vez ms pequeo, hasta alcanzar la precisin deseada

Enseguida se muestra el algoritmo para el Mtodo de Biseccin y el programa realizado en Matlab. Algoritmo Paso 1: Escjanse los valores iniciales xl y xu de forma tal que la funcin cambie de signo sobre el intervalo. Esto se puede verificar asegurndose de que f(xl)f(xu) < 0. Paso 2: La primera aproximacin a la raz xr se determina como:

Paso 3: Realice las siguientes ecuaciones y determine en que subintervalo cae la raz: a. si f(xl)f(xr)<0, entonces la raz se encuentra dentro del primer subintervalo. Por lo tanto, resulvase xu=xr y contine en el paso 4.

Pgina 60

b. si f(xl)f(xr)>0, entonces la raz se encuentra dentro del segundo subintervalo. Por lo tanto, resulvase xl=xr, y contine en el paso 4. c. si f(xl)f(xr)=0, entonces la raz es igual a xr y se terminan los clculos. Paso 4: Calclese una nueva aproximacin a la raz mediante:

Paso 5: Decdase si la nueva aproximacin estn exacta como se desea. Si es as, entonces los clculos terminan, de otra manera se regresa al paso 3. Esto se hace mediante el clculo de los errores, que al igual que en el mtodo de Gauss-Seidel o en cualquier otro me todo se calculan mediante la siguiente frmula:

Pgina 61

Ejemplo para resolucin manual


Consideremos el problema de encontrar un nmero positivo x tal que cos(x) = x3. Podramos tratar de encontrar el cero de f(x) = cos(x) - x3. Sabemos que f '(x) = -sin(x) - 3x2. Ya que cos(x) 1 para todo x y x3 > 1 para x>1, deducimos que nuestro cero est entre 0 y 1. Comenzaremos probando con el valor inicial x0 = 0,5

Los dgitos correctos estn subrayados. En particular, x6 es correcto para el nmero de decimales pedidos. Podemos ver que el nmero de dgitos correctos despus de la coma se incrementa desde 2 (para x3) a 5 y 10, ilustando la convergencia cuadrtica. Tomamos una estimacin inicial de la solucin. En este caso podemos tomar por ejemplo x0 = 1.0, y calculamos las siguientes aproximaciones. Desde el punto de vista prctico, si deseamos aproximar la Solucin con 6 decimales, podemos detener los clculos cuando dos Aproximaciones consecutivas coincidan hasta el decimal 8. En nuestro Caso, obtendramos x0 = 1.0, x1 = 1 e1 1 1 e1 + 1 12 = 0. 53788284, x2 = x1 ex1 1 x1 ex1 + 1 x21 = 0. 56627701, x3 = 0. 56714 258, x4 = 0. 56714 329, x5 = 0. 56714 329.

Pgina 62

Cdigo de Matlab

clc clear all a=[10 -10 -30 10; -10 30 -5 0; -30 -5 65 0] [r,c]=size(a) ea=1; while ea>.5; for i=1:r x(i)=0 end for i=1:r suma=0; for j=1:r if i~=j; suma=suma+a(i,j)*x(j) end end x(i)=(a(i,c)-suma)/a(i,j) end for k=1:r ea(k)=((x(k)-x(i))/x(k))*100 end end

Pgina 63

Diagrama de flujo

Pgina 64

Cdigo de C++

#include <stdio.h> #include <conio.h> #include <math.h> int main () { int i; float xa[100],xb[100],xr[100],fa[100],fb[100],fr[100],ea[100],tol,ff[100]; printf("Este programa resuelve la siguiente ecuacin en un determinado intervalo f=tan1(x)+x-1); printf("\n Ingrese el lmite inferior del intervalo: "); scanf("%f",&xa[1]); printf("\n Ingrese el lmite superior del intervalo: "); scanf("%f",&xb[1]); do { for(i=1;i<=10;i++) { fa[i]=atan(xa[i])+xa[i]-1; fb[i]=atan(xb[i])+xb[i]-1;

xr[i]=(xa[i]+xb[i])/2; fr[i]=atan(xr[i])+xr[i]-1; ff[i]=fa[i]*fr[i]; ea[i]=((xb[i]-xa[i])/xb[i])*100; printf("\n\nxa%d=%f",i,xa[i]);

Pgina 65

printf("\nxb%d=%f",i,xb[i]); printf("\nxr%d=%f",i,xr[i]); printf("\nfa%d=%f",i,fa[i]); printf("\nfb%d=%f",i,fb[i]); printf("\nff%d=%f",i,ff[i]); printf("\nfr%d=%f",i,fr[i]); printf("\nea%d=%f",i,ea[i]); if (fa[i]*fr[i]<0) { xa[i+1]=xa[i]; xb[i+1]=xr[i]; xr[i+1]=((xa[i+1]+xb[i+1])/2); } if (fa[i]*fr[i]> 0) { xa[i+1]=xr[i]; xb[i+1]=xb[i]; xr[i+1]=((xa[i+1]+xb[i+1])/2); } } } while(ea[i]>=.5); getch(); return 0; }

Pgina 66

Conclusin

El mtodo de biseccin es un mtodo bastante til y bastante preciso para poder obtener la raz de una funcin no lineal, sin embargo este mtodo requiere de ms iteraciones que otros mtodos as es que de cierto modo no es tan conveniente usarlo. Aunque el mtodo de newton-Raphson en general es muy eficiente, hay situaciones en que presenta dificultades. Un caso especial es en el de las races mltiples. En algunos casos es posible que para races simples se presenten dificultades por su lenta convergencia, el delta x se acerca muy lentamente a cero o no se acerca. El mtodo de Newton-Raphson es la manera ms eficiente de resolverlas, aunque las ecuaciones y sus derivadas puedan parecer realmente muy intimidantes.

Pgina 67

Eliminacin por medio de regla falsa

Objetivo

Este es uno de los mtodos que ocupa ecuaciones algebraicas, y hemos agregado por tanto, esa lnea recta que une el intervalo [a,b]. La idea principal es que si tomamos el punto donde la recta corta el eje x, estaremos ms cerca de hallar la raz. El mtodo de la regla falsa o falsa posicin es un mtodo iterativo de resolucin numrica de ecuaciones no lineales. El mtodo combina el mtodo de biseccin y el mtodo de la secante.

Pgina 68

Introduccin

Mediante este mtodo se busca una solucin de la ecuacin f(x) = 0, una raz de f. Como en el mtodo de biseccin, se parte de un intervalo inicial [a0,b0] con f(a0) y f(b0) de signos opuestos, lo que garantiza que en su interior hay al menos una raz. El algoritmo va obteniendo sucesivamente en cada paso un intervalo ms pequeo [ak, bk] que sigue incluyendo una raz de la funcin f.

Entonces, supongamos que tenemos una funcin f(x), que es continua en el intervalo [xa, xb], y que adems f(xa) y f(ba) tienen signos opuestos por lo que se deduce que existe al menos una solucin para esa ecuacin. Ahora, necesitamos saber la ecuacin de la lnea recta que une esos dos puntos. Para ello nos ayudamos de la ecuacin punto-pendiente, por eso, hallamos la pendiente:

Ahora vamos a sustituir eso en la ecuacin de la recta:

Pero recordamos que la recta en cuestin corta el eje x, as que hacemos y=0:

Simplificamos multiplicando todo por xb-xa, para quitar el denominador:

Pgina 69

Como paso final, despejamos la incgnita x:

Vamos ahora a describir paso a paso como se desarrolla el mtodo de la regla falsa (considerando f(x) contina): 1) Primero debemos encontrar unos valores iniciales xa y xb tales que:

2) Aproximamos a la raz, para ello usamos:

3) Evaluamos f(xr). Se pueden dar hasta tres casos: A)

Como f(xa) y f(xr) tienen signos opuestos, por la condicin mencionada anteriormente deducimos que, la raz se encuentra en el intervalo [xa, xr] B)

f(xa) y f(xr) tienen el mismo signo. As que xb y xr han de tener signos distintos, pues:

Por tanto, la raz se encuentra en el intervalo [xr, xa]. *Pista: Como consideramos que la ecuacin tiene que ser continua (si o si), al darse este caso, no cumplira con la condicin de continuidad, al menos que tomemos como referencia un tercer punto (xr) cuya imagen (f(xr)) ser de signo opuesto. C)

En este caso, como f(xr)=0 ya tenemos localizada la raz.

Debemos repetir estos 3 pasos sealados anteriormente hasta que: |E|<Eb

Pgina 70

Ejemplo para resolucin manual

Pgina 71

Cdigo en Matlab

function x = regula_falsi(fun,a,b,maxiter) % Aproxima por el mtodo de la regla falsa una raz de la ecuacin fun(x)=0 fprintf(1, 'Mtodo de la regla falsa\n'); fprintf(1,'\n'); n=1; u=feval(fun,a); v=feval(fun,b); if sign(u)==sign(v) disp('ERROR: la funcin debe cambiar signo en a,b'); break; end; for n=1:1:maxiter c=a-(u*(b-a)/(v-u)); w=feval(fun,c); fprintf(1, 'n= %i, c= %f, f(c)= %e \n',n, c,w); if sign(u)==sign(w) a = c; u=w; else b=c; v=w; end n=n+1; end; x=c

Pgina 72

Diagrama de flujo

Pgina 73

Conclusin

Este mtodo en comparacin al anterior tiende una aproximacin a la respuesta de la funcin ms rpidamente, lo que es lo mismo requiere de mucho menos pasos para obtenerlo. Como ya lo vimos toma aportaciones de mtodos como son el de secante y el de biseccin pues al ser un mtodo iterativo de trabaja en un intervalo, probando con valores uno a uno hasta llegar al resultado. Al ser una lnea recta, la que imaginariamente se traza, hace que se reduzcan los pasos, as como las operaciones a realizar y se requiere de menos esfuerzo y tiempo para llegar al resultado.

Pgina 74

Eliminacin Newton-Raphson

Objetivo
Conocer el mtodo de Newton-Raphson el cual ayudara a lograr una ms pronta resolucin de ecuaciones pues por medio de este mtodo se generan los resultados esperados mucho ms rpidamente, de manera ms sencilla y sin tantas operaciones. El mtodo de Newton-Raphson es un mtodo de optimizacin iterativo al igual que los vistos anteriormente que se basa en aproximar la funcin a optimizar por medio de la serie de Taylor hasta orden 2. El mtodo de Newton (conocido tambin como el mtodo de Newton-Raphson o el mtodo de Newton-Fourier) es un algoritmo eficiente para encontrar aproximaciones de los ceros o races de una funcin real. Tambin puede ser usado para encontrar el mximo o mnimo de una funcin, encontrando los ceros de su primera derivada.

Pgina 75

Introduccin
Newton aplicaba el mtodo solo a polinomios, y no consideraba las aproximaciones sucesivas xn, sino que calculaba una secuencia de polinomios para llegar a la aproximacin de la raz x. El mtodo de Newton-Raphson es un mtodo abierto, en el sentido de que su convergencia global no est garantizada. La nica manera de alcanzar la convergencia es seleccionar un valor inicial lo suficientemente cercano a la raz buscada. As, se ha de comenzar la iteracin con un valor razonablemente cercano al cero (denominado punto de arranque o valor supuesto). La relativa cercana del punto inicial a la raz depende mucho de la naturaleza de la propia funcin; si sta presenta mltiples puntos de inflexin o pendientes grandes en el entorno de la raz, entonces las probabilidades de que el algoritmo diverja aumentan, lo cual exige seleccionar un valor supuesto cercano a la raz. Una vez que se ha hecho esto, el mtodo linealiza la funcin por la recta tangente en ese valor supuesto. La abscisa en el origen de dicha recta ser, segn el mtodo, una mejor aproximacin de la raz que el valor anterior. Se realizarn sucesivas iteraciones hasta que el mtodo haya convergido lo suficiente. f'(x)= 0 Sea f : [a, b] -> R funcin derivable definida en el intervalo real [a, b]. Empezamos con un valor inicial x0 y definimos para cada nmero natural n.

Donde f ' denota la derivada de f. Estimacin del Error Se puede demostrar que el mtodo de Newton-Raphson tiene convergencia cuadrtica: si es raz, entonces:

Para una cierta constante . Esto significa que si en algn momento el error es menor o igual a 0,1, a cada nueva iteracin doblamos (aproximadamente) el nmero de decimales exactos. En la prctica puede servir para hacer una estimacin aproximada del error: Error relativo entre dos aproximaciones sucesivas:

Con lo cual se toma el error relativo como si la ltima aproximacin fuera el valor exacto. Se detiene el proceso iterativo cuando este error relativo es aproximadamente menor que una cantidad fijada previamente. El mtodo de Newton-Raphson no trabaja con intervalos donde nos asegure que encontraremos la raz, y de hecho no se tiene ninguna garanta de que nos aproximaremos a dicha raz. Desde luego existen ejemplos donde este mtodo no converge a la raz, en cuyo caso se dice que el mtodo diverge. Sin embargo, en los casos donde si converge a la raz, lo hace con una rapidez impresionante. Tambin observe que en el caso de que f(Xi)=0, el mtodo no se puede aplicar. De hecho vemos geomtricamente que esto significa que la recta tangente es horizontal y por lo tanto no interseca al eje x en ningn punto, a menos que coincida con este, en cuyo caso x, mismo es una raz de f(X). Pgina 76

Adems de que el mtodo descrito es de aplicacin exclusiva para funciones de una sola variable con forma analtica o implcita cognoscible. Ventajas: Es un mtodo ms rpido que los otros mtodos Generalmente converge independientemente de la aproximacin inicial que se escoge. Desventajas: Es necesario conocer la derivada de la funcin, la cual a veces es difcil de obtener Si la derivada de la funcin toma un valor cercano a cero, el mtodo puede no converger Cuando hay races mltiples (polinomios), el mtodo a veces falla.

Ejemplo para resolucin manual


Consideremos el problema de encontrar un nmero positivo x tal que cos(x) = x3. Podramos tratar de encontrar el cero de f(x) = cos(x) - x3. Sabemos que f '(x) = -sin(x) - 3x2. Ya que cos(x) 1 para todo x y x3 > 1 para x>1, deducimos que nuestro cero est entre 0 y 1. Comenzaremos probando con el valor inicial x0 = 0,5

Los dgitos correctos estn subrayados. En particular, x6 es correcto para el nmero de decimales pedidos. Podemos ver que el nmero de dgitos correctos despus de la coma se incrementa desde 2 (para x3) a 5 y 10, ilustrando la convergencia cuadrtica. Tomamos una estimacin inicial de la solucin. En este caso podemos tomar por ejemplo x0 = 1.0, y calculamos las siguientes aproximaciones. Desde el punto de vista prctico, si deseamos aproximar la solucin con 6 decimales, podemos detener los clculos cuando dos aproximaciones consecutivas coincidan hasta el decimal 8. En nuestro caso, obtendramos: x21= 0. 56627701, x3 = 0. 56714 258, x4 = 0. 56714 329, x5 = 0. 56714 329. Pgina 77

Cdigo de Matlab
%****************************************************************

clear; clc; 02 tol=input('Ingrese el porcentaje de error: '); 03 f=input('Ingrese la funcin: '); 04 i=1; 05 fx(i)=x0; 07 syms x; 08 f1=subs(f,x,fx(i)); 09 z=diff(f); 10 d=subs(z,x,fx(i)); 12 ea(1)=100; 14 while abs(ea(i))>=tol; 15 16 17 fx(i+1)=fx(i)-f1/d; f1=subs(f,x,fx(i+1)); d=subs(z,x,fx(i+1)); ea(i+1)=abs((fx(i+1)-fx(i))/fx(i+1)*100); i=i+1;

18 end 19 fprintf('i 20 for j=1:i; 21 fprintf('%2d \t %11.7f \t %7.3f \n',j-1,fx(j),ea(j)); fx(i) Error aprox (i) \n');

22 end

Pgina 78

Diagrama de flujo

Pgina 79

Conclusin

Aunque el mtodo de Newton-Raphson en general es muy eficiente, hay situaciones en que presenta dificultades. Un caso especial es en el de las races mltiples. En algunos casos es posible que para races simples se presenten dificultades por su lenta convergencia, el delta x se acerca muy lentamente a cero o no se acerca. El mtodo de Newton-Raphson es la manera ms eficiente de resolverlas, aunque las ecuaciones y sus derivadas puedan parecer realmente muy intimidantes.

Pgina 80

Eliminacin por medio de secante


Objetivo

El objetivo principal de esta prctica es conocer el mtodo de la secante el cual es un mtodo de tipo abierto, el cual requiere de dos puntos iniciales, los cuales pueden ser arbitrarios. Lo que hace bsicamente este mtodo, es trazar rectas secantes a la curva de la ecuacin que se est analizando, y verificar la interseccin de dichas rectas con el eje de las X para conocer si es la raz que se busca.

Pgina 81

Introduccin
El mtodo de la secante al ser un mtodo abierto, converge con la raz con una velocidad semejante a la de Newton-Raphson, aunque de igual forma corre el riesgo de no converger con esta nunca. Su principal diferencia con el mtodo de Newton-Raphson es que no se requiere obtener la derivada de la funcin para realizar las aproximaciones, lo cual facilita las cosas al momento de crear un cdigo para encontrar races por medio de este mtodo. Es una variacin del mtodo de Newton-Raphson donde en vez de calcular la derivada de la funcin en el punto de estudio, teniendo en mente la definicin de derivada, se aproxima la pendiente a la recta que une la funcin evaluada en el punto de estudio y en el punto de la iteracin anterior. Un problema en la implementacin del mtodo de Newton-Raphson es el de la evaluacin de la derivada. Aunque esto no es un inconveniente para los polinomios y para muchas otras funciones, existen algunas funciones cuyas derivadas pueden ser en extremo difciles de evaluar. En estos casos, la derivada se puede aproximar mediante una diferencia finita. Por ello el mtodo de la secante es una alternativa dado que elimina la derivada de la formula y lo hace directo Este mtodo se basa en la formula de Newton-Rapshon pero evita el clculo de la derivada usando la siguiente aproximacin ( ) ( ) ( )

Sustituyendo en la frmula de Newton Rapshon se obtiene ( ) ( ) ( )( ( ( ( ) ) ( ) ) ( )

Que es la frmula del mtodo de la secante para poder calcular el valor de Xi+1 se necesitan 2 valores anteriores Xi y Xi-1

Pgina 82

Ejemplo para resolucin manual


Usar el mtodo de la secante para calcular la raz aproximada de la funcin f(x)=x2 4. Comenzando con x0 =4, x1 =3 y hasta que r 1% . Aplicando para la primera iteracin con la frmula ( )( ( ) ) ( )

Tendramos un valor para x2 = 2.2857 . Si se calcula el error relativo con los valores x2 como valor real y x1 como valor aproximado se tendr:

Ahora si se calcula en una segunda iteracin x3 = x2 x2-x1 f(x2 ) , Se tendra f(x2) f(x1) ( )( ( ) Un valor para x3 = 2.0541, con un error relativo: ) ( )

Ahora si se contina realizando los clculos iterativamente, se tendrn valores como los mostrados en la siguiente tabla. Tabla 1. Resultados al aplicar el mtodo de la Secante a la funcin f(x)=x2 4.Con x0 =4 y x1 =3

Pgina 83

Cdigo en Matlab

% Mtodo de la secante clear all clc f=inline('exp(-x)-log(x)') x0=1 x1=1.5 tol=0.000001 xra=0; xr=0; i=1; error=100; fx1=f(x1); fx0=f(x0); xr=x1-((x0-x1)/(fx0-fx1))*fx1; fprintf('It. x0 x1 xr error\n'); fprintf('%2d \t %11.7f \t %11.7f \t %11.20f \t %11.7f \n',i,x0,x1,xr,error);

while error >= tol, xra=xr; x1=xr; fx1=f(x1); fx0=f(x0); xr=x1-((x0-x1)/(fx0-fx1))*fx1; error= ABS((xr - xra)/xr); i=i+1; fprintf('%2d \t %11.7f \t %11.7f \t %11.20f \t %11.7f \n',i,x0,x1,xr,error); end RESULTADO=xr

Pgina 84

Diagrama de flujo I
f=inline('exp(-x)-log(x)') x0=1, x1=1.5, tol=0.0000001 xra=0, xr=0, i=1, error=100 fx1=f(x1), fx0=f(x0) xr=x1-((x0-x1)/(fx0-fx1))*fx1

It, x0, x1, xr, error

while e>0.000001

xra=0, xr=0 fx1=f(x1), fx0=f(x0) xr=x1-((x0-x1)/(fx0-fx1))*fx1 error= abs(((xr - xra)/xr)*100) It, x0, x1, xr, error

FIN

Pgina 85

Cdigo en C
#include <stdio.h> #include <math.h> double f (double x) { return (x * x) - 1; } double df (double x) { return (2 * x); } double Secante (double x01, double x02, int N, double T, double (*fx) (double)) { int i = 1; double x; while (i <= N) { x= x01 - ((x01 - x02) * (*fx) (x01)) / ((*fx) (x01) - (*fx) (x02)); if (abs (x - x01) < T) break; i++; x02 = x01; x01 = x; } printf ("Iteraciones: %d", i); return x; } int main (void) { printf ("Mtodo de la Secante: %f", Secante (0.6, 0.61, 20, 0.000001, f)); return 0; }

Pgina 86

Conclusin

Resulto un mtodo un tanto complicado puesto que se ocupan muchos datos, y se tiene que ser muy ordenado en cuanto a procedimientos, pues en la mayora de las formulas ocupadas, piden datos que con anterioridad se obtuvieron y que se seguirn ocupando, es por esto que para mi criterio se me hizo un mtodo muy complicada y enrredadizo.

Pgina 87

Interpolacin de Newton

Objetivo

El principal objetivo de esta prctica es aprender el mtodo de Newton para diferencias divididas las cuales son un mtodo de interpolacin que nos permite encontrar un valor en cierto punto deseado

Pgina 88

Introduccin
Interpolar significa encontrar un valor intermedio entre dos o ms puntos base conocidos, los cuales se pueden aproximar mediante polinomios.

Sea en el sistema de coordenadas de la grafica anterior, las ecuaciones F(x) y G(x) en cuyo espacio a, b se pueden interpolar determinados valores. La iinterpolacin es, a partir de una serie de puntos, obtener una ecuacin cuya curva pase por todos ellos o lo ms cerca posible. La ecuacin general para este mtodo es la siguiente: Lo importante de este mtodo o la parte interesante es el clculo de las b's. Problema de interpolacin: Dados n+1 puntos (x0 ,y0 ), (x1 ,y1 ), (x2 ,y2 ), ...., (xn ,yn ) del plano, hallar un polinomio de grado n pn(x)= a0 + a1 x + a2 x2 + .... +an xn que pase por estos puntos, esto es que pn(xi) = yi , para n=0,1,2, ... ,n Para probar la existencia de este polinomio se pueden considerar sus coeficientes (a0 a , 1 ,a2 ,.... ,an ) como incgnitas a determinar en las n+1 ecuaciones pn(xi) = yi , para n=0,1,2, ... ,n, ya que los (xi, yi ) son nmeros ya conocidos como datos del problema. Aparece pues el sistema de n+1 ecuaciones con n+1 incgnitas a0 + a1 x0 + a2 x02 + .... +an x0n = y0 a0 + a1 x1 + a2 x12 + .... +an x1n = y1 ...

Pgina 89

a0 + a1 xn + a2 xn2 + .... +an xnn = yn Si llamamos A la matriz de este sistema, sabemos que el sistema tiene solucin nica si el determinante de A es distinto de cero. Llamemos por ejemplo Al polinomio de interpolacin que estamos buscando. En notacin de Matlab esto sera p(x) = c(1) * x^(n-1) + c(2) * x^(n-2) + ... + c(n-1) * x + c(n) Luego, para hallar el vector de coeficientes c=(c1,c2, ..., cn) , si y=(y1,y2, ..., yn) son los n datos. Se tendr c' = A \ y' esto es de A ct = y t, ct = A-1 y t, donde A es la matriz de Vandermonde, donde ahora si x = (x1,x2, ..., xn) son las abscisas de los puntos a interpolar, ser A= ( aij ) = (xin-j). Para A(i,j)= aij , i representa fila, j columna. El polinomio de interpolacin en forma de Newton Utilizar la matriz de Vandermonde para muchos nodos no es muy buena idea ya que el tiempo de clculo para matrices grandes es excesivo. Es mucho ms sencillo utilizar el mtodo clsico de las diferencias divididas de Newton. Recordemos su definicin, para dos nodos, se llama diferencia dividida de orden uno a :

Mientras que la diferencia dividida de orden n se obtiene por recurrencia a partir de las anteriores como

El polinomio de Newton en diferencias divididas es entonces p(x)=f[x0]+(x-x0) f[x0,x1]+ (x-x0)(x-x1) f[x0,x1]+ ... , xn] +(x-x0)(x-x1) (x-xn-1) f[x0,x1,

Pgina 90

Ejemplo para resolucin manual


>Cuantos polinomios de cada grado 0 < d <5 pasan a travs de los puntos (-1;-5); (0;-1); (2; 1) y (3; 11)?

Luego no hay polinomios de interpolacin de grados 0, 1 o 2; existe solamente uno de grado 3

Pgina 91

Cdigo en Matlab
clear;clc x=[0 1 2 3];y=[1 2 2.5 4]; % entrada de datos xa=x;ya=y; d=zeros(length(y)); d(:,1)=y'; 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)); end end for w=1:length(x) ds=num2str(abs(d(1,w))); 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))) ')' ]; actual=[ds '*' polact]; acum=[acum sg2 actual]; else polact=[polact '.*' '(x' sg1 num2str(abs(x(w-1))) ')' ]; actual=[ds '*' polact]; acum=[acum sg2 actual]; end end fprintf(' n Valores de X y Y n '); disp(xa); disp(ya); fprintf('n Polinomio interpolacin Newton : %s n',acum); x=input(' X interp = '); if x>max(xa)|x<min(xa) end xinterp=x; yinterp=eval(acum); fprintf(' Y(%g) = %g n',x,yinterp);

Pgina 92

Diagrama de flujo

Pgina 93

Cdigo en C
#include <stdio.h> main() { float C[8][8],X[8],M[8],x,f,pe,mul,pol,rf,ft; int n,i,j,e; printf("Ingrese el grado del polinomio a evaluar:"); scanf("%d",&n); printf("\n\nIngresando los valores x0,x1.........\n"); for(i=0;i<=n;i++) { printf("\nDame el valor de x%d=",i); scanf("%f",&x); X[i]=x; } printf("\nIngresando los valores de f.......\n"); for(i=0;i<=n;i++) { printf("\nDame el valor de f%d=",i); scanf("%f",&f); C[i][0]=f; } printf("\n\nIngresa el valor del punto a evaluar:"); scanf("%f",&pe); for(i=1;i<=n;i++) for(j=1;j<=i;j++) { C[i][j]=(C[i][j-1]-C[i-1][j-1])/(X[i]-X[i-j]); } mul=1; for(i=1;i<=n;i++) for(j=0;j<=(i-1);j++) { mul=(pe-X[j])*mul; M[i]=mul; } pol=0; rf=0; for(i=1;i<=n;i++) { pol=C[i][i]*M[i]; rf=rf+pol; } ft=C[0][0]+rf; printf("\n\nLa aproximacin en el punto %.4f es %.4f\n\n",pe,ft); return 0; }

Pgina 94

Conclusin

Este mtodo llegara a ser un tanto complicado y confuso, solo como recomendacin hay que ser ordenados en cada paso puesto que cada resultado obtenido se ocupa al final cuando se sustituyen los valores en la formula, y si no se tiene a la mano los valores se convierte en un proceso tedioso, pero al igual que los dems mtodos es fcil, mientras se le ponga empeo y se realicen muchos ejercicios.

Pgina 95

Diferencias divididas de Newton

Objetivo

El principal objetivo de esta prctica es aprender el mtodo de Newton para diferencias divididas las cuales son un mtodo de interpolacin que nos permite encontrar un valor en cierto punto deseado

Pgina 96

Introduccin

El mtodo de Newton es especialmente indicado en el caso de que deseemos realizar muchas evaluaciones del polinomio interpolador, ya que da el polinomio preparado para ser evaluado por el algoritmo de Horner. Otro aspecto particularmente conveniente es que, si deseamos aumentar el orden del polinomio interpolador, los coeficientes ak ya calculados permanecen inalterados, es decir, no destruimos el trabajo ya realizado cuando deseamos aumentar el orden del polinomio interpolador. Se dice en este caso que los coeficientes ak tienen la propiedad de permanencia. Definicin: dados n+1 puntos que corresponden a los datos X Y Xo Yo Xi Yi Xn Yn

Y de los cuales se representan grficamente como puntos en el plano cartesiano

Si existe una funcin f(x) definida en el intervalo [Xo, Xn] (donde suponemos que Xo<Xi<<Xn) tal que f (Xi)=Yi para i=0, 1,2n, entonces a f(X) se le llama una funcin de interpolacin de los fatos, cuando es usada para aproximar valores dentro del intervalo [Xo, Xn] Y se le llama funcin de extrapolacin de los datos, cuando este definida y es usada para aproximar valores fuera del intervalo El tipo de interpolacin que se elige, depende de la naturaleza de los datos, as como de los valores intermedios que se esperen Un tipo de interpolacin muy importante es por funciones polinomiales, dado que pueden existir una infinidad de funciones polinomiales de interpolacin para un mismo grupo de datos, adems se requiere que el polinomio de interpolacin sea nico

El polinomio dividido de interpolacin de Newton se define como ( ) ( ) ( )( ) ( ) ( )

Pgina 97

Donde (

[ . . .

Supongamos de nuevo que tenemos los mismos n puntos:

Con ellos se obtiene Se puede construir

Si se consideran nicamente los primeros n1 puntos. Sea c (x) la correccin que permite pasar de

La formula anterior dice que c tiene n1 races diferentes x1, x2,..., xn-1, entonces:

De la ltima igualdad se puede despejarn1. Este valor se dene como la diferencia dividida de orden n 1 de f en los puntos x1, x2, ..., xn. Se denota

Una de las igualdades anteriores se reescribe:

Pgina 98

Ejemplo para resolucin manual


Calcule diferencias divididas para f (x) = px en el intervalo [2:0; 2:4] con subintervalos de ancho 0:1.

Cuantos polinomios de cada grado 0 < d < 5 pasan a travs de los puntos (-1;-5); (0;-1); (2; 1) y (3; 11)?

Luego no hay polinomios de interpolacin de grados 0, 1 o 2; Existe solamente uno de grado 3

Pgina 99

Cdigo en Matlab
function c= newtondd(x, y, n) for j=1:n v(j,1)=y(j); end for i=2:n for j=1:n+1-i v(j, i)=(v(j+1,i-1)-v(j,i-1))/(x(j+i-1)-x(j)); end end for i=1:n c(i)=v(1,i); end

Pgina 100

Diagrama de flujo

Pgina 101

Cdigo en C

#include <stdio.h> main() { float C[8][8],X[8],M[8],x,f,pe,mul,pol,rf,ft; int n,i,j,e; printf("Ingrese el grado del polinomio a evaluar:"); scanf("%d",&n); printf("\n\nIngresando los valores x0,x1.........\n"); for(i=0;i<=n;i++) { printf("\nDame el valor de x%d=",i); scanf("%f",&x); X[i]=x; } printf("\nIngresando los valores de f.......\n"); for(i=0;i<=n;i++) { printf("\nDame el valor de f%d=",i); scanf("%f",&f); C[i][0]=f; } printf("\n\nIngresa el valor del punto a evaluar:"); scanf("%f",&pe); for(i=1;i<=n;i++) for(j=1;j<=i;j++) { C[i][j]=(C[i][j-1]-C[i-1][j-1])/(X[i]-X[i-j]); } mul=1; for(i=1;i<=n;i++) for(j=0;j<=(i-1);j++) { mul=(pe-X[j])*mul; M[i]=mul; } pol=0; rf=0; for(i=1;i<=n;i++) { pol=C[i][i]*M[i]; rf=rf+pol; } ft=C[0][0]+rf; printf("\n\nLa aproximacin en el punto %.4f es %.4f\n\n",pe,ft); return 0; } Pgina 102

Conclusin

Este mtodo llegara a ser un tanto complicado y confuso, solo como recomendacin hay que ser ordenados en cada paso puesto que cada resultado obtenido se ocupa al final cuando se sustituyen los valores en la formula, y si no se tiene a la mano los valores se convierte en un proceso tedioso, pero al igual que los dems mtodos es fcil, mientras se le ponga empeo y se realicen muchos ejercicios.

Pgina 103

Polinomio de LaGrange

Objetivo
Dado que existe un nico polinomio interpolador para un determinado conjunto de puntos, resulta algo confuso llamar a este polinomio el polinomio interpolador de LaGrange. Un nombre ms conciso es interpolacin polinmica en la forma de LaGrange. El cual es una tcnica de interpolacin de un conjunto de datos o de una funcin por un polinomio. Es decir, dado cierto nmero de puntos obtenidos por muestreo o a partir de un experimento se pretende encontrar un polinomio que pase por todos los puntos, el cual simplemente es una reformulacin del polinomio de Newton que evita los clculos de las diferencias divididas.

Pgina 104

Introduccin

En anlisis numrico, el polinomio de LaGrange, llamado as en honor a Joseph-Louis de LaGrange, es el polinomio que interpola un conjunto de puntos dado en la forma de LaGrange. Dado que existe un nico polinomio interpolador para un determinado conjunto de puntos, resulta algo confuso llamar a este polinomio el polinomio interpolador de LaGrange. La frmula de interpolacin permite calcular de manera aproximada los valores de La funcin f(x), y consiste en sustituir la funcin f(x) a aproximar por otra funcin g(x) que pudiera convenir por razones de simplicidad, operatividad, etc... Se tratara de construir otra funcin g(x) con adecuados parmetros a:

De modo que se cumplan las condiciones de interpolacin prefijadas en un conjunto de puntos del dominio de la funcin f(x), que se denominan nodos de interpolacin. Estas condiciones consisten, en general, que coincidan los valores que presenta la funcin dada en los nodos de interpolacin con los valores que en dichos nodos presenta la funcin interpoladora:

O bien, por ejemplo, que coincidan en dichos nodos las derivadas de ambas funciones:

Siempre aparecer, obviamente, un trmino residual, r (x) n , como diferencia entre La funcin a interpolar y la funcin interpoladora: Esto se puede resumir de la siguiente manera: Dado un conjunto de k + 1 puntos Donde todos los xj se asumen distintos, el polinomio interpolador en la forma de Lagrange es la combinacin lineal

De bases polinmicas de Lagrange

Pgina 105

Ejemplo para resolucin manual


La funcin tangente y su interpolador. Se desea interpolar en los puntos

Con cinco puntos, el polinomio interpolador tendr, como mximo, grado cuatro (es decir, la mxima potencia ser cuatro), al igual que cada componente de la base polinmica. La base polinmica es:

Pgina 106

As, el polinomio interpolador se obtiene simplemente como la combinacin lineal entre los y los valores de las abscisas:

Cdigo en Matlab
function y0 = lagrange_interp(x, y, x0) % x is the vector of abscissas. % y es el vector coincidente de ordenadas. % x0 representa el objetivo de ser interpolados % y0 representa la solucin de la interpolacin de LaGrange y0 = 0; n = length(x); for j = 1 : n t = 1; for i = 1 : n if i~=j t = t * (x0-x(i))/(x(j)-x(i)); end end y0 = y0 + t*y(j); end

Pgina 107

Diagrama de flujo

Pgina 108

Cdigo en C
# include <stdio.h> # include <conio.h> # include <graphics.h> # include <malloc.h> # include <stdio.h> void LaGrange(double x, double X[ ], double y[ ], int Lit) { double r=0, num=1, den=1; for(int i=0; i<Lit;i++) { //para el total de polinomios for(int j=0; j<Lit;j++) { //para cada polinomio if (i!=j){ num*=(x - X[j]); den*=(X[i] - X[j] ); } } num*=y[i]; printf("Iteracion %d valor %lf\n", i, num/den); getch(); r+=num/den; num=den=1; } printf("\n El resultado es: %lf", r); } void main() { int m, modo=DETECT, medio; double *X,*Y,x; clrscr(); printf("cuantas entradas tendr la tabla?\n\t\t"); scanf("%d",&m); X=(double*)malloc(sizeof(double)*m); printf("Ingresa la tabla los valores de X:\n"); for(int i=0; i<m; i++) scanf("%lf", &X[i]); printf("\nIngresa la tabla los valores de Y:\n"); for(i=0; i<m; i++) scanf("%lf", &Y[i]); printf("Escribe el valor X para el cual se encontrara el valor de Y\n"); scanf("%lf",&x); LaGrange(x, X, Y, m); getch(); } Pgina 109

Conclusin
Como conclusin podemos anotar que este mtodo es fcil pero que tiene sus limitaciones puesto que entre ms grande se vaya volviendo el sistema, as como las variables en cada uno, pues este se va expandiendo en cuanto a operaciones a realizar. Hasta llegar al grado de hojas completas en puras operaciones, puesto que por consiguiente, solo es bueno para sistemas pequeos.

Pgina 110

Mtodo de mnimos cuadrados


Objetivo

Resolver mediante el mtodo de mnimos cuadrados y el polinomio aproximador el procedimiento ms objetivo para ajustar una recta a un conjunto de datos presentados en un diagrama de dispersin se conoce como "el mtodo de los mnimos cuadrados". El ejemplo ms simple de una aproximacin por mnimos cuadrados es el ajuste de una lnea recta a un conjunto de parejas de datos observadas.

Pgina 111

Introduccin

Supongamos que hemos medido un conjunto de pares de datos (Xi, Yi) en un experimento, por ejemplo, la posicin de un mvil en ciertos instantes de tiempo. Queremos obtener la funcin y=f(X) que se ajuste lo mejor posible a los valores experimentales. Se puede ensayar muchas funciones lineales, polinomiales, exponenciales o logartmicas. Una vez establecido la funcin a ajustar se determinan sus parmetros, en el caso de un polinomio, sern los coeficientes del polinomio de modo que los datos experimentales se desven los menos posible de la formula emprica. La funcin ms sencilla es la funcin lineal y=ax+b que ya hemos tratado. El procedimiento de ajustar los datos experimentales a una lnea recta se denomina regresin lineal.

Queremos aproximar un polinomio de grado n, a un conjunto de m pares de datos (x i, y i) de modo que n* m. Sea el polinomio

Se calcula la cantidad

Para obtener los valores de los coeficientes del polinomio aproximador se tienen que determinar los valores de los coeficientes a0 , a1, a2 , ...an de forma que la cantidad S tome un valor mnimo. Hagamos las derivadas parciales de S respecto de a0 , a1, a2 , ...an iguales a cero:

Obtenemos un sistema den+1 ecuaciones conn+1 incgnitas ,a0 , a1, a2 , ...an.

Pgina 112

Ejemplo para resolucin manual

Ajstese una lnea recta a los valores x e y de las primeras dos columnas de la siguiente tabla:

Se pueden calcular las siguientes cantidades:

Usando las ecuaciones:

Se tiene que:

Por lo tanto la ecuacin lineal con ajuste por mnimos cuadrados es:

Pgina 113

Cdigo en Matlab

function [m,b]=mincuadlin(X) n=length(X(1,:)); A=0; B=0; C=0; D=0; for i=1:n; A=A+X(1,i); B=B+X(2,i); C=C+(X(1,i))^2; D=D+X(1,i)*X(2,i); end m=(n*D-A*B)/(n*C-A^2); b=(C*B-D*A)/(n*C-A^2); for i=1:n; hold on; plot (X(1,i),X(2,i),'*','MarkerEdgeColor','r','LineWidth',1); end x=X(1,1):1:X(1,n); y=m*x+b; plot(x,y,'b'); title('Aproximacin lineal por mnimos cuadrados.');

Pgina 114

Diagrama de flujo

Pgina 115

Cdigo en C
#include <iostream> #include <cstdlib> #include <cmath> main() { int i, j; float x[20], y[20], m, sum_y, sum_x, xy[20], sum_xy, xx[20], sum_xx, a, b; sum_y=0; sum_x=0; sum_xy=0; sum_xx=0; Printf( *Introduzca el numero de datos que contiene la muestra debe de ser < 20 datos\n\n n= "); cin>>m; printf("\n\n *Introduzca los valores para X \n"); for(j=1,i=1;j<=m,i<=m;j++,i++) { printf("\n X"<<i<<"= "); cin>>x[j]; } printf("\n\n *Introduzca los valores para Y \n"); for(j=1,i=1;j<=m,i<=m;j++,i++) { printf("\n Y"<<i<<"= "); cin>>y[j]; } for(j=1;j<=m;j++) { sum_y=sum_y+y[j]; sum_x=sum_x+x[j]; } for(j=1;j<=m;j++) { xy[j]=(x[j])*(y[j]); sum_xy=sum_xy+xy[j]; } for(j=1;j<=m;j++) { xx[j]=(x[j])*(x[j]); sum_xx=sum_xx+xx[j]; } printf("\n\n * Ecuacion 1 \n\n Ec1: "<<sum_y<<" = "<<m<<" a + "<<sum_x<<" b \n\n"); printf("\n\n * Ecuacion 2 \n\n Ec2: "<<sum_xy<<" = "<<sum_x<<" a + "<<sum_xx<<" b \n\n"); b=(((sum_y*-sum_x)+(sum_xy*m))/((sum_x*-sum_x)+(sum_xx*m))); a=(sum_y-(b*sum_x))/m; Pgina 116

printf("\n\n *Los coeficientes de regresion son: \n\n a= "<<a<<"\n\n b= "<<b<<endl<<endl); printf("\n\n *La ecuacion de regresion es: \n\n ^y^= "<<a<<" + "<<b<<" (x) \n\n\n"); return 0; }

Conclusin

Durante la elaboracin de esta prctica, pudimos observar que al igual de los dems mtodos anteriores, este se basa en mejorar y obtener un resultado a partir de un par de datos del cual seguirn surgiendo nuevos valores hasta que el valor del error tolerado sea menor que lo establecido, y al igual que los dems mtodos iterativos hay que continuar realizando el procedimiento hasta lo acordado del error tolerable.

Pgina 117

Mtodo del trapecio

Objetivo

No todas las funciones son fciles de integrar, de hecho algunas ni siquiera se pueden integrar, as que se usan otros mtodos que se aproximan a una integral. El mtodo del trapecio es uno de los ms antiguos y sirvi de base para desarrollar las integrales (junto con otros mtodos parecidos como el de los rectngulos), pero nunca sern exactos, solo se aproximan). Pero es un muy buen mtodo en lo que a complejidad se refiere pues es prctico, y lograr el fin de la ecuacin, resolverla.

Pgina 118

Introduccin
Las integrales son el rea debajo de una curva delimitada por 2 puntos sobre el eje de las x, un punto inicial o punto a y un punto final o punto b. Al derivar una funcin y evaluarla entre esos 2 puntos se obtiene el rea que est debajo de la curva, como lo muestra la imagen, se puede conocer el rea sombreada que se muestra integrando la funcin y evalundola entre los 2 puntos. Este mtodo consiste en "llenar" el rea que se quiere conocer con trapecios. (Se supone que la base inferior de todos los trapecios mide lo mismo) y lo que se hace es sacar el rea de cada uno de los trapecios y luego sumarlas todas para obtener ms o menos el rea sombreada. Mientras ms trapecios se coloquen ms precisa ser la aproximacin, y tambin mientras ms trapecios se coloquen su base inferior tiende a ser 0. El rea de un trapecio se obtiene como muestra la imagen de arriba, as que solo hay que hacer un pequeo anlisis matemtico para obtener una ecuacin que nos permita obtener el rea de los trapecios en la curva: Se separa al trapecio como si estuviera compuesto de un triangulo y un rectngulo. La serie de ecuaciones que se muestran abajo son un desarrollo en el cual se trata al trapecio primero sacando el rea del rectngulo y luego la del triangulo y sumndolas. Luego se simplifican las ecuaciones y se obtiene la que estamos buscando. El rea del rectngulo es bxh y la base es la resta entre los puntos x1-x0 la altura es el punto y1. El rea del triangulo es (bxh)/2 la base es la misma que la del rectngulo y la altura es la resta del punto y0-y1. Se factorizan y simplifican las ecuaciones. Por ltimo queda la ecuacin del rea de cada trapecio. Corresponde al caso donde , es decir :

Donde

es un polinomio de interpolacin (obviamente de grado 1) para los datos:

Del captulo anterior, sabemos que este polinomio de interpolacin es:

Integrando este polinomio, tenemos que:

Pgina 119

Por lo tanto, tenemos que:

Que es la conocida Regla del Trapecio. Este nombre se debe a la interpretacin geomtrica que le podemos dar a la frmula. El polinomio de interpolacin para una tabla que contiene dos datos, es una lnea recta. La integral, corresponde al rea bajo la lnea recta en el intervalo, que es precisamente el rea del trapecio que se forma.

Pgina 120

Ejemplo para resolucin manual

Utilizar la regla del trapecio para aproximar la integral:

Solucin. Usamos la frmula directamente con los siguientes datos:

Por lo tanto tenemos que:

Pgina 121

Cdigo en Matlab
clc clear f='exp(x^2)'; a=0; b=1; n=4; % f funcin % a,b intervalo % n numero partes disp('Funcion: '); f disp('De [a: '); a disp('Hacia b]: '); b f=inline(f); h=(b-a)/n; aprox=f(a)+f(b); for i=1:n-1 x=a+i*h; aprox=aprox+2*f(x); end aprox=(h/2)*aprox;a=0; disp(aprox);

Pgina 122

Diagrama de flujo

Pgina 123

Cdigo en c
#include <iostream.h> #include <iomanip.h> double f(double x) // Aqu introduces la funcin que quieres integrar { return (x*x*x/3)+4*x; } int main() { double h = 0.00001,a = 1,b = 10,sum; sum = (f(a)+f(b))/2.0; for(double x = a + h;x < b;x += h) sum += f(x);sum = sum*h; printf("integral = " << sum << endl ); printf( "fin del programa ! ! !"; return 0; } // MAIN// Con los datos del programa obtendrs integral = 1031.253733// la integral exacta seria ; [(x^3/3)+4x] entre 1 y 10 = 1031

Pgina 124

Conclusin
Como pudimos darnos cuenta este es un mtodo muy prctico, y muy sencillo adems de todo, y como al principio se deca existen funciones que son muy difciles de integrar y que en ocasiones no se pueden integrar y pues este mtodo nos sirve de mucho pues lo hace un poco mas fcil.

Pgina 125

Regla de Simpson de 1/3


Objetivo
El desarrollo de las integrales siempre es un problema debido a la complejidad de las funciones a integrar es por ello que se realizan software de aplicacin en este campo mediante varios mtodos, uno de ellos es la Regla de Simpson que es simple de utilizar. En este caso que se tienen una funcione a integrar probaremos su legitimidad de forma manualmente. Obteniendo resultados de manera muy rpida, y correcta mediante este mtodo.

Pgina 126

Introduccin
Adems de aplicar la regla trapezoidal con segmentos cada vez ms finos, otra manera de obtener una estimacin ms exacta de una integral, es la de usar polinomios de orden superior para conectar los puntos. A las formulas resultantes de calcular la integral bajo estos polinomios se les llama reglas de Simpson. Regla de Simpson de 1/3. La regla de Simpson de 1/3 resulta cuando se sustituye un polinomio de segundo orden en la ecuacin:

Si a y b se denominan como x0 y x2 , y f2 (x) se representa mediante un polinomio de LaGrange de segundo orden, entonces la integral es:

Despus de integrar y de reordenar trminos, resulta la siguiente ecuacin:

Pgina 127

Ejemplo para resolucin manual


Use la regla de Simpson 1/3 y 3/8 para integrar la siguiente funcin: f(x) = 0.2 +25x 200x2 + 675x3 900x4 + 400x5 Desde a = 0 hasta b = 0.8. La integral exacta es 1.640533. x0 = 0 x2 = 0.8 x1 = (0 + 0.8)/2 = 0.4 f(x0) = f(0) = 0.2 f(x1) = f(0.4) = 2.456 f(x2) = f(0.8) = 0.232 Sustituimos los valores en la ecuacin: I (b-a) f(x0) + 4f(x1) + f(x2). 6 I 0.8 0.2 + 4(2.456) + 0.232. 6 I 1.367467 Sustituimos los valores en la ecuacin: I (b-a) f(x0) + 3f(x1) + 3f(x2) + f(x3). 8 I 0.8 0.2 + 3(1.432724) + 3(3.487177) + 0.232. 8 I 1.519170 Por Simpson 1/3

Pgina 128

Cdigo en Matlab
clear all; clc; fprintf('Calculo de la integral por el mtodo de Simpson de 1/3\n\n'); f=input('introduce la funcion:','s'); a=input('lime inferior:'); b=input('limite superior:'); c=input('numero de segmentos a dividir (numero par):'); h=(b-a)/c; z=0; x=a; for i=1:c; if (-1)^i==1 k=eval(f); z=z+k; end x=h*i; end zz=0; x=a; for i=2:c; if (-1)^i==-1 k=eval(f); zz=zz+k; end x=h*i; end x=a; if x==a d=eval(f); end x=b; if x==b e=eval(f); end z=z*4; v=zz*2; z=z+v+d+e; z=z/(3*c); z=z*(b-a) fprintf('Resultado ');

Pgina 129

Diagrama de flujo

Pgina 130

Cdigo en c

#include<iostream.h> #include<math.h> #include<stdio.h> void main(void) { int N,i; double a,b, suma,f,xi,h; printf(" *********METODO SIMPSON 1/3************"); <<endl<<endl;cout<<"LA FUNCION A INTEGRAR ES F(X)= (X)/SQRT(1+X^4) "<<endl<<endl; Printf("Ingrese el Lmite Inferior de la Integral definida: ") ;cin>>a; Printf("Ingrese el Limite Superior de la Integral definida: ";cin>>b); Printf(Ingrese un Numero par de Iteraciones : "; cin>>N;h=(b-a)/N; suma=0; i=0;for(i=0;i<=N;i++) { { if (i%2!=0)f=4*xi/sqrt(1+xi*xi*xi*xi); else if (i%2==0)f=2*xi/sqrt(1+xi*xi*xi*xi); else if(i==0)f=xi/sqrt(1+xi*xi*xi*xi); else if(i==N)f=xi/sqrt(1+xi*xi*xi*xi); } xi=a+i*h; suma=suma+f; } Printf("los valores son los siguientes : "<<endl<<endl;cout<<"a= "<<a<<endl); Printf("b= "<<b<<endl); Printf("h= "<<h<<endl<<endl<<endl); Printf("la suma es = "<<suma<<endl;cout<<"la integral es = "<<suma*h/3<<endl); }

Pgina 131

Conclusin
Los resultados obtenidos manualmente son similares al obtenido con el programa el cual se hace ms efectivo cuando el numero de iteraciones es ms alto, obteniendo un valor de 0.4406266 manualmente y con el software el valores de 0.39876 el cual se acerca cuando el numero de iteraciones es de 100 el nmero es exactamente 0.435956 que no es un valor tan alejado de los clculos realizados .

Pgina 132

Regla de Simpson de 3/8

Objetivo
El desarrollo de las integrales siempre es un problema debido a la complejidad de las funciones a integrar es por ello que se realizan software de aplicacin en este campo mediante varios mtodos, uno de ellos es la Regla de Simpson que es simple de utilizar. En este caso que se tienen una funcione a integrar probaremos su legitimidad primero manualmente y as veremos que tan complicado puede llegar a volverse este mtodo.

Pgina 133

Introduccin
La derivacin de la Regla de los Tres Octavos de Simpson es similar a la regla de un tercio, excepto que se determina el rea bajo una parbola de tercer grado que conecta 4 puntos sobre una curva dada. REGLA DE SIMPSON DE 1/3. La regla de Simpson de 1/3 resulta cuando se sustituye un polinomio de segundo orden en la ecuacin:

Si a y b se denominan como x0 y x2 , y f2 (x) se representa mediante un polinomio de LaGrange de segundo orden, entonces la integral es:

Despus de integrar y de reordenar trminos, resulta la siguiente ecuacin:

Regla de Simpson de 1/3 de segmentos mltiples As como la regla trapezoidal, la regla de Simpson se mejora dividiendo el intervalo de integracin en segmentos de igual anchura. h=(b-a)/n La integral total se representa como:

Sustituyendo la regla de Simpson en cada una de las integrales individuales se obtiene:

Pgina 134

Reordenando los trminos, se obtiene:

REGLA DE SIMPSON DE 3/8. De manera similar a la derivacin de la regla trapezoidal y a la regla de Simpson de 1/3, se ajustan polinomios de LaGrange de tercer orden a cuatro puntos e integrar;

Para obtener

En donde h=(b-a)/3. A esta ecuacin se le llama regla de Simpson de 3/8 porque h es un mltiplo de 3/8. Esta es la tercera regla cerrada de integracin de Newton-Cotes.

REGLA DE SIMPSON 3/8 MULTIPLES. La regla de Simpson de 1/3 es, en general, el mtodo de preferencia ya que alcanza exactitud de tercer orden con tres puntos en vez de los de cuatro puntos necesarios para la versin de 3/8. No obstante, la regla de 3/8 tiene utilidad en aplicaciones de segmentos mltiples cuando el nmero de segmentos es impar. Para una estimacin de cinco segmentos una alternativa es la de aplicar la regla de Simpson de 1/3 a los primeros segmentos y la regla de Simpson de 3/8 a los ltimos tres. De esta manera, se obtiene una estimacin con exactitud de tercer orden a travs del intervalo completo

Pgina 135

Ejemplo para resolucin manual


Use la regla de Simpson 1/3 y 3/8 para integrar la siguiente funcin: Por Simpson 3/8 Cada separacin va a tener: x = (0 + 0.8)/3 = 0.2667 x0 = 0 x1 = (0 + 0.2667) = 0.2667 x2 = (0.2667 + 0.2667) = 0.5333 x3 = 0.8 f(x0) = f(0) = 0.2 f(x1) = f(0.2667) = 1.432724 f(x2) = f(0.5333) = 3.487177 f(x3) = f(0.8) = 0.232 Sustituimos los valores en la ecuacin: I (b-a) f(x0) + 3f(x1) + 3f(x2) + f(x3). 8 I 0.8 0.2 + 3(1.432724) + 3(3.487177) + 0.232. 8 I 1.519170 Sustituimos los valores en la ecuacin: I (b-a) f(x0) + 3f(x1) + 3f(x2) + f(x3). 8 I 0.8 0.2 + 3(1.432724) + 3(3.487177) + 0.232. 8 I 1.519170

Pgina 136

Cdigo en Matlab
clc %

Mtodo de Simpson 3/8 de segmentos mltiples impares

a=input('limite inferior:'); b=input('limite superior:'); n=input('segmentos impares :'); h=(b-a)/n % Subrutina para la regla de Simpson de 3/8.... % Pulsa una tecla... pause if (-1)^n==-1, b=b-(3*h),n=(n-3), e=b+h, f=b+2*h, g=b+3*h, k=(e)*((funcion(b)+3*(funcion(e)+funcion(f))+funcion(g))/8);end pause clc % Subrutina para la sumatoria impar de Simpson 1/3 % pulsa una tecla... pause p=0; for i=1:n; if (-1)^i==1,p=p+funcion(a+(i-1)*h); end p end clc % Subrutina para la sumatoria par % pulsa una tecla... pause s=0; for i=2:n; if (-1)^i==-1,s=s+funcion(a+(i-1)*h); end s end clc % Y se tiene la frmula de Simpson 1/3 de segmentos mltiples I=(b-a)*(funcion(a)+4*p+2*s+funcion(b))/(3*n) % Finalmente la suma de las reglas de 1/3 y 3/8 es.... I=I+k % Que es el valor de la integracin

Pgina 137

Diagrama de flujo

Pgina 138

Cdigo en c
/*Mtodo de Simpson 3/8 dada una funcion*/ void Simpson3_8(float a,float b,int n,float *Area) { register int i; float h; float S0,S1,x; S0=S1=0.0; if(n<1){ _error(INTERVALOS); exit(1); } h=(b-a)/n; x=a; for(i=1;i<n;i++){ x+=h; if(i==(i/3)*3) S0+=2*f(x); else S1+=3*f(x); } *Area=3*(b-a)/(8*n)*(f(a)+S0+S1+f(b)); printf("\n El area es -> %5.6f",*Area); getch(); } void Datos() { int i; clrscr(); printf("\n Numero de Segmentos (Par) = "); scanf("%d",&n); if(n<1){ _error(INTERVALOS); exit(1); } printf("\n Valor de a => "); scanf("%f",&a); printf("\n Valor de b => "); scanf("%f",&b); putchar('\n'); for(i=0;i<=n;i++){ printf(" Teclee x[%d] => ",i); scanf("%f",&X[i]); printf(" Teclee Fx[%d] => ",i); scanf("%f",&Fx[i]); putchar('\n'); } }

Pgina 139

Conclusin

En este mtodo, nos pudimos dar cuanta que a diferencia del mtodo de Simpson de 1/3, este es ms veloz en cuanto a llegar a la solucin del sistema, es ms fcil, por algo se llama mejorado, puesto que se le hacen mejoras para que adems de todo, sea mas exacto que el primer mtodo. Este mtodo tiene sus ventajas, y sus desventajas, como todos pero entre mas pasan los mtodos, estos se hacen ms hbiles por as decirlo.

Pgina 140

Mtodo de Euler

Objetivo

Mediante el mtodo de Euler, comprender en su totalidad como es que funciona, y cuales son las ventajas de este mtodo teniendo claro que existen mejores mtodos y mas rpidos pero que cada uno de los mtodos cuenta con sus ventajas.

Pgina 141

Introduccin
Una de las tcnicas ms simples para aproximar soluciones de una ecuacin diferencial es el mtodo de Euler, o de las rectas tangentes. Suponga que se desea aproximar la solucin del problema de valor inicial. Es un procedimiento de integracin numrica para resolver ecuaciones diferenciales ordinarias a partir de un valor inicial dado. El mtodo de Euler es el ms simple de los mtodos numricos resolver un problema del siguiente tipo:

Consiste en dividir los intervalos que va de sea:

en

sub intervalos de ancho

De manera que se obtiene un conjunto discreto de del intervalo de inters .

puntos:

. Para cualquiera de estos puntos se cumple que:

La condicin inicial , representa el punto por donde pasa la curva solucin de la ecuacin de el planteamiento inicial, la cual se denotar como . Ya teniendo el punto lo tanto: se puede evaluar la primera derivada de en ese punto; por

Pgina 142

Grafica A. Con esta informacin se traza una recta, aquella que pasa por . Esta recta aproxima en una vecinidad de

y de pendiente . Tmese la recta como .

reemplazo de y localcese en ella (la recta) el valor de y correspondiente a Entonces, podemos deducir segn la Grfica A:

Se resuelve para

Es evidente que la ordenada

calculada de esta manera no es igual a sirve para que se aproxime

, pues en el

existe un pequeo error. Sin embargo, el valor

punto y repetir el procedimiento anterior a fin de generar la sucesin de aproximaciones siguiente:

Pgina 143

Ejemplo para resolucin manual


A partir de las siguientes condiciones iniciales, resuelva el sistema por el mtodo de Euler

Calculamos el valor de tanto quedara as:

tomando en cuenta que el

valor de divisiones es de ; por lo

Plantear cuales son valores iniciales de .

Teniendo dichos valores podemos comenzar con el mtodo: Por lo que el resultado obtenido es: ; posteriormente procederemos a encontrar el valor relativo entre el valor exacto de la ecuacin que es

Finalmente se calcula el Error relativo:

Pgina 144

Cdigo en Matlab

Pgina 145

Diagrama de flujo

Pgina 146

Cdigo en c
#include<iostream.h> #include<conio.h> #include<iomanip.h> #include<math.h> /**********************Se ingresa la funcion****************************/ float func(float x, float y){ return 0.5*(1+x)*pow(y,2); } /**********************Metodo de Euler******************************/ void Euler(){ float x0,y0,xf,yf,h; int n,i; clrscr(); printf(setw(50)<<"Metodo de Integracion de Euler"); printf(setw(50)<<"------------------------------"<<endl); printf("Ingrese el valor de x0: "; cin>>x0; printf(Ingrese el valor de y0: "); cin>>y0; printf(ingrese el valor de xf: "); cin>>xf; do{ printf(Ingrese el numero de subintervalos a emplear: "); cin>>n; }while(n<=0); h=(xf-x0)/n; printf(endl; printf(setw(10)<<"I"<<setw(15)<<"Xi"<<setw(15)<<"Yi"<<endl); printf(setw(10)<<"-"<<setw(15)<<"--"<<setw(15)<<"--"<<endl); for(i=1;i<=n;i++) { y0=y0+h*func(x0,y0); x0=x0+h; reportar(x0,y0,i); } printf("\nEl valor de Yf: "<<y0<<endl); getch(); }

Conclusin
El esquema anterior se conoce por el nombre de esquema o mtodo de Euler y constituye el mtodo ms sencillo para resolver numricamente una ecuacin diferencial ordinaria de primer orden. Ntese que dicho esquema necesita en cada paso del valor y(xk), por tanto cuanto ms cercano sea el valor yk calculado del y(xk) real ms preciso ser el mtodo.

Pgina 147

Mtodo de Euler mejorado

Objetivo

Las ecuaciones diferenciales aparecen naturalmente al modelar situaciones fsicas en las ciencias naturales, ingeniera, y otras disciplinas, donde hay envueltas razones de cambio de una varias funciones desconocidas con respecto a una varias variables independientes, y es que al conocer como funcionan con distintos mtodos propuestos, lograremos comprender su comportamiento y as poder ocuparlas en nuestro benfico, y claro cuando sea necesario. Estos modelos varan entre los ms sencillos que envuelven una sola ecuacin diferencial para una funcin desconocida, hasta otros ms complejos que envuelven sistemas de ecuaciones diferenciales acopladas para varias funciones desconocidas. Por ejemplo, la ley de enfriamiento de Newton y las leyes mecnicas que rigen el movimiento de los cuerpos, al ponerse en trminos matemticos dan lugar a ecuaciones diferenciales.

Pgina 148

Introduccin
Este mtodo se basa en la misma idea del mtodo anterior, pero hace un refinamiento en la aproximacin. Dado el problema de valor inicial

Tomando un promedio entre ciertas pendientes nos genera la frmula es la siguiente:

Donde Para entender esta frmula, analicemos el primer paso de la aproximacin, con base en la siguiente grfica:

En la grfica, vemos que la pendiente promedio corresponde a la pendiente de la recta bisectriz de la recta tangente a la curva en el punto de la condicin inicial y la "recta tangente" a la curva en el punto donde es la aproximacin obtenida con la primera frmula de Euler. Finalmente, esta recta bisectriz se traslada paralelamente hasta el punto de la condicin inicial, y se considera el valor de esta recta en el punto como la aproximacin de Euler mejorada.

Pgina 149

Ejemplo para resolucin manual


Dado el problema de valor inicial

1. Aproxima la solucin usando el mtodo de Euler modificado de 5 pasos. 2. Calcula los errores de truncamiento locales y el error de truncamiento global. 1. Mtodo de Euler modificado. El problema en forma normal es

Tenemos

Iteraciones

Fase 0.

Fase 1. Partimos de los valores Calculamos

Fase 2. Partimos de los valores

Calculamos

Pgina 150

Pgina 151

Calculamos

Resumimos los resultados en una tabla

Pgina 152

Cdigo en Matlab

clear all disp('METODO DE EULER MODIFICADO') clc syms x syms y f=inline(input('ingrese la derivada:','s')); x=input('ingrese el valor de x:'); y=input('ingrese el valor de y:'); h=input('ingrese el valor de h:'); n=input('ingrese numero de iteraciones:'); clc disp('x(n) y(n) hy(n) y(n+1),p hy(n+1),p y(n+1),c'); for i=1:n s=h+x; y1=feval(f,x,y); hy1=h*y1; y2=y+hy1; y3=feval(f,s,y2); hy2=y3*h; yn=y+((hy1+hy2)/2); fprintf('\n%0.1f %0.4f %0.4f %0.4f %0.4f %0.4f',x,y,hy1,y2,hy2,yn); y=yn; x=x+h; x=0:1/20:4; plot(x, hy1,x, y1); grid on; end

Pgina 153

Cdigo en c

#include <iostream> #include <fstream> using namespace std; double euler(double); int main() { cout << "Hola, yo calculare la solucion a la ecuacion diferencial usando Euler" << endl; cout << "y'=y, con y(0)=1." << endl; cout << "Elija el h" << endl; double h; cin >> h; cout << " En x=1.5, el resultado es " << euler(h) << endl; return 0; }

double euler(double h) { ofstream salida("salida_euler.dat"); double ynp1=0,ynp1prima=0,yn=1,ynprima=1; salida << "#En este caso, h=" << h << endl; for(double x=0; x<=1.5;x+=h) { salida << x << " " << yn << endl; ynp1prima=ynprima+h; ynp1=yn+h*ynprima; ynprima=ynp1prima; yn=ynp1; } salida.close(); return ynp1; }

Pgina 154

Conclusin
Podemos afirmar, que los programas aqu expuestos resuelven ecuaciones diferenciales ordinarias, de primer orden; y probablemente podemos destacar los errores que existen por cada uno de los mtodos. Se dice que los errores del mtodo de Euler, radica en un intervalo proporcional a h2, mientras que su error global es proporcional a h; este mtodo podra ser inestable si la ecuacin diferencial ordinaria, tiene una constante de tiempo con signo negativo, a menos que se utilice una h pequea, en cambio en el mtodo modificado si la ecuacin diferencial ordinaria, no es lineal, se requiere de un mtodo iterativo para cada intervalo. Su error en un intervalo es proporcional a h3, mientras que su error global lo es a h2. En fin podemos afirmar que ambos mtodos poseen una desventaja, que consiste en que los rdenes de precisin son bajos. Esta desventaja tiene dos facetas, para mantener una alta precisin se necesita una h pequea, lo que aumenta el tiempo de clculo y provoca errores de redondeo.

Pgina 155

Mtodo de Runge-Kutta

Objetivo
El objetivo de los mtodos numricos de Runge-Kutta, es el anlisis y solucin de los problemas de valor inicial de ecuaciones diferenciales ordinarias (EDO), estos son una extensin del mtodo de Euler para resolver las ecuaciones diferenciales ordinarias, pero con un orden de exactitud ms alto que este.

Pgina 156

Introduccin
Uno de los mtodos ms utilizados para resolver numricamente problemas de ecuaciones diferenciales ordinarias con condiciones iniciales es el mtodo de RungeKutta de cuarto orden, el cual proporciona un pequeo margen de error con respecto a la solucin real del problema y es fcilmente programable en un software para realizar las iteraciones necesarias. Sin entrar en mucho detalle, mencionamos solamente que el mtodo de Runge-Kutta cambia la direccin en el sentido de que no sigue la misma lnea de los mtodos de Euler. De hecho est basado en una aplicacin de los polinomios de Taylor. Comentamos sin embargo, que el mtodo de Runge-Kutta si contiene como casos especiales los de Euler. Las frmulas

donde

Se conocen como las reglas o frmulas de Runge-Kutta de orden cuatro para la ecuacin diferencial

Pgina 157

Ejemplo para resolucin manual


Un paracaidista con una masa de 55500 g salta de un aeroplano aplquese la ecuacin principal para calcular la velocidad antes de abrir el paracadas. El cociente de arrastre c es aproximadamente igual a 10500 g/s. Solucin : Al sustituir los valores de los parmetros en la ecuacin principal se obtiene

Al dar varios valores de t se obtienen las velocidades se obtienen las velocidades para el tiempo, los resultados se presentan a continuacin: TABLA DE RESULTADOS Tiempo en segundos 0 2 4 6 8 10 12 Al infinito Velocidad en cm/s. 0 1631.7 2749.5 3515.1 4039.6 4398.8 4644.9 5180.0

Pgina 158

Cdigo en Matlab

Pgina 159

Diagrama de flujo

Pgina 160

Cdigo en c
#include<iostream.h> #include<conio.h> #include<iomanip.h> #include<math.h> float func(float x, float y) { return 0.5*(1+x)*pow(y,2); } void reportar(float x, float y, int i) { printf(setiosflags(ios::showpoint | ios::fixed)); printf(setiosflags(ios::right)); cout.precision(4); printf(setw(10)<<i<<setw(15)<<x<<setw(15)<<y); } int menu() { void Kutta() { float x0,y0,xf,yf,h,k1,k2,k3,k4;int n,i; clrscr(); printf(setw(50)<<"Mtodo de Runge-Kutta"); printf(setw(50)<<"-----------------------"<<endl); printf("Ingrese el valor de x0: "); cin>>x0; printf(Ingrese el valor de y0: "); cin>>y0; printf(ingrese el valor de xf: "); cin>>xf; do { printf(Ingrese el numero de subintervalos a emplear: "); cin>>n;}while(n<=0);h=(xf-x0)/n; printf(endl); printf(setw(10)<<"I"<<setw(15)<<"Xi"<<setw(15)<<"Yi"); printf(setw(10)<<"-"<<setw(15)<<"--"<<setw(15)<<"--"); for(i=1;i<=n;i++){ k1=func(x0,y0); k2=func(x0+h/2,y0+h*k1/2); k3=func(x0+h/2,y0+h*k2/2); k4=func(x0+h,y0+h*k3); y0=y0+(k1+2*k2+2*k3+k4)*h/6; x0=x0+h;reportar(x0,y0,i); } printf(El valor de Yf: "<<y0); getch(); }

Pgina 161

Conclusin
Puede observarse que al graficar con los valores obtenidos la aproximacin realizada por el mtodo de Runge-Kutta es muy cercana al valor exacto de la solucin, lo cual puede confirmarse con la vista de los errores absolutos, siendo el mayor error del orden de 10-3 e igual a cero luego de t =13.5, es decir, la aproximacin numrica es igual a la solucin real en esos casos.

Pgina 162

Bibliografa

Mtodos numricos: Introduccin, aplicaciones y programacin. Ediciones UPC Antonio Huerta, Antonio Rodrguez Mtodos numricos I Justino Alavez Ramrez Textos de enseanza de ciencias bsicas Mtodos numricos para ingeniera Juan Manuel Izar Landeta Editorial Universitaria Potosina Mtodos numricos y computacin Ward Chaney, David kincaid Canage learning Mtodos numricos para la fsica y la ingeniera Luiz Vazquez, Salvador Jimenes Carlos Aguirre Pedro Jose Pascual Mc Graw hill Pag. 87-97 Mtodos numricos para ingenieros (con aplicaciones en computadoras personales) Steven C. Chapra, Raymond P. Canale Mc Graw Hill Pag. 363-371 Mtodos numricos aplicados con software Shoiro nakamura Pearson Education Mtodos numricos Bajvlov, N.S., Paraninfo, Madrid, 1966.

Pgina 163