luizaspan icon

RK4 Method (new)

luizaspan | PRO | 11/12/15 12:07:48 AM UTC | 0 ⭐ | 840 👁️ | Never ⏰ | []
C |

780 B

|

None

|

0 👍

/

0 👎

#include <stdio.h>
#include <math.h>
 
#define h 0.1
 
#define x0 1
#define y0 2
 
#define N 50
 
double f(double x, double y) // dy/dx = f(x,y)
{
    return 3*x*x*y; // função a ser resolvida
}
 
double T4(double x, double y)
{
    double K1 = f(x,y);
    double K2 = f(x+h/2.,y+(h/2.)*K1);
    double K3 = f(x+h/2.,y+(h/2.)*K2);
    double K4 = f(x+h,y+h*K3);
 
    return (1./6)*(K1 + 2.*K2 + 2.*K3 + K4);
}
 
int main(void)
{
    int i;
    double x, y, yn=0.;
 
    x=x0;
    y=y0;
 
    for (i=0; i<N; i++)
    {
        // K1 = f(x,y);
        // K2 = f(x+h/2,y+(h/2)*K1);
        // K3 = f(x+h/2,y+(h/2)*K2);
        // K4 = f(x+h,y+h*K3);
 
        // yn = y + (h/6)*(K1 + 2*K2 + 2*K3 + K4);
 
        yn = y + h*T4(x,y);
 
        x+=h;
 
        printf("%f\t%f\n",x,yn);
 
        // printf("%lf\t%lf\t%lf\n",i,yn,x);
    }
 
    return 0;
}

Comments