laborki cwiczenia 20 05 09wersja2


#include
#include
double g,m,c,a0,l,pi=3.14;
#define MAXN 10
void rzut(double t,double y[],double f[])
{
f[0]=y[1];
f[1]=-g/l*sin(y[0]);
}
void vrk4( double x0, double y0[], double h, int n, void (*fun)(double, double*, double*), double y1[] );


void main()
{double t,v,dt,tk;
g=9.81;m=2.;c=.003;a0=pi/18.;l=2.;
double y[2],y1[2];


printf("podaj dt i tk\n");
scanf("%lf%lf",&dt,&tk);
//wp
t=.0;
y[0]=a0;
y[1]=.0;
//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 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 05 09
laborki cwiczenia  03 09
cwiczenia 05
CWICZENIE 05 12
Cwiczenia 05 03 2011
Laboratorium elektrotechniki Ćwiczenie 05
laborki cwiczenia  03 09
laborki cwiczenia 04 09
laborki cwiczenia  04 09
Cwiczenie 05
STOMATOLOGIA DZIECIĘCA, ĆWICZENIE 9, 10 05 2013
05 cwiczenie 5
Sprawozdanie ćwiczenie 3 laborki bbgg
0110 04 05 2009, cwiczenia nr 10 , Tkanka łączna właściwa Paul Esz

więcej podobnych podstron