Está en la página 1de 32

INSTITUTO POLITECNICO

NACIONAL
E.S.I.M.E. Azcapotzalco

Métodos numéricos
Profesor: David Domínguez Zamilpa

Martinez Oviedo Omar


2sv1
Equipo “C” Apuntes Extraordinario 2SV1

INDICE
Tema Página
Asignación de trabajos____________________________3
Método de Euler________________________________4
Código escrito___________________________9
Capturas de código_______________________11
Pantalla de Resultados____________________12
Método de Runge-Kutta 2° Orden__________________13
Código escrito___________________________22
Capturas de código_______________________25
Pantalla de Resultados____________________27

2
Equipo “C” Apuntes Extraordinario 2SV1

ASIGNACIÓN DE EXTRAORDINARIO

3
Equipo “C” Apuntes Extraordinario 2SV1

METODO DE EULER
Observe la siguiente figura:

y fr(x)=yv

= 𝑦𝑣 − 𝑦𝑖+1
𝑎𝑣

Yi
yi+1=yi+θh

Extrapolación
numérica que
Pendiente=0
obtiene un
nuevo valor
x
yi+1 en base al
Xi Xi+1
h valor del
trazado
Tamaño de paso anterior yi
con el
trazado dela
pendiente al
inicio del
Figura de la extrapolación puntual, intervalo,
paso a paso, para calcular nuevos como una
valores – yi+1 – de aproximación a la aproximación
función verdadera de la
pendiente
gv = fv (x). promedio en
todo el
intervalo.

4
Equipo “C” Apuntes Extraordinario 2SV1

Es decir, el nuevo valor extrapolado Yi+1 o YEULER se calcula como:


𝒚𝒊+𝟏 = 𝒚𝑬𝑼𝑳𝑬𝑹 = 𝒚𝒊 + ∅𝒉
Donde:
∅ = 𝑷𝒆𝒏𝒅𝒊𝒆𝒏𝒕𝒆 𝒐 𝒆𝒄𝒖𝒂𝒄𝒊ó𝒏 𝒅𝒊𝒇𝒆𝒓𝒆𝒏𝒄𝒊𝒂𝒍
𝒉 = 𝑻𝒂𝒎𝒂ñ𝒐 𝒅𝒆 𝒑𝒂𝒔𝒐
𝒚𝒊 = 𝑽𝒂𝒍𝒐𝒓 𝒂𝒏𝒕𝒆𝒓𝒊𝒐𝒓
𝒚𝒊+𝟏 = 𝑵𝒖𝒆𝒗𝒐 𝒗𝒂𝒍𝒐𝒓
Por lo que: ∅ = 𝒇(𝒙𝒊 , 𝒚𝒊 ) = 𝒆𝒄. 𝒅𝒊𝒇𝒆𝒓𝒆𝒏𝒄𝒊𝒂𝒍 𝒆𝒗𝒂𝒍𝒖𝒂𝒅𝒂 𝒆𝒏 𝒙𝒊 , 𝒚𝒊
Ejercicio 1.- Con el método de Euler integre numéricamente la siguiente edo.
𝒅𝒚
= −𝟐𝒙𝟑 + 𝟏𝟐𝒙𝟐 − 𝟐𝟎𝒙 + 𝟖. 𝟓
𝒅𝒙
Desde x=0 hasta x=4 con un tamaño de paso h=0.5. La ecuación inicial C.I. en x=0,
es y=1. Resuelva:
(1) Determina la fv(x), es decir, la función verdadera
(2) la EDO.
(3) Calcule el error verdadero %
(4) Grafica comparativa de YEULER vs YV
SOLUCIÓN
(1) YV = fV (x) = ?
Se integra la EDO indicada, de manera indefinida
𝑌𝑣 ∫(−2𝑥 3 + 12𝑥 2 − 20𝑥 + 8.5)𝑑𝑥 =
2 12 20
= − 𝑥 4 + 𝑥 3 − 𝑥 2 + 8.5𝑥 + 𝐶 =
4 3 2
= 0.5𝑥 + 4𝑥 − 10𝑥 2 + 8.5𝑥 + 𝐶
4 3

Para determinar el valor especifico de la constante C del resultado de esta


integral indefinida, recurrimos a la condición inicial de que: en x=0 y=1, y la
aplicamos al resultado, encontrando una única YV de 4° grado.
Entonces: 1=-0.5(0)4+4(0)3-10(0)2+8.5(0)+C
C=1
YV= -0.5x4+4x3-10x2+8.5x+1

5
Equipo “C” Apuntes Extraordinario 2SV1

(2) Integre numéricamente la EDO.


