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); }
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; }