Metodo de Euler-Heun
Metodo de Euler-Heun
Metodo de Euler-Heun
INTRODUCCIÓN
̅ = 𝑦′𝑖 + 𝑦′𝑖+1
𝑦′
2
Está pendiente promedio se utiliza para extrapolar linealmente desde 𝑦𝑖 hasta 𝑦𝑖+1 usando el
método de Euler.
𝑓(𝑥𝑖 , 𝑦𝑖 ) + 𝑓(𝑥𝑖+1 , 𝑦𝑖+1 )
𝑦𝑖+1 = 𝑦𝑖 + ℎ
2
Esta ecuación es conocida como ecuación correctora. El método de Heun es un
procedimiento predictor – corrector.
Se puede conseguir una mejor precisión en el resultado si hacemos varios procesos
0
correctores, esto lo logramos tomando 𝑦𝑖+1 y reemplazándolo por 𝑦𝑖+1 en la ecuación y así
encontrar un nuevo 𝑦𝑖+1 , y se repite el proceso hasta donde se desee.
METODOLOGÍA
2.- Probar su programa con el siguiente ejemplo usando como datos de entrada xi=0,
xf=4, yi=1 y h=0.5 y mostrar pantalla de salida con los resultados.
dy/dx=-2x3 +12x2-20x+8.5
3.- Observaciones
Observando nuestra grafica percibimos que los valores iníciales no coincidían con la tabla
mostrada en las dispositivas de la unidad, más al leer y analizar bien la información dicha tabla
era del método de Euler y la que se muestra en este programa es el método de Euler-Heun en
cual es una mejora del programa anterior, ya que promediando ambas derivadas se obtiene
una mejor estimación de la pendiente en el intervalo.
4.- Conclusiones
Con este trabajo comprendimos como aplicar el lenguaje c para la solución de ecuaciones
diferenciales, no es fácil programarlo, pero se tienen las herramientas para investigar y poder
desarrollar programas para facilitar la solución de dichos problemas.
void Euler(){
float xi,yi,xf,yf,h;
char n;
int i;
system("cls");
void terminar()
{cout<<"\t\t\t\tPROGRAMA FINALIZADO\n";
cout<<"GRACIAS POR USAR EL PROGRAMA"<<endl<<endl;
}
int menu()
{int opc;
do
{
cout<<setw(50)<<"METODO DE EULER - HEUN\n\n";
printf("L \n");
printf("F \n");
printf("A \n\n");
cout<<setw(50)<<"INGRESE LA OPCION A REALIZAR\n\n";
cout<<"1. METODO DE EULER - HEUN"<<endl;
cout<<"2. FINALIZAR"<<endl;
cout<<"\nSELECCIONAR OPCION: ";cin>>opc;
}while(opc<1 || opc>2);
return opc;
int main ()
{int opc;
do
{
system("cls");
opc=menu();
system("cls");
switch(opc)
{
case 1: system("cls");Euler(); break;
case 2: system("cls");terminar(); break;
}
getch();
}
while(opc!=2);
getch();
}