Debemos calcular las extrapolaciones numéricas con valor especifico de
aproximación puntual, llamado valor nuevo Yi+1 = YEULER, y que serán las
aproximaciones logradas con el tamaño de paso h=0.5 y con la aplicación de
la pendiente promedio a lo largo del intervalo x[0,4]:
Se aplicará entonces la fórmula de Euler:
Yi+1 = Yeuler = yi + f(xi,yi)h
Los cálculos efectuados los colocamos en la siguiente tabla
X YV YEULER ETV%
0.0 1.00000 1.00000 0%
0.5 3.21875 5.25000 63%
1.0 3.00000 5.87500 95.8%
1.5 2.21875 5.12500 131%
2.0 2.00000 4.50000 125%
2.5 2.71875 4.75000 74.7%
3.0 4.00000 5.87500 46.9%
3.5 4.71875 7.12500 51%
4.0 3.00000 7.00000 133.3%

Los cálculos para YEULER=Yi+1, se efectuarán según la formula para calcular


valores nuevos extrapolados de Euler. Con las siguientes operaciones:
Para Xi+1=0.5 = f(xi,yi) = f(0,1)
𝑌𝑖+1 = 𝑌𝐸𝑈𝐿 = 𝑌𝑖 + f(𝑥𝑖 , 𝑦𝑖 )ℎ = 1 + 𝑓(0,1)(0.5) ∴
𝑓(0,1) = −2(0)3 + 12(0)2 − 20(0) + 8.5 =
𝑌𝑖+1 = 1 + 8.5(0.5) = 5.25

Para Xi+1=1.0 = f(xi=0.5, yi=5.25)


𝑌𝑖+1 = 5.25 + [𝑓(0.5 , 5.25)0.5]ℎ ∴
∴ 𝑓(0.5 , 5.25) = −2(0.5)3 + 12(0.5)2 − 20(0.5) + 8.5 = 1.25
𝑌𝑖+1 = 5.25 + [(1.25)0.5] = 5.875
Para Xi+1=1.5 = f(xi=1.0, yi=5.875)
𝑌𝑖+1 = 5.875 + 𝑓(1 , 5.875)0.5 ∴
∴ 𝑓(1 , 5.875) = −2(1) + 12(1)2 − 20(1) + 8.5 = −2 + 12 − 20 + 8.5 = −1.5
3

𝑌𝑖+1 = 5.875 − (1.5)0.5 = 5.125

6
Equipo “C” Apuntes Extraordinario 2SV1

Para Xi+1=2.0 = f(xi=1.5, 5.125)


𝑌𝑖+1 = 5.125 + 𝑓(1.5 , 5.125)0.5 ∴
∴ 𝑓(1.5 , 5.125) = −2(1.5)3 + 12(1.5)2 − 20(1.5) + 8.5 = −1.25
𝑌𝑖+1 = 5.125 − 1.25(0.5) = 4.5
Para Xi+1=2.5 = f(xi=2 , 4.5)
𝑌𝑖+1 = 4.5 + 𝑓(2 , 4.5)0.5 ∴
∴ 𝑓(2 , 4.5) = −2(2)3 + 12(2)2 − 20(2) + 8.5 = −16 + 48 − 40 + 8.5 = 0.5
𝑌𝑖+1 = 4.5 + (0.5)0.5 = 4.75
Para Xi+1=3 = f(xi=2.5 , Yi=4.75)
𝑌𝑖+1 = 4.75 + 𝑓(2.5 , 4.75)0.5 ∴
∴ 𝑓(2.5 , 4.75) = −2(2.5)3 + 12(2.5)2 − 20(2.5) + 8.5 = 2.25
𝑌𝑖+1 = 4.75 + 2.25(0.5) = 5.875
Para Xi+1=3.5 = f(xi=3 , 5.875)
𝑌𝑖+1 = 5.875 + 𝑓(3 , 5.875)0.5 ∴
∴ 𝑓(3 , 5.875) = −2(3) + 12(3)2 − 20(3) + 8.5 = −54 + 108 − 60 + 8.5 = 2.5
3

𝑌𝑖+1 = 5.875 + 2.5(0.5) = 7.125


