Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- double x0,x1,total=0,h,a,b,n,luas,luasasli,total_luas,error,sigma1=0,sigma2=0;
- int i=0, pilih;
- char ulang='y';
- double fx();
- double feksak();
- void input();
- void Trapezoid();
- void Reimann();
- void SimpsonSepertiga();
- void SimpsonTigaperDelapan();
- main()
- {
- printf("\n========================================\n");
- printf("\tINTEGRASI NUMERIK\nMirra Ariesta | 1 D3 IT - B | 2103131055");
- printf("\n========================================\n");
- input();
- do{
- i=0;
- total=0;
- printf("\nIntegrasi Numerik Menu :\n1. Reimann\n2. Trapezoid\n3. Simpson1/3\n4. Simpson 3/8\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;
- 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 atas : ");
- scanf("%lg",&b);
- printf("Masukkan nilai bawah : ");
- scanf("%lg",&a);
- printf("Masukkan nilai N : ");
- scanf("%lg",&n);
- h=(b-a)/n;
- }
- double fx(double x){
- return pow(x,3) + 2 * pow(x,2);
- }
- double feksak(double x){
- return pow(x,4)/4 + 2*x * pow(x,3)/3;
- }
- void Reimann(){
- total=0;
- x0=a;
- x1=a+h;
- 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(){
- total=0;
- x0=a;
- x1=a+h;
- 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()
- {
- printf("\nTabel Integrasi Numerik Simpson 1/3 :");
- printf("\n===========================\n");
- printf("| %c | %s | %s |\n",'i',"x","f(x)");
- printf("===========================\n");
- x0=a;
- for(i=0;i<n;i++){
- printf("|%3d |%-8lg |%-10lg|\n", i++, x0, fx(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");
- 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);
- puts("");
- puts("===================================================");
- }
- void SimpsonTigaperDelapan()
- {
- printf("\nTabel Integrasi Numerik Simpson 3/8 :");
- printf("\n===========================\n");
- printf("| %c | %s | %s |\n",'i',"x","f(x)");
- printf("===========================\n");
- x0=a;
- for(i=0;i<n;i++){
- printf("|%3d |%-8lg |%-10lg|\n", i, x0, fx(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");
- total_luas=((fx(a)+sigma1+sigma2+fx(b))*(3*h))/8;
- puts("");
- printf("Luas dengan Metode Simpson 3/8= %g\n", total_luas);
- puts("");
- puts("===================================================");
- }
Advertisement
Add Comment
Please, Sign In to add comment