tampurus

Unit 4.4 All in one program for all three methods

Jun 8th, 2022 (edited)
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.84 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<math.h>
  3. #define f(x) sin(x) - log(x) + exp(x)
  4. int main(){
  5.     int n,i;
  6.     float x[15],sum_ex=0,a,b,h;
  7.    
  8.     float sum_mid=0,ans_tre; // trapezoildal
  9.    
  10.     float sum_even =0 , sum_odd = 0,ans_simp_13; // simpson 1/3
  11.    
  12.     float sum_3div = 0 , sum_3nondiv = 0,ans_simp_38; // simpson 3/8
  13.    
  14.     printf("Enter the value of lower and upper limit and h\n");
  15.     scanf("%f %f %f",&a,&b,&h);
  16.    
  17.     n = ceil(((b-a)/h));
  18.    
  19.     for(i=0 ; i<=n ; i++){
  20.         x[i] = a + (h*i);
  21.     }
  22.    
  23.     sum_ex = f(x[0]) + f(x[n]);
  24.    
  25.     // trapezoildal start here ---------------------------
  26.    
  27.     for(i=1 ; i<n ; i++){
  28.         sum_mid +=(f(x[i]));
  29.     }
  30.    
  31.     ans_tre = (h/2) * ( sum_ex + (2*sum_mid) ) ;  
  32.    
  33.     printf("ans trapezoildal %f\n",ans_tre);
  34.    
  35.     // trapezoildal end here ---------------------------
  36.    
  37.    
  38.     // simpson 1/3 start here ---------------------------
  39.    
  40.     for(i=1 ; i<n ; i++){
  41.         if(i%2 == 0)
  42.             sum_even += f(x[i]);
  43.         else
  44.             sum_odd += f(x[i]);
  45.     }
  46.    
  47.     ans_simp_13 = (h/3) * (sum_ex + (4*sum_odd) + (2*sum_even));
  48.    
  49.     printf("ans simpson 1/3 rd %f\n",ans_simp_13);
  50.     // simpson 1/3 end here ---------------------------
  51.    
  52.    
  53.     // simpson 3/8 start here ---------------------------
  54.    
  55.     for(i=1 ; i<n ; i++){
  56.         if(i%3 == 0)
  57.             sum_3div += f(x[i]);
  58.         else
  59.             sum_3nondiv += f(x[i]);
  60.     }
  61.     ans_simp_38 = (3*h)/8 * (sum_ex + (3*sum_3nondiv) + (2*sum_3div));
  62.    
  63.     printf("ans simpson 3/8 rd %f\n",ans_simp_38);
  64.     // simpson 3/8 end here ---------------------------
  65.    
  66.      return 0;
  67. }
  68.  
  69. /*
  70. Output
  71. Enter the value of lower and upper limit and h
  72. 0.2 1.4 0.1
  73. ans trapezoildal 4.056173
  74. ans simpson 1/3 rd 4.051058
  75. ans simpson 3/8 rd 4.051161
  76. */
Add Comment
Please, Sign In to add comment