Para Xi+1=4 = f(xi=3.5 , 7.125)
𝑌𝑖+1 = 7.125 + 𝑓(3,5 , 7.125)0.5 ∴
∴ 𝑓(3.5 , 7.125) = −2(3.5)3 + 12(3.5)2 − 20(3.5) + 8.5 = −0.25
𝑌𝑖+1 = 7.125 + 0.25(0.5) = 7
𝑌𝑉 −𝑌𝐸𝑈𝐿𝐸𝑅
(3) Calcule los errores verdaderos%: 𝜖 𝑇𝑉% = 100 [ ]%
𝑌𝑉
Para: (X,YV)=(0.5 , 3.21875), y con YEULER=5.25
3.21875 − 5.25
𝜖 𝑇𝑉% = 100 [ ] = 63.1%
3.21875
Para: (X,YV)=(1 , 3), y con YEULER=5.875
3 − 5.875
𝜖 𝑇𝑉% = 100 [ ] = 95.8%
3
Para: (X,YV)=(1.5 , 2.21875), y con YEULER=5.125
2.21875 − 5.125
𝜖 𝑇𝑉% = 100 [ ] = 131%
2.21875
⁞ ⁞ ⁞
Para: (X,YV)=(4 , 3), y con YEULER=7
3−7
𝜖 𝑇𝑉% = 100 [ ] = 133.3%
3

7
Equipo “C” Apuntes Extraordinario 2SV1

(4) Grafica comparativa YEULER VS YV

(5) Conclusiones
Observando la grafica comparativa de la función verdadera y el acercamiento
de la integración numérica con el método de Euler, pudimos observar que las
aproximaciones numéricas puntuales extrapoladas tienen asociadas errores
notables bastante grandes

8
Equipo “C” Apuntes Extraordinario 2SV1

Código Escrito
#include <stdio.h>
#include <conio.h>
void enc()
{
clrscr();
gotoxy(35,1);
printf("I.P.N.");
gotoxy(33,2);
printf("E.S.I.M.E AZCAPOTZALCO");
gotoxy(14,3);
printf("Equipo 'C' Martinez Oviedo Omar");
}
void enunciado()
{
gotoxy(1,5);
printf("Problema: Utilizar el método de Euler para ");
printf("integrar numericamente la ecuacion siguiente ");
printf("f(x,y)= 2x^3 + 12x^2- 20x + 8.5");
printf("de x=0 hasta x=4 con un tamano de paso de 0.5.");
printf("La condicion inicial en x=0 es y=1. Tomar en ");
printf("cuenta que la solucion exacta esta dada por la ");
printf("ecuacion y=-0.5x^ + 4x^3 - 10x^2+ 8.5x + 1 \n");
gotoxy(35,10);
printf("SOLUCION");
}
void euler()
{
float fXi;

9
Equipo “C” Apuntes Extraordinario 2SV1

float Yi_1, Yi;


float f_xy;
float h;
float Xr, Yr;
fXi=0, Yi=1, h=0.5, Xr=0, Yr=1,Yi_1=1;
gotoxy(1,11);
printf("\n Usando la ecuacion de Euler Yi+1=Yi+f(Xi, Xi)*h");
gotoxy (1,13);
printf("X Y Verdadera Y Euler\n");
printf("----------------------------------------------\n");
printf("%f %f %f\n", fXi, Yr, Yi_1);
for (fXi=0; fXi<4; fXi=fXi+0.5) {
f_xy=-2*fXi*fXi*fXi+12*(fXi*fXi) -20*fXi+8.5;
Yi_1=Yi+f_xy*h;
Xr=Xr+.5;
Yr=-0.5*(Xr*Xr*Xr*Xr)+4*(Xr*Xr*Xr)-10*(Xr*Xr)+8.5*Xr+1;
printf("%f %f %f\n", fXi+.5, Yr, Yi_1);
Yi=Yi_1;
}
}
int main()
{
char c;
enc();
enunciado();
euler();
getch();
return 0;
}

10
Equipo “C” Apuntes Extraordinario 2SV1

Capturas de Código

Pantalla
De
Resultados

11
Equipo “C” Apuntes Extraordinario 2SV1

12
Equipo “C” Apuntes Extraordinario 2SV1

Método de Runge-Kutta 2° Orden


LOS METODOS DE R-K LOGRAN LA EXACTITUD DEL PROCEDIMIENTO DE LA
SERIE DE TAYLOR, SIN REQUERIR DEL CÁLCULO DE DERIVADAS DE ORDEN
SUPERIOR. TODAS TIENEN LA FORMA GENERALIZADA DE LA EC. SIGUIENTE:

𝑌𝑖+1 = 𝑦𝑖 + ∅ (𝑥𝑖 , 𝑦𝑖 , ℎ)ℎ ----------- 5


Por lo tanto
∅ (𝑥𝑖 , 𝑦𝑖 , ℎ)ℎ ≡ Función de incremento o pendiente representativa en el intervalo

La función de incremento se escribe en general como:


