laborki cwiczenia 18 03 09


#include
#include

float trapez( float a, float b, float(* function) (float x) , int n );
float test(float x);
float simpson( float a, float b, float (* function) (float x) , int n );

void main()
{

float ca, ct, cs, a, b, blad1, blad2;
int i, m, n;
FILE *plik=fopen("wynik.xls","w");

printf("podaj a i b\n");
scanf("%f%f",&a,&b);
printf("podaj m\n");
scanf("%d",&m);
ca=log(b)-log(a);
n=1;
for(i=1;i<=m;i++)
{n=n*2;
ct=trapez(a,b,test,n);
cs=simpson(a,b,test,n);
blad1 = fabs(ca-ct);
blad2 = fabs(ca-cs);
printf("ca=%f ct=%f blad1=%f \n",ca,ct,blad1);
fprintf(plik,"%d %f %f \n",n,blad1,blad2);
}
}

float trapez( float a, float b, float(* function) (float x) , int n )
{
float value;
/* Calkowanie metoda trapezow */
float h, x, sum;
int i;

h = (b - a) / (float) n; // krok calkowania

sum = 0.0;
for( i=1; i x = a + i * h;
sum += function(x);
}

value = ( function(a) + 2.0*sum + function(b) ) * h / 2.0;

return value;
}

float test(float x)
{
float fx;
fx=1./x;
return fx;
}

float simpson( float a, float b, float (* function) (float x) , int n )
{
float value;
/* Calkowanie metoda Simpsona */
float h, x, sum;
int i;
int nc; // oznaczenie dla liczby wezlow wewnetrznych

nc = abs( n / 2 ) * 2;
h = (b - a) / (float) nc; // krok calkowania

sum = 0.0;
for( i=1; i x = a + (float) i * h;
sum += 4.0*function(x) + 2.0*function(x+h);
}

value = ( function(a) + sum + 4.0*function(b-h) + function(b) ) * h / 3.0;

return value;
}

Wyszukiwarka

Podobne podstrony:
laborki cwiczenia  03 09
laborki cwiczenia  05 09
laborki cwiczenia 04 09
laborki cwiczenia  04 09
laborki cwiczenia 05 09
Środowa Audiencja Generalna Radio Maryja, 2011 03 09
TI 03 09 29 T B M pl
Cwiczenie 03
WSM 03 09 pl(2)
TI 03 09 25 T pl
Ćwiczenie 03
Strach być emerytem Nasz Dziennik, 2011 03 09

więcej podobnych podstron