Beruflich Dokumente
Kultur Dokumente
Alumno:
[PROGRAMACIN Y MTODOS
NUMRICOS]
Ingeniera Elctrica
Programacin y Mtodos
Numricos.
NDICE
INTRODUCCIN......................................................................................................................... 2
I. RAICES DE ECUACIONES.............................................................................................. 4
Mtodos cerrados.................................................................................................................... 4
El Mtodo de Biseccin..................................................................................................... 6
El Mtodo de Regla Falsa............................................................................................... 12
Mtodos abiertos.................................................................................................................. 21
Mtodo de Newton Raphson....................................................................................... 22
Mtodo de la Secante...................................................................................................... 27
Races de polinomios........................................................................................................... 30
Mtodo de Lin Bairstow.................................................................................................. 30
II. SISTEMAS DE ECUACIONES ALGEBRAICAS LINEALES..............................39
Eliminacin Gaussiana Simple y Sustitucin hacia atrs........................................ 39
GaussJordan.......................................................................................................................... 44
Matriz Inversa y Multiplicacin de Matrices................................................................. 47
Mtodo Iterativo de Gauss................................................................................................. 50
III. SISTEMAS DE ECUACIONES NO LINEALES.................................................... 55
Mtodo de Newton Raphson para n ecuaciones..................................................... 55
IV. AJUSTE DE CURVAS.................................................................................................... 61
Mnimos Cuadrados.............................................................................................................. 62
Interpolacin Polinomial de Newton en Diferencias Divididas.............................. 66
Polinomios de Interpolacin de Lagrange.................................................................... 73
V. ECUACIONES DIFERENCIALES ORDINARIAS................................................... 77
Mtodo de Euler.................................................................................................................... 78
Mtodos de RungeKutta de cuarto orden.................................................................... 80
Comparacin Grfica de los Mtodos de Runge Kutta en MATLAB hasta 5to.
Orden........................................................................................................................................83
Cdigo de las funciones en MATLAB de los mtodos usados................................88
Curso
Propedutico
INTRODUCCIN
Los mtodos numricos son tcnicas mediante las cuales es posible formular
problemas de tal forma que puedan
resolverse usando operaciones
aritmticas. Aunque hay muchos
tipos de mtodos numricos, todos
comparten una caracterstica comn: Invariablemente los mtodos
numricos llevan a cabo un buen nmero de tediosos clculos aritmticos. No
es raro que con el desarrollo de computadoras digitales eficientes y rpidas, el
papel de los mtodos numricos en la solucin de problemas de ingeniera
haya aumentado considerablemente en los ltimos aos.
AI usar la computadora para obtener soluciones directamente, se pueden
aproximar los clculos sin tener
que recurrir a suposiciones
de
simplificacin o tcnicas deficientes. Aunque dichas suposiciones son aun
extremadamente valiosas tanto para resolver problemas como para
proporcionar una mayor comprensin, los mtodos numricos representan
alternativas que amplan considerablemente la capacidad para confrontar y
resolver los problemas; como resultado, se dispone de ms tiempo para
aprovechar las habilidades creativas personales. Por consiguiente, es posible
dar ms importancia a la formulacin de un problema, a la interpretacin de la
solucin y a su incorporacin al sistema total, o conciencia holstica.
Los mtodos numricos son herramientas extremadamente poderosas para la
solucin de problemas. Son capaces de manejar sistemas de ecuaciones
grandes, no linealidades y geometras complicadas que son comunes en la
prctica de la ingeniera y que, a menudo, son imposibles de resolver
analticamente. Por lo tanto, amplan la habilidad de quien los estudia para
resolver problemas.
Hay muchos problemas que no pueden plantearse al emplear programas
hechos. Si se est versado en los mtodos numricos y se es un adepto
de la programacin de computadoras, entonces se tiene la capacidad de
disear programas propios para resolver los problemas, sin tener que
comprar un software costoso. En el presente documento se usar la
programacin en C++ para construir nuestros propios programas para la
resolucin de problemas usando los mtodos numricos que se describen a
continuacin:
1. Races de ecuaciones. Estos problemas estn relacionados con el
valor de una variable o de un parmetro que satisface una ecuacin ya
sea trascendental o un polinomio (En ste documento trataremos las
races de un polinomio). Son especialmente valiosos en proyectos de
ingeniera
donde
con
frecuencia
resulta
imposible
despejar
analticamente parmetros de ecuaciones de diseo.
2. Sistemas de ecuaciones algebraicas lineales. En esencia, estos
problemas son similares a los de races de ecuaciones en el sentido
de que estn relacionados con valores que satisfacen ecuaciones. Sin
I. RAICES DE ECUACIONES
Mtodos cerrados.
Los mtodos cerrados consisten en dar 2 puntos tales que stos encierren
el valor de la raz, dichos puntos es cuando al sustituirlos en la funcin, sta
cambia de signo. En ste caso se aplica un anlisis de la curva mediante la
implementacin de un programa tabula.cpp en c++, el cual evala la funcin
para valores obtenidos a travs de un intervalo dado y un nmero de puntos
en los cuales se divide dicho intervalo. El programa tabula.cpp muestra al
final los puntos para los cuales en la funcin hay un cambio de signo, estos
puntos se usan en los mtodos cerrados de biseccin y regla falsa.
Por ejemplo, para el siguiente polinomio.
f(x) = x4 - 5x3 + 0.5x2 - 11x + 10
(1)
f1(x)(1.0*pow(x,4)5.0*pow(x,3)+0.5*pow(x,2)11.0*x+10.0)
El Mtodo de Biseccin.
Se sabe que un polinomio de grado n tiene n races las cuales pueden ser:
Reales y distintas.
Reales e iguales.
Complejas conjugadas.
De acuerdo a ello un polinomio de grado impar tendr por lo menos una raz
real, para dichas races ocuparemos los mtodos numricos de Biseccin,
Regla Falsa, Newton Raphson.
En general, si f(x) es real y contina en el intervalo que va desde xl hasta xu y
f(xl) y f(xu) tienen signos opuestos, es decir,
f(xl)f(xu) < 0
(2)
Entonces hay al menos una raz real entre xl y xu. Los mtodos de bsqueda
incremental aprovechan esta caracterstica localizando un intervalo en el
que la funcin cambie de signo. Entonces, la localizacin del cambio de
signo (y, en consecuencia, de la raz) se logra con ms exactitud al dividir
el intervalo en varios subintervalos. Se investiga cada uno de estos
subintervalos para encontrar el cambio de signo. El proceso se repite y la
aproximacin a la raz mejora cada vez ms en la medida que los
subintervalos se dividen en intervalos cada vez ms pequeos. Por lo que
sabemos que existe, al menos, una raz real. A partir de este punto se va
reduciendo el intervalo sucesivamente hasta hacerlo tan pequeo como
exija la precisin que hayamos decidido emplear. En seguida se explicara a
fondo y paso a paso el mtodo:
Programacin y
Figura 1.3. Ilustracin de las formas generales en que puede ocurrir una
raz en un intervalo preescrito por los lmites inferior xl y superior xu. Las fi
guras a) y c) muestran que si f(xl) y f(xu) tienen el mismo signo, entonces no
habr races dentro del intervalo o habr un nmero par de ellas. Las fi
guras b) y d) muestran que si la funcin tiene signos diferentes en los
puntos extremos, entonces habr un nmero impar de races dentro del
intervalo.
Criterio de convergencia.
Se debe desarrollar un criterio objetivo para decidir cundo
debe terminar el mtodo. Una sugerencia inicial sera finalizar
el clculo cuando el error verdadero se encuentre por debajo
de algn nivel prefijado. Puede decidirse que el mtodo
termina cuando se alcance un error ms bajo, por ejemplo, al
0.1%. Se requiere estimar el error de forma tal que no se
necesite el conocimiento previo de la raz, se puede calcular
el error relativo porcentual ea de la siguiente manera:
(3)
Donde xr nuevo es la raz en la iteracin actual y xr anterior
es el valor de la raz en la iteracin anterior. Se utiliza el valor absoluto, ya
que por lo general importa slo la magnitud de ea sin considerar su signo.
Cuando ea es menor que un valor previamente fijado es, termina el clculo.
A partir del polinomio del cual se obtuvieron los intervalos para los cuales la
funcin cambia de signo, se usa el primer intervalo +0.5500 y +1.1000 para
probar el programa de biseccin.cpp y obtener la primer raz. Para eso se
escribe la funcin en la cabecera #define al igual que en el programa de
tabula.cpp y se corre el programa para un criterio de convergencia de 0.0001
y 20 iteraciones.
Programa Mtodo de Biseccin
**NOTA: Se especifica un numero de iteraciones
para proteger Si el mtodo converge antes el
programa har una notificacin Intervalo inferior
(xi):0.55
Intervalo superior (xu):1.1
Error de Convergencia (Dado en Por Unidad):0.0001
Numero de Iteraciones (De preferencia use un nmero
entre 100 y 150):20 iteracion xi
xu
xr Ea
yi
yu yr
+1 +0.5500 +1.1000 +0.8250 +0.0000 +3.3609 6.6859 1.0790
+2 +0.5500 +0.8250 +0.6875 +0.2000 +3.3609 1.0790 +1.2725
+3 +0.6875 +0.8250 +0.7563 +0.0909 +1.2725 1.0790 +0.1317
Curso
Propedutico
+4
+5
+6
Curso
Propedutico
Programacin y Mtodos
Numricos.
El Mtodo CONVERGE
a+13iteraciones. LA RAIZ ES:
+0.7639709473
Ahora que se encontr una raz, se divide el polinomio original entre el factor
de dicha raz (Esto es, intercambiando el signo de la raz), para obtener un
nuevo polinomio que se usar en el mtodo de la regla falsa para
determinar
la
segunda
raz.
Se
ejecuta
el
programa
Divide_dos_polinomios.cpp. El cual pide tanto los grados como los coeficientes
del divisor y del dividendo y muestra el cociente y el residuo. Se tiene que
especificar si un coeficiente es cero (En dado caso). La salida del programa en
c++ se muestra a continuacin.
Programa que divide 2 polinomios
Introduce el grado del
divisor: 1
Introduce el vector asociado al divisor de mayor a menor
grado: divisor[0]=1
divisor[1]=0.76397
Introduce el grado del
dividendo: 4
Introduce el vector asociado al dividendo de mayor a
menor grado: dividendo[0]=1
dividendo[1]=5
dividendo[2]=0.5
dividendo[3]=11
dividendo[4]=10
Datos del Divisor:
divisor[+0]=+1.000
00 divisor[+1]=
0.76397 Datos del
Dividendo:
dividendo[+0]=+1.0
0000
dividendo[+1]=
5.00000
dividendo[+2]=+0.5
0000
dividendo[+3]=
11.00000
dividendo[+4]=+10.
00000 Datos del
Cociente:
cociente[+0]=+1.0
0000
cociente[+1]=
4.23603
cociente[+2]=
Curso
Propedutico
1
0
2.73620
cociente[+3]=
13.09037 Datos del
Residuo:
residuo[+0]=+0.00
000
residuo[+1]=+0.00
000
residuo[+2]=+0.00
000
residuo[+3]=+0.00
000
Curso
Propedutico
1
0
residuo[+4]=0.00065
(4)
Curso
Propedutico
1
1
El Mtodo de Regla
Falsa.
Aun cuando la biseccin es una tcnica perfectamente vlida para determinar
races, su mtodo de aproximacin por fuerza bruta es relativamente
ineficiente. La falsa posicin es una alternativa basada en una visualizacin
grfica.
Un inconveniente del mtodo de biseccin es que al dividir el intervalo de xl
a xu en mitades iguales, no se toman en consideracin las magnitudes de
f(xl) y f(xu). Por ejemplo, si f(xl) est mucho ms cercana a cero que f(xu), es
lgico que la raz se encuentre ms cerca de xl que de xu. Un mtodo
alternativo que aprovecha esta visualizacin grfica consiste en unir f(xl) y
f(xu) con una lnea recta. La interseccin de esta lnea con el eje de las x
representa una mejor aproximacin de la raz. El hecho de que se reemplace la
curva por una lnea recta da una falsa posicin de la raz; de aqu el nombre
Programacin y Mtodos
Numricos.
(5)
En la cual se despeja xr
(6)
sta es la frmula de la falsa posicin. El valor de xr calculado con la
ecuacin (6), reemplazar, despus, a cualquiera de los dos valores iniciales,
xl o xu, y da un valor de la funcin con el mismo signo de f(xr). De esta
manera, los valores xl y xu siempre encierran la verdadera raz. El proceso se
repite hasta que la aproximacin a la raz sea adecuada. El algoritmo es
idntico al de la biseccin (figura 1.2), excepto en que la ecuacin se usa en
el paso 2. Adems, se usa el mismo criterio de terminacin [ecuacin (3)] para
concluir los clculos.
Figura 1.6 Representacin grfica del mtodo de la falsa posicin. Con los tringulos semejantes
sombreados se obtiene la frmula para el mtodo.
Programacin y Mtodos
Numricos.
+10.0956
+10.0956
+10.0956
+10.0956
0.8619
0.0707
0.0057
0.0005
Curso
Propedutico
Programacin y
1
5
Programacin y Mtodos
Numricos.
Programacin y Mtodos
Numricos.
residuo[+2]=+0.00000
residuo[+3]=0.00048
(7)
Curso
Propedutico
2
0
Mtodos abiertos.
En los mtodos cerrados del captulo anterior la raz se encuentra dentro de
un intervalo predeterminado por un lmite inferior y otro superior. La
aplicacin repetida de estos mtodos siempre genera aproximaciones cada
vez ms cercanas a la raz. Se dice que tales mtodos son convergentes
porque se acercan progresivamente a la raz a medida que se avanza en el
clculo (figura 1.10a).
En contraste, los mtodos abiertos descritos en este captulo se basan en
frmulas que requieren nicamente de un solo valor de inicio x o que
empiecen con un par de ellos, pero que no necesariamente encierran la
raz. stos, algunas veces divergen o se alejan de la raz verdadera a medida
que se avanza en el clculo (figura 1.10b). Sin embargo, cuando los
mtodos abiertos convergen (figura 1.10c), en general lo hacen mucho ms
rpido que los mtodos cerrados.
Figura 1.10. Representacin grfica delas diferencias fundamentales entre los mtodos a)
cerrados, b) y c) los mtodos abiertos para el clculo de races. En a) se ilustra el mtodo de
biseccin, donde la raz est contenida dentro del intervalo dado por xl, y xu. En contraste,
en los mtodos abiertos, ilustrados en b) y c), se utiliza una frmula para dirigirse de xi a
xi+1, con un esquema iterativo. As, el mtodo puede b) diverger o c) converger rpidamente,
dependiendo de los valores iniciales.
Curso
Propedutico
2
1
(8)
Que se arregla para obtener:
(9)
La cual se conoce como frmula de NewtonRaphson.
No hay un criterio general de convergencia para el mtodo de Newton
Raphson. Su convergencia depende de la naturaleza de la funcin y de la
exactitud del valor inicial. La nica solucin en estos casos es tener un valor
inicial que sea suficientemente cercano a la raz. Y para algunas funciones
ningn valor inicial funcionar! Los buenos valores iniciales por lo comn se
predicen con un conocimiento del problema fsico o mediante el uso de
recursos alternativos, tales como las grficas, que proporcionan mayor
claridad en el comportamiento de la solucin. Ante la falta de un criterio
general de convergencia se sugiere el diseo de programas computacionales
eficientes que reconozcan la convergencia lenta o la divergencia.
Figura 1.11. Representacin grfica del mtodo de NewtonRaphson. Se extrapola una tangente
a la funcin en xi [esto es, f(xi)] hasta el eje x para obtener una estimacin de la raz en xi +
1.
Figura 1.12. Caso especial donde el mtodo de NewtonRaphson exhibe una convergencia
deficiente.
(10)
Se obtendr la
primera raz con el mtodo de NewtonRaphson.
Primeramente se evala la funcin para un intervalo usando el programa
tabula.cpp cmo se muestra enseguida, de manera de tener un valor inicial
cercano a la raz y el mtodo pueda converger o divergir rpidamente.
Programa que Evalua una funcin
Intervalo inferior (xa):2
Intervalo superior (xb):3
Numero de intervalos
(np):20 x[+0]=2.0000
y[+0]=120.0000 x[+1]=
1.7500 y[+1]=66.2256
x[+2]=1.5000 y[+2]=
31.7188 x[+3]=1.2500
y[+3]=11.0830 x[+4]=
1.0000 y[+4]=+0.0000
x[+5]=0.7500
y[+5]=+4.8877 x[+6]=
0.5000 y[+6]=+6.0938
x[+7]=0.2500
y[+7]=+5.4053
x[+8]=+0.0000
y[+8]=+4.0000
x[+9]=+0.2500
y[+9]=+2.5635
x[+10]=+0.5000
y[+10]=+1.4062
x[+11]=+0.7500
y[+11]=+0.5811
x[+12]=+1.0000
y[+12]=+0.0000
x[+13]=+1.2500
y[+13]=0.4482
x[+14]=+1.5000
y[+14]=0.7812
x[+15]=+1.7500 y[+15]=0.8057
x[+16]=+2.0000
y[+16]=+0.0000
x[+17]=+2.2500
y[+17]=+2.6025
x[+18]=+2.5000
y[+18]=+8.5312
x[+19]=+2.7500
y[+19]=+19.9951
x[+20]=+3.0000
y[+20]=+40.0000
Hay una raz entre1.2500 y
0.7500 Y la raz es: 1.0000
Hay una raz entre+0.7500 y
+1.2500 Y la raz es:
+1.0000
Hay una raz entre+1.7500 y
+2.2500 Y la raz es:
+2.0000
Figura 1.13. Una mejora de programa tabula.cpp puede ser si encuentra un valor para el cual la
funcin sea cero, indicar que hay una raz en ese valor, ste cdigo se agrega dentro de la
funcin tabula, pero para aplicar el mtodo tambin se puede indicar dentro de los intervalos en
los que est dicha raz. En dado caso se podra ampliar el nmero de puntos o el intervalo
elegido.
(11)
(12)
Mtodo de la Secante.
Un problema potencial en la implementacin del mtodo de NewtonRaphson
es la evaluacin de la derivada. Aunque esto no es un inconveniente para los
polinomios ni para muchas otras funciones, existen algunas funciones cuyas
derivadas en ocasiones resultan muy difciles de calcular. En dichos casos, la
derivada se puede aproximar mediante una diferencia finita dividida hacia
atrs, como en (figura 1.15).
(13)
Esta aproximacin se sustituye en la ecuacin (9) para obtener la siguiente
ecuacin iterativa:
(14)
La cul es la frmula para el mtodo de la secante. Observe que el mtodo
requiere de dos valores iniciales de x. Sin embargo, debido a que no se
necesita que f(x) cambie de signo entre los valores dados, este mtodo no se
clasifica como un mtodo cerrado.
Figura 1.15. Representacin grfica del mtodo de la secante. Esta tcnica es similar a la del
mtodo de Newton Raphson (fi gura 1.11) en el sentido de que una aproximacin de la raz
se predice extrapolando una tangente de la funcin hasta el eje x. Sin embargo, el mtodo de
la secante usa una diferencia dividida en lugar de una derivada para estimar la pendiente.
(15)
Races de polinomios
Mtodo de Lin Bairstow
El mtodo de Bairstow es un mtodo iterativo relacionado de alguna manera
con los mtodos de Mller y de NewtonRaphson. Antes de hacer la
descripcin matemtica de ste, recuerde la forma factorizada de un
polinomio, por ejemplo
5(x) = (x + l)(x 4)(x 5)(x + 3)(x 2)
(16)
Si se divide entre un factor que no es una raz (por ejemplo, x + 6), el cociente
es un polinomio de cuarto grado. Aunque, en este caso, habr un residuo
diferente de cero.
Con estas consideraciones se puede elaborar un algoritmo para determinar la
raz de un polinomio:
1) D un valor inicial para la raz x = t.
2) Divida el polinomio entre el factor x t
3) Determine si hay un residuo diferente de cero. Si no, el valor inicial es
perfecto y la raz es igual a t. Si existe un residuo, se ajusta el valor
inicial en forma sistemtica y se repite el procedimiento hasta que el
residuo desaparezca y se localice la raz. Una vez hecho esto, se repite
el procedimiento totalmente, ahora con el cociente para localizar otra
raz.
Por lo general, el mtodo de Bairstow se basa en esta manera de proceder.
Por consiguiente, depende del proceso matemtico de dividir un polinomio
entre un factor.
Por ejemplo, el polinomio general:
n (x) = a0 + a1x + a2x2 + + anxn
(17)
3
0
Curso
Propedutico
(18)
3
0
para i
Observe que si t es una raz del polinomio original, el residuo b0 sera igual a
cero.
Para permitir la evaluacin de races complejas, el mtodo de Bairstow divide
el polinomio entre un factor cuadrtico x2 rx s. Si esto se hace con la
ecuacin (17), el resultado es un nuevo polinomio
n 2(x) = b2 + b3x + + bn 1xn 3 + bn xn 2
(20)
Con un residuo
R = b1(x r) + b0
(21)
bi = ai + rbi+1 + sbi+2
(22.3)
(22.2)
para i
en = bn
(23.1)
Curso
Propedutico
3
2
(24.1)
e1r + e2s = b0
(24.2)
(25.1)
(25.2)
Cuando ambos errores estimados caen por debajo de un criterio especificado
de terminacin es, los valores de las races se determinan mediante:
-rr z -4s
x =
(26)
(27)
b[+0]=+0.00000
c[+3]=+1.00000
c[+2]=+0.00000
c[+1]=+16.00000
Er:
+0.00000 Es:
+4.50000
FACTOR:
+1.00000x^22.00000x+2.00000
******ITERACION*****:
+3 b[+3]=+1.00000
b[+2]=2.00000
b[+1]=+0.00000
b[+0]=+0.00000
c[+3]=+1.00000
c[+2]=+0.00000
c[+1]=2.00000
Er:
+0.00000
Es:
+0.00000
El Mtodo CONVERGE
a+3iteraciones. El factor
cuadrtico es:
+1.00000x^22.00000x+2.00000
Curso
Propedutico
Programacin y
3
7
Programacin y Mtodos
Numricos.
(28)
Donde las a son los coeficientes constantes y las b son los trminos
independientes constantes. La tcnica que se describe en este captulo se
conoce como la eliminacin de Gauss, ya que implica una combinacin de
ecuaciones para eliminar las incgnitas. Aunque ste es uno de los mtodos
ms antiguos para resolver ecuaciones lineales simultneas, contina siendo
uno de los algoritmos de mayor importancia, y es la base para resolver
ecuaciones lineales en muchos paquetes de software populares.
La estrategia bsica consiste en multiplicar las ecuaciones por constantes,
de tal forma que se elimine una de las incgnitas cuando se combinen las
dos ecuaciones. El resultado es una sola ecuacin en la que se puede
despejar la incgnita restante. Este valor se sustituye en cualquiera de las
ecuaciones originales para calcular la otra variable.
Esta tcnica bsica puede extenderse a sistemas grandes de ecuaciones
desarrollando un esquema sistemtico o algortmico para eliminar incgnitas y
sustituir hacia atrs. Aunque tales tcnicas son muy adecuadas para
utilizarlas en computadoras, se requiere de algunas modificaciones para
obtener un algoritmo confiable. En particular, el programa debe evitar la
divisin entre cero. Al mtodo siguiente se le llama eliminacin gaussiana
simple, ya que no evita este problema. En las siguientes secciones se vern
algunas caractersticas adicionales necesarias para obtener un programa de
cmputo efectivo.
La primera fase consiste en reducir el conjunto de ecuaciones a un sistema
triangular superior. El paso inicial ser eliminar la primera incgnita, x1, desde
la segunda hasta la nsima ecuacin.
Donde el superndice prima indica que los elementos han cambiado sus
valores originales. El elemento ak,kse denomina el coeficiente o elemento
pivote. En particular cuando dicho elemento es cero hay una divisin entre
cero y el mtodo falla, para eso en el Programa de eliminacin Gaussiana
Simple desarrollado en C++ se implementa un algoritmo que intercambia
filas hasta encontrar un elemento diferente de cero, si no se encuentra un
valor diferente a cero el programa indica que el sistema no tiene solucin o
hay infinidad de soluciones. Ya que en dado caso no habra matriz inversa
del sistema o su determinante sera igual a cero, por lo cual se llega a la
misma conclusin de que no existe solucin o hay infinidad de ellas.
Al final de la implementacin del mtodo de Eliminacin Gaussiana Simple, se
llega a un sistema donde se tiene una matriz triangular superior, cmo se
muestra a continuacin.
(30)
El siguiente paso para resolver el sistema es emplear sustitucin hacia atrs.
Este resultado se puede sustituir hacia atrs en la (n 1) sima ecuacin y
despegar xn 1. El procedimiento, que se repite para evaluar las x restantes,
se representa mediante la frmula:
(31)
A continuacin se introduce un sistema para resolverlo con el programa
desarrollado en C++, en particular, se introduce un sistema dnde hay un
pivote cero, se observa que el mismo programa hace el intercambio de filas.
Programa de Eliminacin Gaussiana
1)Introduce el vector de terminos
independientes b[+1]=1
b[+2]=1
b[+3]=1
VECTOR DE TERMINOS INDEPENDIENTES
b[+1]=+1.0000
b[+2]=+1.000
0
Curso
Propedutico
4
0
b[+3]=+1.000
0
2)Introduce la matriz de terminos
dependientes A[+1][+1]=1
Curso
Propedutico
4
0
A[+1][+2]=2
A[+1][+3]=6
A[+2][+1]=4
A[+2][+2]=8
A[+2][+3]=1
A[+3][+1]=2
A[+3][+2]=3
A[+3][+3]=5
MATRIZ DE TERMINOS DEPENDIENTES A[+1]
[+1]=+1.0000 A[+1][+2]=+2.0000 A[+1]
[+3]=+6.0000 A[+2][+1]=+4.0000 A[+2]
[+2]=+8.0000 A[+2][+3]=1.0000 A[+3]
[+1]=2.0000 A[+3][+2]=+3.0000 A[+3]
[+3]=+5.0000
Se intercambia la fila +2 con la fila +3
LA MATRIZ TRIANGULAR SUPERIOR ES: u[+1]
[+1]=+1.0000 u[+1][+2]=+2.0000 u[+1]
[+3]=+6.0000
u[+2][+1]=+0.0000
u[+2][+2]=+7.0000
u[+2][+3]=+17.0000
u[+3][+1]=+0.0000
u[+3][+2]=+0.0000
u[+3][+3]=25.0000
VECTOR INDEPENDIENTE Y:
y[+1]=+1.0
000
y[+2]=+3.0
000
y[+3]=
3.0000
Aplicando sustitucin
hacia atrs VECTOR
SOLUCION:
x[+1]=+0.0057
x[+2]=+0.1371
x[+3]=+0.1200
Curso
Propedutico
4
1
Curso
Propedutico
Programacin y
4
2
Programacin y Mtodos
Numricos.
GaussJordan
El mtodo de GaussJordan es una variacin de la eliminacin de Gauss. La
principal diferencia consiste en que cuando una incgnita se elimina en el
mtodo de GaussJordan, sta es eliminada de todas las otras ecuaciones, no
slo de las subsecuentes. Adems, todos los renglones se normalizan al
dividirlos entre su elemento pivote. De esta forma, el paso de eliminacin
genera una matriz identidad en vez de una triangular (figura 2.2). En
consecuencia, no es necesario usar la sustitucin hacia atrs para obtener la
solucin.
Programacin y Mtodos
4
7
Curso
Propedutico
Programacin y
4
8
Curso
Propedutico
Programacin y
4
9
Programacin y
Mtodo Iterativo de
Gauss
Para ste mtodo, se considera el siguiente sistema de
ecuaciones.
(32)
(33)
(34)
Curso
Propedutico
5
0
Programacin y Mtodos
Numricos.
(35)
(36)
Con un vector de condiciones iniciales de 1,2 y 2. Para un criterio de
convergencia de 0.000001 y 20 iteraciones. La ejecucin del programa es:
Programa de Mtodo Iterativo de Gauss (Jacobi)
1)Introduce el vector de terminos
independientes b[+1]=7
b[+2]=21
b[+3]=15
2)Introduce la matriz de terminos
dependientes A[+1][+1]=4
A[+1][+2]=1
A[+1][+3]=1
A[+2][+1]=4
A[+2][+2]=8
A[+2][+3]=1
A[+3][+1]=2
A[+3][+2]=1
A[+3][+3]=5
MATRIZ DE TERMINOS DEPENDIENTES A[+1]
[+1]=+4.0000 A[+1][+2]=1.0000 A[+1]
[+3]=+1.0000 A[+2][+1]=+4.0000 A[+2]
[+2]=8.0000 A[+2][+3]=+1.0000 A[+3][+1]=
2.0000 A[+3][+2]=+1.0000 A[+3]
[+3]=+5.0000
3)Introduce el vector de condiciones
inciales x[+1]=1
x[+2]=2
x[+3]=2
4)Introduce el nmero de iteraciones: 20
5)Introduce un criterio de convergencia: 0.000001
Curso
Propedutico
5
1
******Iteracin+1**********
y[+1]= +1.7500 y[+2]= +3.3750 y[+3]= +3.0000
******Iteracin+2**********
y[+1]= +1.8438 y[+2]= +3.8750 y[+3]= +3.0250
******Iteracin+3**********
y[+1]= +1.9625 y[+2]= +3.9250 y[+3]= +2.9625
******Iteracin+4**********
y[+1]= +1.9906 y[+2]= +3.9766 y[+3]= +3.0000
******Iteracin+5**********
y[+1]= +1.9941 y[+2]= +3.9953 y[+3]= +3.0009
******Iteracin+6**********
y[+1]= +1.9986 y[+2]= +3.9972 y[+3]= +2.9986
******Iteracin+7**********
y[+1]= +1.9996 y[+2]= +3.9991 y[+3]= +3.0000
******Iteracin+8**********
y[+1]= +1.9998 y[+2]= +3.9998 y[+3]= +3.0000
******Iteracin+9**********
y[+1]= +1.9999 y[+2]= +3.9999 y[+3]= +2.9999
******Iteracin+10**********
y[+1]= +2.0000 y[+2]= +4.0000 y[+3]= +3.0000
******Iteracin+11**********
y[+1]= +2.0000 y[+2]= +4.0000 y[+3]= +3.0000
******Iteracin+12**********
y[+1]= +2.0000 y[+2]= +4.0000 y[+3]= +3.0000
El mtodo converge a
+12iteraciones La solucin
es:
x[+1]= +2.0000x[+2]= +4.0000x[+3]= +3.0000
Programacin y Mtodos
Numricos.
III. SISTEMAS DE
ECUACIONES NO
LINEALES.
(37)
como:
Programacin y Mtodos
Numricos.
(38)
Si se escribe el sistema en forma matricial, se tiene:
(39)
En forma compacta:
(40)
Donde J(x) es la matriz de primeras derivada o Jacobiano. Como se quiere
encontrar el cero de la funcin, la aproximacin lineal que se debe resolver es:
(41)
(42)
En el programa desarrollado en C++ la matriz Jacobiana inversa por el vector
de funciones, se define como delta y se resuelve usando Eliminacin Gaussiana
Simple.
Se resuelve el siguiente sistema de ecuaciones dado por:
(43)
El Jacobiano es:
(44)
Y el arreglo de funciones
(45)
Considerando como valores iniciales:
Adems al introducir las funciones al programa as como la matriz Jacobiana,
se considera a x1 como x y a x2 como y, esto para no hacer tediosa la
compresin de las variables dentro del cdigo en C++. Antes de ejecutar el
programa, se introducen las funciones as como la matriz Jacobiana en las
directivas #define, se especifica el tamao del sistema en la constante global
M, ste tiene que ser un sistema cuadrado, para que tenga al menos una
solucin el sistema de ecuaciones. Para asegurar el llenado de las funciones
y la matriz Jacobiana, cuando en el cdigo cambia el tamao del sistema, se
tiene que definir nuevamente en la parte main del programa y
0.158413
xk+1[+1]=
+1.998701
xk+1[+2]=
+3.002289
MATRIZ JACOBIANA DE LA +3 ITERACION ES:
Jacob[+1][+1]=+6.999690Jacob[+1]
[+2]=+1.998701 Jacob[+2]
[+1]=+27.041210Jacob[+2][+2]=+37.004056
VECTOR DE FUNCIONES DE LA +3 ITERACION
ES: F(x)[+1]=0.004520
F(x)[+2]=+0.049571
******Iteracin+3*******
*** delta[+1]=
0.001299 delta[+2]=
+0.002289 xk+1[+1]=
+2.000000 xk+1[+2]=
+2.999999
Curso
Propedutico
6
0
6
1
Curso
Propedutico
6
2
Mnimos Cuadrados
Para entender el procedimiento de mnimos cuadrados para el ajuste de datos
con un polinomio de grado n. Habra que suponer que se ajusta un polinomio
de segundo grado o cuadrtico:
y = a0 + a1x + a2x2 + e
(46)
(47)
Al seguir el procedimiento de la seccin anterior, obtenemos la derivada de la
ecuacin (47) con respecto a cada uno de los coeficientes desconocidos del
polinomio
(48)
Estas ecuaciones se igualan a cero y se reordenan para desarrollar
siguiente conjunto de ecuaciones normales:
el
(49)
Donde todas las sumatorias van desde i = 1 hasta n. Observe que las tres
ecuaciones anteriores son lineales y tienen tres incgnitas: a0, a1 y a2. Los
coeficientes de las incgnitas se evalan de manera directa, a partir de los
datos observados. En este caso, observamos que el problema de determinar
un polinomio de segundo grado por mnimos cuadrados es equivalente a
resolver un sistema de tres ecuaciones lineales simultneas. En la parte tres
se estudiaron las tcnicas para resolver tales ecuaciones.
(50)
(51)
Para el programa desarrollado en C++ Se ajusta a un polinomio de segundo
orden los datos de la siguiente tabla.
Programacin y Mtodos
Numricos.
(52)
Reordenndose se tiene:
(53)
Que es una frmula de interpolacin lineal. La notacin f1(x) designa que ste
es un polinomio de interpolacin de primer grado. Observe que adems de
representar la pendiente de la lnea que une los puntos, el trmino [f(x1)
f(x0)]/(x1 x0) es una aproximacin en diferencia dividida finita a la primer
derivada. En general, cuanto menor sea el intervalo entre los datos, mejor
ser la aproximacin. Esto se debe al hecho de que, conforme el intervalo
disminuye, una funcin continua estar mejor aproximada por una lnea recta.
Figura 4.2 .Ejemplos de interpolacin polinomial: a) de primer grado (lineal) que une dos puntos,
b) de segundo grado (cuadrtica o parablica) que une tres puntos y c) de tercer grado (cbica)
que une cuatro puntos.
1)
Como se hizo antes con las interpolaciones lineales y cuadrticas, los puntos
asociados con datos se utilizan para evaluar los coeficientes b0, b1,..., bn.
Para un polinomio de nsimo grado se requieren n + 1 puntos: [x0, f(x0)],
[x1, f(x1)],..., [xn, f(xn)]. Se usan estos datos y las siguientes ecuaciones
para evaluar los coeficientes:
b0 = f(x0)
(56)
b1 = f[x1, x0]
b2 = f[x2, x1, x0]
(57)
La segunda diferencia dividida finita, que representa la diferencia de las dos
primeras diferencias divididas, se expresa en forma general como:
(58)
1
3
.
6
0
Y
[
4
]
=
2
7
.
2
0
(60)
Y[5]= 40.90
Y[6]= 61.10
MATRIZ DD
0
1
2
3
4
5
0
1
2
3
4
5
2.1
7.7
13.6
27.2
40.9
61.1
Valores de B
b[1]= 2.1
b[2]= 5.6
b[3]= 0.15
b[4]=
1.23333
b[5]=
0.625 b[6]=
0.241667
MATRIZ
1
1
1
1
1
1
Polinomios
0
0
0
0
0
0
1
0
0
3
2
0
6
11
6
10
35 50
0
0
0
0
0
24
0
0
0
0
0
0
5.8
Curso
Propedutico
7
0
Curso
Propedutico
Programacin y
7
1
Programacin y Mtodos
Numricos.
(61)
Donde
(62)
Donde designa el producto de. Por ejemplo, la versin lineal (n = 1) es
(63)
Y la versin de segundo grado es
(64)
El razonamiento detrs de la formulacin de Lagrange se comprende
directamente al darse cuenta de que cada trmino Li(x) ser 1 en x = xi y 0
en todos los otros puntos. De esta forma, cada producto Li(x) f(xi) toma el
valor de f(xi) en el punto xi. En consecuencia, la sumatoria de todos los
productos en la ecuacin (61) es el nico polinomio de nsimo grado que
pasa exactamente a travs de todos los n + 1 puntos, que se tienen como
datos.
Para el programa en C++. Se comprueban los mismos puntos que se
emplearon para encontrar el polinomio de diferencias divididas de Newton,
para el polinomio de interpolacin de Lagrange. ste tiene que ser
exactamente el mismo.
Metodo de Interpolacion de Lagrange
Numero de datos de tu
lista 6 Introduce los
valores de x[i] x[0]= 0
x[1]= 1
x[2]= 2
x[3]= 3
x[4]= 4
x[5]= 5
V. ECUACIONES
DIFERENCIALES
ORDINARIAS.
Sea una ecuacin diferencial ordinaria de la forma
(65)
Y sea
(66)
La ecuacin de pendiente ordenada al origen. De acuerdo con esta ecuacin,
la pendiente estimada f se usa para extrapolar desde un valor anterior yi a un
nuevo valor yi+1 en una distancia h (figura 5.1).
Nuevo valor = valor anterior + pendiente tamao de paso
Esta frmula se aplica paso a paso para calcular un valor posterior y, por lo
tanto, para trazar la trayectoria de la solucin. Todos los mtodos de un paso
que se expresen de esta forma general, tan slo van a diferir en la manera en
la que se estima la pendiente. En otras palabras, se toma la pendiente al inicio
del intervalo como una aproximacin de la pendiente promedio sobre todo el
intervalo. Tal procedimiento, llamado mtodo de Euler. Despus se revisa otro
mtodo de un paso que emplean otras formas de estimar la pendiente que
dan como resultado predicciones ms exactas. Todas estas tcnicas en
general se conocen como mtodos de RungeKutta.
Mtodo de Euler
La primera derivada ofrece una estimacin directa de la pendiente en xi
c/ =
(xi, yi)
(67)
i+1
= yi + (xi, yi)h
(68)
+3.900000+0.352701+0.0202120.018028
+4.200000+0.347293+0.0128150.028389
+4.500000+0.338776+0.0045780.024822
+4.800000+0.3313300.0014350.014773
+5.100000+0.3268980.0042670.004442
+5.400000+0.3255650.004430+0.002675
+5.700000+0.3263680.003076+0.005709
+6.000000+0.3280800.001330+0.005513
+6.300000+0.329735+0.000062+0.003609
(69)
Donde
(70)
Observe que con las EDO que estn en funcin slo de x, el mtodo RK clsico
de cuarto orden es similar a la regla de Simpson 1/3. Adems, el mtodo RK
de cuarto orden tiene similitud con el procedimiento de Heun en cuanto a
que se usan mltiples estimaciones de la pendiente para obtener una mejor
pendiente promedio en el intervalo. Como se muestra en la figura 5.2, cada
una de las k representa una pendiente.
Curso
Propedutico
8
0
Para RK de 4to orden, se usa la misma funcin que se us para Euler, con
el mismo paso y condiciones iniciales.
Programa Mtodo de RungeKutta de 4to orden
*Nota: Introducir datos en formato decimal (sin indicar
operaciones. Ejemplo: 6.2832, en vez de 2*PI o 2*3.1416)
Limite inferior del intervalo
(ti):0 Limite superior del
intervalo (tf):6.2832 Condicin
inicial (xi):0
Condicin inicial
(yi):0 Ancho de
intervalo (h):0.3
xi
yi
y true
k1
k2
k3
k4
Pend tot
+0.000000+0.000000+0.000000+2.000000+1.390175+1.390175+0.804550+
0.418262
+0.300000+0.418262+0.418297+0.804550+0.293241+0.293241
0.113782+0.093187
+0.600000+0.511449+0.5115140.1137820.4043550.4043550.580684
0.115594
+0.900000+0.395855+0.3959370.5806840.6553990.6553990.647643
0.192496
+1.200000+0.203359+0.2034460.6476430.5795380.5795380.473282
0.171954
+1.500000+0.031405+0.0314880.4732820.3489960.3489960.223318
0.104629
+1.8000000.0732250.0731480.2233180.1087110.1087110.013341
0.033575
+2.1000000.1068000.106730
0.013341+0.058595+0.058595+0.106245+0.016364
+2.4000000.090435
0.090370+0.106245+0.131315+0.131315+0.137244+0.038438
+2.7000000.051998
0.051934+0.137244+0.128421+0.128421+0.109519+0.038022
+3.0000000.013976
0.013911+0.109519+0.084972+0.084972+0.058605+0.025401
Curso
Propedutico
8
1
+3.300000+0.011425+0.011491+0.058605+0.033428+0.033428+0.011559+
0.010194
+3.600000+0.021619+0.021686+0.0115590.0057550.0057550.018028
0.001475
+3.900000+0.020144+0.0202120.0180280.0253840.0253840.028389
0.007398
+4.200000+0.012747+0.0128150.0283890.0278820.0278820.024822
0.008237
+4.500000+0.004510+0.0045780.0248220.0201650.0201650.014773
0.006013
+4.8000000.0015030.0014350.0147730.0093560.0093560.004442
0.002832
+5.1000000.0043350.0042670.0044420.0003750.000375+0.002675
0.000163
+5.4000000.004498
0.004430+0.002675+0.004677+0.004677+0.005709+0.001355
+5.7000000.003144
0.003076+0.005709+0.005924+0.005924+0.005513+0.001746
+6.0000000.001398
0.001330+0.005513+0.004678+0.004678+0.003609+0.001392
+6.300000
0.000006+0.000062+0.003609+0.002469+0.002469+0.001387+0.000744
Curso
Propedutico
8
2
Programacin y Mtodos
Numricos.
Para b=2
syms x f;
f='exp(-x)*(2*cos(2*x)-sin(2*x))';
ti=0;
tf=2*pi;
Xi=0;
Yi=0;
h=0.3;
Euler_Method(f,ti,tf,Xi,Yi,h);
Heun_Method(f,ti,tf,Xi,Yi,h);
Mid_Method(f,ti,tf,Xi,Yi,h);
Runge_Kutta2_Ralston(f,ti,tf,Xi,Yi,h);
Runge_Kutta3(f,ti,tf,Xi,Yi,h);
Runge_Kutta4(f,ti,tf,Xi,Yi,h);
Runge_Kutta5_Butcher(f,ti,tf,Xi,Yi,h);
title('Comparacin de los mtodos de Runge Kutta con la funcin
original');
xlabel('Tiempo t (seg)');
ylabel('f(t)');
legend('Euler','Solucin verdadera','Heun','Punto Medio','Ralston','Runge
Kutta 3', 'Runge Kutta 4','Runge Kutta 5 (Butcher)');
Comparacin de los mtodos de Runge Kutta con la funcin original
1.2
Euler
Solucin verdadera
Heun
Punto Medio
Ralston
Runge Kutta 3
Runge Kutta 4
0.8
0.6
f(t)
0.4
0.2
-0.20
3
Tiempo t (seg)
Figura 5.5 Comparacin grafica de los mtodos de Runge Kutta, para la EDO.
f(x) = e-x (2 cos(b x) - sin(2 x))
Y_Verdadero
Y_Euler
Pendiente
Y+1_Euler
B =
0
1.0000
2.0000
3.0000
4.0000
5.0000
6.0000
7.0000
8.0000
9.0000
10.0000
11.0000
12.0000
13.0000
14.0000
15.0000
16.0000
17.0000
18.0000
19.0000
20.0000
x
0
0.3000
0.6000
0.9000
1.2000
1.5000
1.8000
2.1000
2.4000
2.7000
3.0000
3.3000
3.6000
3.9000
4.2000
4.5000
4.8000
5.1000
5.4000
5.7000
6.0000
Y_Verdadero
0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128
0.0046
-0.0014
-0.0043
-0.0044
-0.0031
-0.0013
Y_Heun
B =
0
0.3000
0.6000
0.9000
1.2000
1.5000
1.8000
2.1000
2.4000
2.7000
3.0000
3.3000
3.6000
3.9000
4.2000
0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128
0
0.4207
0.5243
0.4201
0.2359
0.0677
-0.0368
-0.0722
-0.0583
-0.0218
0.0152
0.0404
0.0510
0.0500
0.0430
0
0.6000
0.8414
0.8072
0.6330
0.4387
0.2967
0.2298
0.2257
0.2576
0.2988
0.3317
0.3492
0.3527
0.3473
0.3388
0.3313
0.3269
0.3256
0.3264
0.3281
0
2.0000
0.8045
-0.1138
-0.5807
-0.6476
-0.4733
-0.2233
-0.0133
0.1062
0.1372
0.1095
0.0586
0.0116
-0.0180
-0.0284
-0.0248
-0.0148
-0.0044
0.0027
0.0057
0
0.6000
0.8414
0.8072
0.6330
0.4387
0.2967
0.2298
0.2257
0.2576
0.2988
0.3317
0.3492
0.3527
0.3473
0.3388
0.3313
0.3269
0.3256
0.3264
0.3281
4.5000
0.0046
4.8000
-0.0014
5.1000
-0.0043
5.4000
-0.0044
5.7000
-0.0031
6.0000
-0.0013
x
Y_Verdadero
0.0351
0.0291
0.0262
0.0260
0.0272
0.0289
Y_Punto_Medio
B =
0
0.3000
0.6000
0.9000
1.2000
1.5000
1.8000
2.1000
2.4000
2.7000
3.0000
3.3000
3.6000
3.9000
4.2000
4.5000
4.8000
5.1000
5.4000
5.7000
6.0000
x
0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128
0.0046
-0.0014
-0.0043
-0.0044
-0.0031
-0.0013
Y_Verdadero
0
0.4171
0.5050
0.3837
0.1871
0.0132
-0.0915
-0.1241
-0.1065
-0.0671
-0.0286
-0.0031
0.0069
0.0052
-0.0024
-0.0108
-0.0168
-0.0196
-0.0197
-0.0183
-0.0166
Y_Runge_Kutta2_Ralston
B =
0
0.3000
0.6000
0.9000
1.2000
1.5000
1.8000
2.1000
2.4000
2.7000
3.0000
3.3000
3.6000
3.9000
4.2000
4.5000
4.8000
5.1000
5.4000
5.7000
0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128
0.0046
-0.0014
-0.0043
-0.0044
-0.0031
0
0.4181
0.5137
0.4011
0.2109
0.0402
-0.0642
-0.0982
-0.0825
-0.0446
-0.0068
0.0185
0.0287
0.0274
0.0201
0.0119
0.0059
0.0031
0.0029
0.0042
6.0000
-0.0013
Y_Verdadero
0.0060
Y_Runge_Kutta3
B =
0
0.3000
0.6000
0.9000
1.2000
1.5000
1.8000
2.1000
2.4000
2.7000
3.0000
3.3000
3.6000
3.9000
4.2000
4.5000
4.8000
5.1000
5.4000
5.7000
6.0000
0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128
0.0046
-0.0014
-0.0043
-0.0044
-0.0031
-0.0013
Y_Verdadero
0
0.4183
0.5114
0.3959
0.2034
0.0314
-0.0732
-0.1068
-0.0904
-0.0520
-0.0140
0.0114
0.0216
0.0201
0.0127
0.0045
-0.0015
-0.0043
-0.0045
-0.0031
-0.0014
Y_Runge_Kutta4
B =
0
0.3000
0.6000
0.9000
1.2000
1.5000
1.8000
2.1000
2.4000
2.7000
3.0000
3.3000
3.6000
3.9000
4.2000
4.5000
4.8000
5.1000
5.4000
5.7000
0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128
0.0046
-0.0014
-0.0043
-0.0044
-0.0031
0
0.4183
0.5114
0.3959
0.2034
0.0314
-0.0732
-0.1068
-0.0904
-0.0520
-0.0140
0.0114
0.0216
0.0201
0.0127
0.0045
-0.0015
-0.0043
-0.0045
-0.0031
6.0000
x
-0.0013
Y_Verdadero
-0.0014
Y_Runge_Kutta5_Butcher
B =
0
0.3000
0.6000
0.9000
1.2000
1.5000
1.8000
2.1000
2.4000
2.7000
3.0000
3.3000
3.6000
3.9000
4.2000
4.5000
4.8000
5.1000
5.4000
5.7000
6.0000
0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128
0.0046
-0.0014
-0.0043
-0.0044
-0.0031
-0.0013
0
0.4183
0.5115
0.3959
0.2034
0.0315
-0.0731
-0.1067
-0.0904
-0.0519
-0.0139
0.0115
0.0217
0.0202
0.0128
0.0046
-0.0014
-0.0043
-0.0044
-0.0031
-0.0013
end
x=x1(u);
y3(u)=eval(primitiva);
hold on
plot(x1,y3,'-b')
disp('
i
x
Y_Verdadero
Y+1_Euler')
B=[A, x1', y3', y1, fp', y2']
end
Y_Euler
Pendiente
y1(1)=Yi;
y2(1)=Yi;
A(1)=0;
for k=1:n
x=x1(k);
y=y1(k);
fp(k+1)=eval(f);
y2(k+1)=y1(k)+((fp(k+1))*h)/2;
y=y2(k+1);
x=x1(k)+h/2;
fp2(k+1)=eval(f);
y1(k+1)=y1(k)+(fp2(k+1))*h;
A(k+1,1)=k;
end
plot(x1,y1,'-m')
primitiva=int(sym(f));
Q=length(x1);
for u=1:Q
x=x1(u);
y4(u)=eval(primitiva);
end
disp('
x
Y_Verdadero
Y_Punto_Medio')
B=[x1', y4', y1]
end
Curso
Propedutico
9
0
end
Curso
Propedutico
9
1
x=x1(k)+h/2;
k2(k+1)=eval(f); y3(k+1)=y1(k)
+((k2(k+1))*h)/2; y=y3(k+1);
x=x1(k)+h/2;
k3(k+1)=eval(f);
y4(k+1)=y1(k)+(k3(k+1))*h;
y=y4(k+1);
x=x1(k)+h;
end k4(k+1)=eval(f);
y1(k+1)=y1(k)+(1/6)*(k1(k+1)+2*(k2(k+1))+2*(k3(k+1))+k4(k+1))*h;
A(k+1,1)=k;
plot(x1,y1,'*y')
primitiva=int(sym(f))
Q=length(x1);
for u=1:Q
x=x1(u);
y4(u)=eval(primitiva);
end
disp('
x
Y_Verdadero
B=[x1', y4', y1]
end
Y_Runge_Kutta4')
Curso
Propedutico
9
2
x=x1(k)+(3/4)*h;
k5(k+1)=eval(f);
y6(k+1)=y1(k)-(3/7)*(k1(k+1))*h+(2/7)*(k2(k+1))*h+(12/7)*(k3(k+1))*h(12/7)*(k4(k+1))*h+(8/7)*(k5(k+1))*h;
y=y6(k+1); x=x1(k)
+h;
k6(k+1)=eval(f);
y1(k+1)=y1(k)+(1/90)*(7*(k1(k+1))+32*(k3(k+1))+12*(k4(k+1))+32*(k5(k+1))+
7*(k6(k+1)))*h;
A(k+1,1)=k;
end
plot(x1,y1,'xk')
primitiva=int(sym(f))
Q=length(x1);
for u=1:Q
x=x1(u);
y4(u)=eval(primitiva);
end
disp('
x
Y_Verdadero
Y_Runge_Kutta5_Butcher')
B=[x1', y4', y1]
end