∅ = 𝑎1 𝑘1 + 𝑎2 𝑘2 +. . . +𝑎𝑛 𝑘𝑛
Por lo tanto 𝑎1 , 𝑎2 … , 𝑎𝑛 , son constantes, y la k son:
𝑘1 = 𝑓(𝑥𝑖 , 𝑦𝑖 )
𝑘2 = 𝑓(𝑥𝑖 + 𝑝1 ℎ, 𝑦𝑖 + 𝑞1 , 𝑘, ℎ)
𝑘3 = 𝑓(𝑥𝑖 + 𝑝2 ℎ, 𝑦𝑖 + 𝑞2 , 𝑘, ℎ + 𝑞2 , 𝑘2 ℎ)
Y así sucesivamente hasta el enésimo de cada termino en la ecuación
Ahora como R-K / 2° orden, la versión de la ec. 5 es
𝑦𝑖+1 = 𝑦𝑖 + (𝑎1 𝑘1 + 𝑎2 𝑘2 )ℎ---------------- 5’
Por lo tanto:
𝑘1 = 𝑓(𝑥𝑖 , 𝑦𝑖 )------------------------------- 5”
𝑘2 = 𝑓(𝑥𝑖 + 𝑝1 ℎ, 𝑦𝑖 + 𝑞1 , 𝑘, ℎ)----------- 5”
Los valores de 𝑎1 , 𝑎2 , 𝑝1 , 𝑠𝑖 𝑞1 , se evalúan al igualar la función 5’ con la expansión de
la serie de Taylor, hasta el término de segundo orden. Al realizarlo, se desarrollan 3
ecuaciones para evaluar las cuatro constantes desconocidas. Las tres ecuaciones
son:
𝑎1 + 𝑎2 = 1-------- 7
13
Equipo “C” Apuntes Extraordinario 2SV1

1
𝑎1 𝑝1 = ------------ 7
2
1
𝑎2 𝑞11 = ----------- 7
2

Como tenemos tres ecuaciones con cuatro incógnitas, debemos de dar un valor a
una de estas para determinar las otras tres. Por esto hay un número infinito de
métodos de R-K de 2° orden
A continuación, presentamos tres de las versiones más usadas por proporcionarnos
errores contextuales menores:
𝟏
A) Método de Heun (con el corrector 𝒂𝟐 = )
𝟐

𝑘1 𝑘2
𝑦1+1 = 𝑦𝐻𝑒𝑢𝑛 = 𝑦𝐻 = 𝑦𝑖 + ( + )ℎ
2 2
Por lo tanto:
𝑘1 = 𝑓(𝑥𝑖 , 𝑦𝑖 ) & 𝑘2 = 𝑓(𝑥2 + ℎ, 𝑦𝑖 + 𝑘1 ℎ)
Escriba aquí la ecuación.

𝑘1 ≡ Pendiente al inicio del intervalo

𝑘2 ≡ Pendiente al final del intervalo

B) Método del punto medio (𝒂𝟐 = 𝟏)


𝑦𝑖+1 = 𝑦𝑃𝑀 = 𝑌𝐼 + 𝐾2 ℎ
Por lo tanto:
𝑘1 = 𝑓(𝑥𝑖 , 𝑦𝑖 )
ℎ 𝑘1 ℎ
𝑘2 = 𝑓 (𝑥𝑖 + , 𝑦𝑖 + )
2 2
𝟐
C) Método de Ralston (𝒂𝟐 = ), o de Ralston – Rabinowitz:
𝟑

𝑘1 2𝑘2
𝑦1+1 = 𝑦𝑅𝐿𝐴𝑆𝑇𝑂𝑁 = 𝑦𝑅 = 𝑦𝑖 + ( + )ℎ
3 3

14
Equipo “C” Apuntes Extraordinario 2SV1

𝑘1 = 𝑓(𝑥𝑖 , 𝑦𝑖 )
3ℎ 3
𝑘2 = 𝑓 (𝑥𝑖 + , 𝑦𝑖 + 𝑘, ℎ)
4 4
Use los métodos de R-K / 2° orden, en las versiones de Heun, punto medio y de
Ralston – Rabinowitz, para que dada la ecuación diferencial ordinaria:
𝑓(𝑥, 𝑦) = −2𝑥 3 + 12𝑥 2 − 20𝑥 + 8.5
RESUELVA:
(1) DETERMINE LA 𝑓𝑟(𝑥), a partir de 𝑓(𝑥, 𝑦), considerando la condición inicial: en
𝑥 = 0 ,𝑦 = 1
(2) Integre numéricamente la EDO. Iniciada en 𝛼 en el 𝑥 ∈ [0,4]con tamaño de
paso ℎ = 0.5, calculando también los errores verdaderos %. Indique esta
integración numérica en una tabla
(3) De acuerdo a (1) y (2) construya la gráfica comparativa de estas integraciones
numéricas con respecto a la función verdadera
(4) De acuerdo a (1) y (2) y (3) exponga sus conclusiones incluso comparando
también con los resultados o conceptos de Euler.

