Exemple #1
0
double integrate(Function f)
{
  size_t numSegments = 16;
  double coeff = 16.0;
  return (coeff * simpsonsRule(f, a, b, numSegments) -
                  simpsonsRule(f, a, b, numSegments / 2)) / (coeff - 1.0);
}
Exemple #2
0
void testIntegration(){
 
 long int r;
 r=1867;
 
 printf("\nIntergration\n");
 Integration(funcTest,simpsonsRule,0.0,1.0);
 Integration(funcTest,trapizoidalRule,0.0,1.0);
 printf("monteCarloIntegration1D: %f\n",monteCarloIntegration1D(funcTest,0.0,1.0,1e7));
 printf("simpsonsRule: %f\n",simpsonsRule(funcTest,0.0,1.0,100));
 printf("random01:%f\n",random01());
 printf("random01Self: %f\n",random01Self(&r));
 printf("trapizoidalRule2D: %f\n",trapizoidalRule2D(funcTest5, 0, 1, 0, 1, 10,10)); 
 printf("trapizoidalRule2D: %f\n",trapizoidalRule2D(funcTest6, 1, 2, 3, 5, 40,40));
 
} 
int main(int argc, char *argv[])
{
    int polinomUzunlugu;
    polinomUzunlugu = polinomUzunluguBulma(argv[1]);

    char polinom[polinomUzunlugu];
    for(int sayici = 0; sayici <= polinomUzunlugu; sayici++) //polinomu yeni bir polinoma kopyalar
    {
        polinom[sayici] = argv[1][sayici];
    }
    char tempSabit[1]; //sabiti bir degiskende depolar
    tempSabit[0] = polinom[15];
    int sabit;
    sabit = atoi(tempSabit);

    char katsayi[4],derece[4];
    int i=0,j=0;

    while(i < (polinomUzunlugu-1)) //parse islemi yapar
    {
        if(polinom[i] == 'x' && polinom[i+1] == '^')
        {
            katsayi[j] = polinom[i-1];
            derece[j] = polinom[i+2];
            j++;
        }
        i++;
    }
    int tempKatsayi,tempDerece;
    tempKatsayi = atoi(katsayi);
    tempDerece  = atoi(derece);

    int katsayiDegeri[4],dereceDegeri[4]; //katsayi ve derece degerlerinin degiskenlerde depolar
    for(int k=0; k<4; k++)
    {
        katsayiDegeri[k] = tempKatsayi%10;
        dereceDegeri[k]  = tempDerece%10;
        tempKatsayi     /= 10;
        tempDerece      /= 10;
    }
    int ustDeger,yontemSecimi,nDegeri;
    float altDeger,hDegeri;

    altDeger     = atoi(argv[2]);
    ustDeger     = atoi(argv[3]);
    nDegeri      = atoi(argv[4]);
    yontemSecimi = atoi(argv[5]);
    hDegeri      = (ustDeger-altDeger);
    hDegeri     /= nDegeri;

    print(polinomUzunlugu,polinom,katsayiDegeri,altDeger,ustDeger,hDegeri,sabit,nDegeri);

    float sonuc;

    switch(yontemSecimi)
    {
    case 1:
        {
            printf("---Rectangle Rule Yontemi Ile Hesaplama Yapiliyor---\n\n");
            sonuc = rectangleRule(katsayiDegeri,dereceDegeri,altDeger,ustDeger,hDegeri,sabit);
            printf("Sonuc: %.2f\n",sonuc);
        }
        break;
    case 2:
        {
            printf("---Midpoint Rule Yontemi Ile Hesaplama Yapiliyor---\n\n");
            sonuc = midpointRule(katsayiDegeri,dereceDegeri,altDeger,ustDeger,hDegeri,sabit);
            printf("Sonuc: %.2f\n",sonuc);
        }
        break;
    case 3:
        {
            printf("---Trapezoid Rule Yontemi Ile Hesaplama Yapiliyor---\n\n");
            sonuc = trapezoidRule(katsayiDegeri,dereceDegeri,altDeger,ustDeger,hDegeri,sabit);
            printf("Sonuc: %.2f",sonuc);
        }
        break;
    case 4:
        {
            printf("---Simpsons Rule Yontemi Ile Hesaplama Yapiliyor---\n\n");
            sonuc = simpsonsRule(katsayiDegeri,dereceDegeri,altDeger,ustDeger,hDegeri,sabit,nDegeri);
            printf("Sonuc: %.2f",sonuc);
        }
        break;
    default:
        printf("Boyle Bir Secim Yok!");
    }
    return 0;
}