laborki cwiczenia 20 05 09


#include
#include
#define MAXN 2


void rzut(double t,double y[],double f[]);
void vrk4( double x0, double y0[], double h, int n, void (*fun)(double, double*, double*), double y1[] );

double g,m,c,v0;

void main()
{double t,v,dt,tk,y[2],y1[2];
printf("podaj dt i tk\n");
scanf("%lf%lf",&dt,&tk);
g=9.81;m=2.;c=.003;v0=30.;
//wp
t=.0;
y[0]=.0;
y[1]=v0;
//całkujemy
while(t<=tk)
{
vrk4(t,y,dt,2,rzut,y1);
t=t+dt;
printf("t=%lf v=%lf\n",t,y1[1]);
y[0]=y1[0];
y[1]=y1[1];
}
}
void rzut(double t,double y[],double f[])
{
f[0]=y[1];
f[1]=-g-c/my[1]*y[1];
}

void vrk4( double x0, double y0[], double h, int n, void (*fun)(double, double*, double*), double y1[] )
{
int i;
double k1[MAXN], k2[MAXN], k3[MAXN], k4[MAXN];
double ytmp[MAXN];

fun( x0, y0, k1);
for ( i=0; i {
k1[i] *= h;
ytmp[i] = y0[i] + k1[i]/2.0;
}

fun( x0+h/2.0, ytmp, k2);
for ( i=0; i {
k2[i] *= h;
ytmp[i] = y0[i] + k2[i]/2.0;
}

fun( x0+h/2.0, ytmp, k3);
for ( i=0; i {
k3[i] *= h;
ytmp[i] = y0[i] + k3[i];
}

fun( x0+h, ytmp, k4);
for ( i=0; i k4[i] *= h;

for ( i=0; i y1[i] = y0[i] + (k1[i] + 2.*k2[i] + 2.*k3[i] + k4[i])/6.;

}



Wyszukiwarka

Podobne podstrony:
laborki cwiczenia  05 09
laborki cwiczenia  03 09
laborki cwiczenia  03 09
laborki cwiczenia 04 09
laborki cwiczenia  04 09
laborki cwiczenia 05 09wersja2
cwiczenia 05
CWICZENIE 05 12
Cwiczenia 05 03 2011
05 09
Laboratorium elektrotechniki Ćwiczenie 05
Sonnax multiple applications 05 09
05 09 2012 INTERNA(1)
TI 02 05 09 B pl(1)

więcej podobnych podstron