Solución
𝑓𝑟(𝑥) = 𝑦𝑟 =?

𝑦𝑟 = ∫(−2 𝑥 3 + 12𝑥 2 − 20𝑥 + 8.5) 𝑑𝑥 = −0.5𝑥 4 + 4𝑥 3 − 10𝑥 2 + 8.5𝑥 + 𝐶

Por lo tanto:
𝑦𝑟 = −0.5𝑥 4 + 4𝑥 3 − 10𝑥 2 + 8.5𝑥 + 1

15
Equipo “C” Apuntes Extraordinario 2SV1

Con 𝑦𝑟 definida se constituye la semitabla con las columnas 𝑥, 𝑦𝑟:

x Yr
0.0 1.00000 (2) Integre numéricamente la EDO. Iniciada en 𝛼 en el 𝑥 ∈ [0,4]
0.5 3.21875 con tamaño de paso ℎ = 0.5, calculando también los errores
1.0 3.00000 verdaderos %. Después de hechos los cálculos, regístrelos en la
tabla respectiva con el el 𝑥 ∈ [0,4] con tamaño de paso ℎ = 0.5.
1.5 2.21875
2.0 2.00000
2.5 2.71875 (2a) Integración numérica con Heun
3.0 4.00000
3.5 4.71875
Para: 𝑥𝑖+1 = 0.5 → 𝑓(𝑥𝑖 = 0, 𝑦𝑖 = 1)
4.0 3.00000
𝑘1 𝑘2
𝑦1+1 = 𝑦𝐻𝑒𝑢𝑛 = 𝑦𝐻 = 𝑦𝑖 + ( + )ℎ
2 2

Por lo tanto:

𝑘1 = 𝑓(𝑥𝑖 = 0, 𝑦𝑖 ) = −2(0)3 + 12(0)2 − 20(0) + 8.5 = 8.5


𝑘2 = 𝑓(𝑥𝑖 = 0 + 0.5, 𝑦𝑖 + 𝑘𝑖 ℎ) = −2(0.5)3 + 12(0.5)2 − 20(0.5) = 1.25

Por lo tanto:
8.5 1.25
𝑦𝑖+1 = 𝑦ℎ = 1 + ( + ) 0.5 = 1 + (4.875)0.5 = 3.4375
2 2
3.21875 − 3.4375
𝐸𝑟𝑣% = | | % = 6.8%
3.21875
Integración numérica con Heun
Para 𝑥𝑖+1 = 1.5 → 𝑓(𝑥𝑖 = 0.5,3.4375)
𝑘1 𝑘2
𝑦ℎ = 𝑦𝑖 + ( + )ℎ
2 2
Por lo tanto:
𝑘1 = 𝑓(0.5,3.4375) = 1.25

16
Equipo “C” Apuntes Extraordinario 2SV1

𝑘2 = 𝑓(0.5 + 0.5, 𝑦𝑖 + 𝑘, ℎ) = −2(1)3 + 12(1)2 − 20(1) + 8.5 = −2 + 12 − 20 + 8.5 =


−1.5
Por lo tanto:
1.25 1.5
𝑦ℎ = 3.4375 + ( + ) 0.5 = 3.4375 + (−0.0625) = 3.375
2 2
𝑦𝑣 − 𝑦ℎ 3 − 3.375
𝐸𝑟𝑣% = | | (100%) = | | (100%) = 12.5%
𝑦𝑣 3
Para 𝑥𝑖+1 = 1.5 → 𝑓(𝑥𝑖 = 1.0,3.375)
𝑘1 𝑘2
𝑦ℎ = 𝑦𝑖 + ( + )ℎ
2 2
Por lo tanto
𝑘1 = 𝑓(𝑥𝑖 = 1.0,3.375) = −1.5
𝑘2 = 𝑓(𝑥𝑖 = 1.0 + 0.5, 𝑦𝑖 + 𝑘, ℎ) = 𝑓(1.5, 𝑦𝑖 + 𝑘, ℎ) = −2(1.5)3 + 12(1.5)2 − 20(1.5) +
8.5 = −1.25
Por lo tanto:
−1.5 1.25
𝑦ℎ = 3.375 + ( − ) 0.5 = 0.5 = 2.6875
2 2
2.21875 − 2.6875
𝐸𝑟𝑣% = 100 | | % = 21.1%
2.21875
(2b) Integración numérica con el punto medio
Para: 𝑥𝑖+1 = 0.5 → 𝑓(𝑥𝑖 = 0, 𝑦𝑖 = 1)
𝑦𝑖+1 = 𝑦𝑃𝑀 = 𝑦𝑖 + 𝐾2 ℎ
Por lo tanto:
1 1 1
𝑘2 = 𝑓 (𝑥𝑖 + ℎ, 𝑦𝑖 + 𝑘, ℎ) = 𝑓 (0 + 0.25, 𝑦𝑖 + 𝑘, ℎ) =
2 2 2

