Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- double h,a,b,n;
- int pilih;
- char ulang='y';
- double fx();
- double feksak();
- double gu();
- void input();
- void Trapezoid();
- void Reimann();
- void SimpsonSepertiga();
- void SimpsonTigaperDelapan();
- void kuadratur2titik(double atas,double bawah);
- void kuadratur3titik(double atas,double bawah);
- main()
- {
- printf("\n===================================\n");
- printf("\tINTEGRASI NUMERIK MENU\n By Raizal Islami Nursyah Pregnanta");
- printf("\n===================================\n");
- input();
- do{
- printf("\nIntegrasi Numerik Menu :\n1. Reimann\n2. Trapezoid\n3. Simpson 1/3\n4. Simpson 3/8\n5. Kuadratur Gauss 2 Titik\n6. Kuadratur Gauss 3 Titik\n");
- printf("Pilihan Menu : ");
- scanf("%d", &pilih);
- switch(pilih){
- case 1 : Reimann(); break;
- case 2 : Trapezoid();break;
- case 3 : SimpsonSepertiga();break;
- case 4 : SimpsonTigaperDelapan();break;
- case 5 : kuadratur2titik(a,b);break;
- case 6 : kuadratur3titik(a,b);break;
- default : printf("\nPilihan Tidak Ada!\n");
- }
- fflush(stdin);
- printf("\nApakah Ingin Mengulang?");
- scanf("%c",&ulang);
- }while(ulang=='y'||ulang=='Y');
- }
- void input(){
- printf("Masukkan nilai bawah : ");
- scanf("%lg",&a);
- printf("Masukkan nilai atas : ");
- scanf("%lg",&b);
- printf("Masukkan nilai N : ");
- scanf("%lg",&n);
- h=(b-a)/n;
- }
- double fx(double x){
- return x*x;
- }
- double feksak(double x){
- return pow(x,3)/3;
- }
- double gu(double u){
- return ( ((b-a)/2) * fx( ( ( (b-a)/2)*u) + ( (b+a)/2) ) );
- }
- void Reimann(){
- double total=0;
- double x0=a;
- double x1=a+h;
- double luasasli , luas , error;
- int i;
- printf("\nTabel Integrasi Numerik Reimann :");
- printf("\n=======================================================\n");
- printf("| %c | %s | %s | %s | %s |\n",'i',"x0","x1","Luas","f'eksak(x)");
- printf("=======================================================\n");
- for(i=1;i<=n;i++){
- luasasli=feksak(x1);
- luas=(x1-x0)*fx(x1);
- error=fabs(luasasli-luas);
- total+=luas;
- printf("|%3d |%-10lg |%-10lg |%-10lg|%-12lg |\n",i,x0,x1,luas,luasasli);
- x0=x1;
- x1=x1+h;
- }
- printf("=======================================================\n\n");
- printf("luas : %-10lg\n",total);
- printf("Eksak : %-10.3lg\n", luasasli);
- printf("=============== -\n");//error adalah pengurangan luas dengan eksak
- printf("Error : %-10.3lg\n", total-luasasli);
- }
- void Trapezoid(){
- double total=0;
- double x0=a;
- double x1=a+h;
- double luasasli , luas , total_luas , error;
- int i;
- printf("\nTabel Integrasi Numerik Trapezoid :");
- printf("\n=======================================================\n");
- printf("| %c | %s | %s | %s | %s |\n",'i',"x0","x1","Luas","f'eksak(x)");
- printf("=======================================================\n");
- for(i=1;i<=n;i++){
- luasasli=feksak(x1);
- luas=fx(x0)+fx(x1);
- total=total+luas;
- printf("|%3d |%-10lg |%-10lg |%-10lg|%-12lg |\n",i,x0,x1,luas,luasasli);
- x0=x1;
- x1=x1+h;
- }
- printf("=======================================================\n\n");
- total_luas=(total*h)/2;
- printf("Luas : %-10lg\n",total_luas);
- printf("Eksak : %-10.3lg\n", luasasli);
- printf("=============== -\n");//error adalah pengurangan luas dengan eksak
- printf("Error : %-10.3lg\n", total_luas-luasasli);
- }
- void SimpsonSepertiga()
- {
- double total=0;
- double x0=a;
- double x1=a+h ,sigma1=0,sigma2=0;
- double luasasli , luas , total_luas , error;
- int i;
- printf("\nTabel Integrasi Numerik Simpson 1/3 :");
- printf("\n=========================================\n");
- printf("| %c | %s | %s | %s |\n",'i',"x","f(x)","f'eksak(x)");
- printf("=========================================\n");
- x0=a;
- for(i=0;i<n;i++){
- printf("|%3d |%-8lg |%-10lg|%-13lg|\n", i, x0, fx(x0), feksak(x0));
- if(i%2==0){
- sigma2+=2*fx(x0);//untuk fungsi genap
- }
- else{
- sigma1+=4*fx(x0);//untuk fungsi ganjil
- }
- x0=x0+h;
- }
- printf("=========================================\n");
- luasasli = feksak(b) - feksak(a);
- total_luas=((fx(a)+sigma1+sigma2+fx(b))*h)/3;
- error=fabs(total_luas-luasasli);
- puts("");
- printf("Luas dengan Metode Simpson 1/3= %lf\n", total_luas);
- printf("Luasan eksak = %lf\n", luasasli);
- printf("Error = %.1lf\n", error);
- puts("");
- puts("===================================================");
- }
- void SimpsonTigaperDelapan()
- {
- double total=0;
- double x0=a;
- double x1=a+h ,sigma1=0,sigma2=0;
- double luasasli , luas , total_luas , error;
- int i;
- printf("\nTabel Integrasi Numerik Simpson 3/8 :");
- printf("\n=========================================\n");
- printf("| %c | %s | %s | %s |\n",'i',"x","f(x)","f'eksak(x)");
- printf("=========================================\n");
- x0=a;
- for(i=0;i<n;i++){
- printf("|%3d |%-8lg |%-10lg|%-13lg|\n", i, x0, fx(x0), feksak(x0));
- if(i%3==0){
- sigma2+=2*fx(x0);//untuk fungsi genap
- }
- else{
- sigma1+=3*fx(x0);//untuk fungsi ganjil
- }
- x0=x0+h;
- }
- printf("=========================================\n");
- luasasli = feksak(b) - feksak(a);
- total_luas=((fx(a)+sigma1+sigma2+fx(b))*(3*h))/8;
- error=fabs(total_luas-luasasli);
- puts("");
- printf("Luas dengan Metode Simpson 3/8= %g\n", total_luas);
- printf("Luasan eksak = %g\n", luasasli);
- printf("Error = %g\n", error);
- puts("");
- puts("===================================================");
- }
- void kuadratur2titik(double atas,double bawah)
- {
- double a = bawah, b = atas;
- double luasasli,total,error;
- puts("========================================");
- puts("METODE INTEGRAL KUADRATUR GAUSS 2 TITIK");
- puts("========================================");
- total = gu((-(0.577350269))) + gu((0.577350269)) ;//rumus luas kuadratur gauss 2 titik
- printf("\n");
- puts("===================================================");
- luasasli = feksak(b) - feksak(a);
- error = fabs( fabs(total) - fabs(luasasli) );
- puts("");
- printf("Luas dengan Metode Integrasi Gauss 2 Titik = %lf\n", total);
- printf("Luasan eksak = %lf\n", luasasli);
- printf("Error = %lg\n", error);
- puts("");
- puts("===================================================");
- }
- void kuadratur3titik(double atas,double bawah)
- {
- double a = bawah, b = atas;
- double luasasli,total,error;
- puts("========================================");
- puts("METODE INTEGRAL KUADRATUR GAUSS 3 TITIK");
- puts("========================================");
- total = (0.8888*gu(0))+(0.5555*gu(-(sqrt(0.6))))+(0.5555*gu(sqrt(0.6)));
- printf("\n");
- puts("===================================================");
- luasasli = feksak(b) - feksak(a);
- error = fabs( fabs(total) - fabs(luasasli) );
- puts("");
- printf("Luas dengan Metode Integrasi Gauss 3 Titik = %lf\n", total);
- printf("Luasan eksak = %lf\n", luasasli);
- printf("Error = %lg\n", error);
- puts("");
- puts("===================================================");
- }
Advertisement
Add Comment
Please, Sign In to add comment