/********************************************/
/* Program Runge_Kutta_4_Orden */
/********************************************/
#include
#include
#include
float Ecuacion( float Xe, float Ye);
void Lee_datos(void);
float Xo, Xf;
float Xant, Yant;
float Ynue;
float Fx;
float h;
int N, i;
float K1,K2,K3,K4;
/* Programa Principal */
int main(void)
{
Lee_datos();
printf("\n===========================================================================");
printf("\n i Xi K1 K2 K3 K4 Fx Yi");
printf("\n===========================================================================");
Xant = Xo;
Yant = Fx;
i=0;
printf("\n%3d %10.4f %10.4f",i,Xant,Fx);
while (Xant < Xf )
{
K1 = Ecuacion(Xant,Yant);
K2 = Ecuacion(Xant+h/2,Yant+h*K1/2);
K3 = Ecuacion(Xant+h/2,Yant+h*K2/2);
K4 = Ecuacion(Xant+h,Yant+h*K3);
Fx = (K1 + 2*K2 + 2*K3 + K4)/6;
Ynue = Yant + h*Fx;
Xant = Xant + h;
Yant = Ynue;
i+=1;
printf("\n%3d%10.4f%10.4f%10.4f%10.4f%10.4f%10.4f%10.4f",i,Xant,K1,K2,K3,K4,Fx,Ynue);
}
printf("\n===========================================================================");
getche();
}
void Lee_datos(void)
{
clrscr();
printf("\n Dar el Valor inicial de Xo -> ");
scanf("%f",&Xo);
printf("\n Valor inicial para Fx(Xo) ->");
scanf("%f",&Fx);
printf("\n Dar el Valor Final de Xf -> ");
scanf("%f",&Xf);
printf("\n Tama¤o del incremento (h) ->");
scanf("%f",&h);
}
/* Calcula el valor de la Ecuacion Diferencial Ordinaria */
float Ecuacion( float Xe, float Ye)
/* Problema 9.12
Pag. 322
Metodos Numericos.
de Shoichiro Nakamura */
{
return 1/(300*900*0.001)*( 3000-(0.8*0.0000000567*(pow(Ye,4)-pow(298,4)))-30*0.25*(Ye-298));
/* return Xe*Xe;*/
}
               (
geocities.com/siliconvalley/pines/7894)                   (
geocities.com/siliconvalley/pines)                   (
geocities.com/siliconvalley)