= −2(0.25)3 + 12(0.25)2 − 20(0.25) + 8.5 = 4.21875


Por lo tanto:
𝑦𝑖+1 = 𝑦𝑃𝑀 = −1 + 4.21875(0.5) = 3.109375
3.21875 − 3.109375
𝐸𝑟𝑣% = 100 | | % = 3.4%
3.21875

17
Equipo “C” Apuntes Extraordinario 2SV1

Para 𝑥𝑖+1 = 1.0 → 𝑓(𝑥𝑖 = 0.5,3.109375)


𝑦𝑖+1 = 𝑦𝑃𝑀 = 𝑦1 + 𝑘2 ℎ = 3.109375 + 𝑘2 ℎ
Por lo tanto:
1 1
𝑘2 = 𝑓 (0.5 + 0.25, 𝑦𝑖 + 𝑘1 ℎ) = 𝑓 (0.75, 𝑦𝑖 + 𝑘, ℎ) =
2 2

= −2(0.75)3 + 12(0.75)2 − 20(0.75) + 8.5 = 0.59375


Por lo tanto:
𝑦𝑖+1 = 𝑦𝑃𝑀 = 3.109375 + (−0.59375)0.5 = 2.8125
3.000 − 2.8125
𝐸𝑟𝑣% = 100 | | % = 6.3%
3.000

(2c) Integración numérica con R-K / 2°orden / V. Ralston


Para: 𝑥𝑖+1 = 0.5 → 𝑓(𝑥𝑖 = 0, 𝑦𝑖 )
1 2
𝑦𝑖+1 = 𝑦𝑅𝐴𝐿𝑆𝑇 = 𝑦𝑖 + ( 𝑘1 + 𝑘2 ) ℎ
3 3
Por lo tanto:
𝑘1 = 𝑓(𝑥𝑖 = 0, 𝑦𝑖 = 1) = 8.5
3 3 3
𝑘2 = 𝑓 (0 + (0.5), 𝑦𝑖 + 𝑘1 ℎ) = 𝑓 (0.375, 𝑦𝑖 + 𝑘1 ℎ) =
4 4 4
= −2(0.375)3 + 12(0.375)2 − 20(0375) + 8.5 = 2.582031
Por lo tanto:
8.5 2
𝑦𝑅𝐴𝐿𝑆𝑇 = 1 + ( + (2.582031)) 0.5 = 1 + (2.833333 − 1.721354)0.5 = 3.277344
3 3

3.21875 − 3.277344
𝐸𝑟𝑣% = 100 | | % = 1.8%
3.21875
Para: 𝑥𝑖+1 = 1.0 → 𝑓(𝑥𝑖 = 0.5, 𝑦𝑖 = 3.277344)
𝑘1 2𝑘2
𝑦𝑖+1 = 𝑦𝑅𝐴𝐿𝑆𝑇 = 3.277744 + ( + )ℎ
3 3

18
Equipo “C” Apuntes Extraordinario 2SV1

Por lo tanto:
𝑘1 = 𝑓(0.5, 𝑦𝑖 = 3.27734) = 1.25
3 3 3
𝑘2 = 𝑓 (0.5 + (0.5), 𝑦𝑖 + 𝑘1 ℎ) = 𝑓 (0.875, 𝑦𝑖 + 𝑘1 ℎ) =
4 4 4
= −2(0.875)3 + 12(0.875)2 − 20(0.875) + 8.5 = −1.152344
Por lo tanto:
1.25 −1.152344(2)
𝑦𝑅𝐴𝐿𝑆𝑇 = 3.277344 + ( + ) 0.5 =
3 3
= 3.277344 + (0.416667 − 0.76822𝑞)0.5 =
= 3.277344 + (−0.351562)0.5 = 3.101563
3 − 3.101563
𝐸𝑟𝑣% = 100 | | % = 3.3%
3

19
Equipo “C” Apuntes Extraordinario 2SV1

A continuación, se vierten los valores calculados en la siguiente tabla:

ROUNGE KUTA / 2° Tabla VI.B


