Zdravím!
Pracujem na programe, ktorý vypočíta určitý integrál pomocou obdĺžnikovej metódy so vzťažným bodov v strede základne a obdĺžnikovej metódy so vzťažným bodom v pravom hornom rohu. Zatiaľ som robil len skúšobnú verziu s napevno zadanými hodnotami, no program sa mi nespustí. Chyba bude najskôr v cykle v hlavnej funkcii main. Vedel by ma prosím niekto opraviť? Vďaka
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
/*Deklaracie funkcii numerickej integracie*/
double rightpoint_rule (double from, double to, double n, double (*func)());
double midpoint_rule (double from, double to, double n, double (*func)());
/*Deklaracie matematickych funkcii*/
double f1(double x);
double f2(double x);
double f3(double x);
typedef double (*pfunc)(double, double, double, double (*)());
typedef double (*rfunc)(double);
/*Hlavna funkcia main*/
int main()
{
int i,j;
double ic;
pfunc f[] = { rightpoint_rule, midpoint_rule };
const char *names[] = { "Rightpoint", "Midpoint"};
rfunc rf[] = { f1, f2, f3, f3 };
int ivals[] = {
1, 50,
1, 100,
1, 5000,
1, 6000
};
int approx[] = { 100, 1000, 5000000, 6000000 };
for(j=0; j < (sizeof(rf) / sizeof(rfunc)); j++)
{
for(i=0; i < 3 ; i++)
{
ic = (*f[i])(ivals[2*j], ivals[2*j], approx[j], rf[j]);
printf("%10s num: %lf \n", names[i], ic);
}
printf("\n");
}
return 0;
}
/*Definicie funkcii numerickej integracie*/
double rightpoint_rule (double from, double to, double n, double (*func)())
{
double h = (to-from)/n;
double sum = 0.0, x;
for(x=from; x <= (to-h); x += h)
sum += func(x+h);
return h*sum;
}
double midpoint_rule (double from, double to, double n, double (*func)())
{
double h = (to-from)/n;
double sum = 0.0, x;
for(x=from; x <= (to-h); x += h)
sum += func((x+h)/2.0);
return h*sum;
}
/*Definicie matematickych funkcii*/
double f1(double x)
{
return x*x/3.0;
}
double f2(double x)
{
return x;
}
double f3(double x)
{
return 2.0*x;
}