integración
numérica
ORDEN R-K / 2°
orden,
HEUN PUNTO RALSTON versiones
MEDIO Heun,
X 𝑦𝑣 𝑦ℎ = 𝑦𝑖+1 𝐸𝑟𝑣% 𝑦𝑃𝑀 𝐸𝑟𝑣% 𝑦𝑅 = 𝑌𝐼+1 𝐸𝑟𝑣% punto
= 𝑦𝑖+1 medio y de
0.0 1.0000 1.00000 0% 1.00000 0% 1.00000 0% Ralston
0
0.5 3.1875 3.47750 6.8% 3.109375 3.4% 3.277344 1.8%
1.0 3.0000 3.37500 12.5% 2.81250 6.3% 3.101563 3.4%
0
1.5 2.2187 2.68750 21.1% 1.984375 10.6% 2.347656 0.8%
5
2.0 2.0000 2.50000 25.0% 1.75 12.5% 2.140625 7.0%
0
2.5 2.7187 3.18750 17.2% 2.484375 8.6% 2.855469 5.0%
5
3.0 4.0000 4.37500 9.4% 381250 4.7% 4.117188 2.9%
0
3.5 4.7187 4.93750 4.6% 4.609375 2.3% 4.8781 1.7%
5
4.0 3.0000 3.00000 0% 3.0 0% 3.031250 1.0%
0

20
Equipo “C” Apuntes Extraordinario 2SV1

(3) De acuerdo a (1) y (2) construya la gráfica comparativa de estas


integraciones numéricas con respecto a la función verdadera

(4) Conclusiones
Se mencionó, debatió y concluyo en clase sobre las aproximaciones de las
integraciones numéricas a los puntos respectivos de la 𝑓𝑣 (𝑥); promueva
también, de esta manera, el análisis de los errores.

21
Equipo “C” Apuntes Extraordinario 2SV1

Código Escrito
#include <conio.h>
#include <stdio.h>
float k1(), k2();
float L, R, V, Ti, H;
float Tf, K1, K2;
float i, j, Iant, Inva;
float k1(float Iant)
{
float x;
x= H* (-(R/L)*(Iant)+(V/L));
return (x);
}
float k2(float K1)
{
float x;
x=H * (-(R/L)*(Iant+K1)+(V/L));
return(x);
}
int main()
{
int cont, cont1, cont2;
cont=cont1=cont2=0;
i=j=Iant=Inva=0.0;
L=R=V=Ti=H=0.0;
clrscr();
gotoxy(25,1);
printf("METODO DE RUNGE-KUTTA\n");
gotoxy(5,2);
printf("Autores: Eq. 'C' Martinez Oviedo Omar");

22
Equipo “C” Apuntes Extraordinario 2SV1

gotoxy(1,5);
printf("Teclee el valor de la autoinductancia: \n");
gotoxy(52,5); scanf("%f", &L);
gotoxy(1,6);
printf("Teclee el valor de la resistencia: ");
gotoxy(52,6); scanf("%f", &R);
gotoxy(1,7);
printf("Teclee el valor del voltaje: ");
gotoxy(52,7); scanf("%f", &V);
gotoxy(1,8);
printf("Teclee el valor del tiempo inicial: ");
gotoxy(52,8); scanf("%f", &Ti);
gotoxy(1,9);
printf("Teclee el valor del tiempo final: ");
gotoxy(52,9); scanf("%f", &Tf);
gotoxy(1,10);
printf("Teclee el valor del paso o incrementos del tiempo:");
gotoxy(52,10); scanf("%f", &H);
printf("Paso Tiempo T Corriente \n");
printf("-------------------------\n");
for (i=Ti; i<=Tf; i=i+H)
{
cont=cont+1;
cont1=cont1+1;
K1=k1(Iant);
K2=k2(K1);
Inva=Iant + (K1 + K2)/2;
j=i+.1;
printf("%d %f %f",cont,j,Inva);

23
Equipo “C” Apuntes Extraordinario 2SV1

if(cont1==10){
cont2=cont2+1;
printf(" \n\n%d segundos \n",cont2);
cont1=0;
}
else
{printf("\n");
}
Iant=Inva;
}
getch();
return 0;
}

24
Equipo “C” Apuntes Extraordinario 2SV1

Capturas de Código

25
Equipo “C” Apuntes Extraordinario 2SV1

26
Equipo “C” Apuntes Extraordinario 2SV1

Pantalla de Resultados

27
Equipo “C” Apuntes Extraordinario 2SV1

Método Runge-kutta de tercer orden

Este método utiliza la siguiente ecuación,

Solución numérica

y0=2.0;

cout <<"Runge-Kutta 3º orden (Richardson)" <<endl;

for(x=0.0; x<10; x=x+0.5)

28
Equipo “C” Apuntes Extraordinario 2SV1

yx=(4*exp(0.8*x))-(0.5*y0);

k1=h*yx;

k2=h*(4*exp(0.8*(x+h/2))-(0.5*(y0+k1/2)));

k3=h*(4*exp(0.8*(x+h))-(0.5*(y0-k1+(2*k2))));

y0=y0+(1.0/6)*(k1+4*k2+k3);

cout <<"\t \t" <<y0 <<endl;

cout <<endl;

Método de Runge-Kutta 4° Orden

Este es uno de los métodos más utilizados, ya que resuelve el problema de


valor inicial con un error del ordenO(h4).

(5.10)

donde

29
Equipo “C” Apuntes Extraordinario 2SV1

Método de pasos múltiples.

Llamamos método de pasos múltiples o método multipaso para resolver el


proble- ma de valor inicial (ver ecuaci´on 5.1) a un procedimiento de
integraci´on dado por

(5.11)

donde m > 1, h = (b − x0) y n = m − 1, m, . . . ,N − 1. Es un método de m pasos


siempre que a2 m−1 + b2m−1 > 0. Si c = 0 el método es explícito o abierto, en
caso contrario, el método es implícito o cerrado.
y0=2.0;

cout <<"Runge-Kutta 4º orden" <<endl;

for(x=0.0; x<10; x=x+0.5)

yx=(4*exp(0.8*x))-(0.5*y0);

k1=h*yx;

k2=h*(4*exp(0.8*(x+h/2))-(0.5*(y0+k1/2)));

k3=h*(4*exp(0.8*(x+h))-(0.5*(y0+k2/2)));

k4=h*(4*exp(0.8*(x+h))-(0.5*(y0+k3)));

y0=y0+((1.0/6)*(k1+(2*k2)+(2*k3)+k4));

cout <<"\t \t" <<y0 <<endl;

cout <<endl;

30
Equipo “C” Apuntes Extraordinario 2SV1

Métodos de Runge-Kutta de cuarto orden


Un miembro de la familia de los métodos Runge-Kutta usado ampliamente es el de
cuarto orden. Es usado tanto que a menudo es referenciado como «RK4» o como
«el método Runge-Kutta».
Definiendo un problema de valor inicial como:
Entonces el método RK4 para este problema está dado por la siguiente ecuación:
Donde
Así, el siguiente valor (yn+1) es determinado por el presente valor (yn) más el
producto del tamaño del intervalo (h) por una pendiente estimada. La pendiente es

un promedio ponderado de pendientes, donde es la pendiente al principio del

intervalo, es la pendiente en el punto medio del intervalo, usando para


determinar el valor de y en el punto usando el método Euler. Es otra vez la
pendiente del punto medio, pero ahora usando para determinar el valor de y; es la

pendiente al final del intervalo, con el valor de y determinado por . Promediando


las cuatro pendientes, se le asigna mayor peso a las pendientes en el punto medio:
Esta forma del método de Runge-Kutta, es un método de cuarto orden lo cual

significa que el error por paso es del orden de , mientras que el error total

acumulado tiene el orden . Por lo tanto, la convergencia del método es del orden

de , razón por la cual es usado en los métodos computacionales.


y0=2.0;

cout <<"Runge-Kutta 5º orden (Butcher's)" <<endl;

for(x=0.0; x<10; x=x+0.5)

yx=(4*exp(0.8*x))-(0.5*y0);

k1=yx;

k2=(4*exp(0.8*(x+(h/4.0))))-(0.5*(y0+((k1*h)/4.0)));

31
Equipo “C” Apuntes Extraordinario 2SV1

k3=(4*exp(0.8*(x+(h/4.0))))-(0.5*(y0+((k1*h)/8.0)+((k2*h)/8.0)));

k4=(4*exp(0.8*(x+(h/2.0))))-(0.5*(y0-((k2*h)/2.0)+(k3*h)));

k5=(4*exp(0.8*(x+(h*(3.0/4.0)))))-
(0.5*(y0+(k1*(h*(3.0/16.0)))+(k4*h*(9.0/16.0))));

k6=(4*exp(0.8*(x+h)))-(0.5*(y0-
(k1*h*(3.0/7.0))+(k2*h*(2.0/7.0))+(k3*h*(12.0/7.0))-
(k4*h*(12.0/7.0))+(k5*h*(8.0/7.0))));

y0=y0+((1.0/90.0)*h*((7*k1)+(32*k3)+(12*k4)+(32*k5)+(7*k6)));

// cout <<"\t \t" <<k6 <<endl;

cout <<"\t \t" <<y0 <<endl;

cout <<endl;

32

También podría gustarte