Python: use Rectangle method, Trapezoid method, Simpson method to do integration numerically

 1 import numpy as np
 2 import matplotlib.pyplot as plt
 3 
 4 filename = 'Unradiated_CG_Steel.txt'
 5 f = np.genfromtxt(filename, delimiter=',')
 6 X = f[:,0]
 7 Y = f[:,1]
 8 
 9 plt.xlabel('Engineering Strain (%)', fontsize=24)
10 plt.ylabel('Engineering Stress (Mpa)', fontsize=24)
11 l = plt.plot(X,Y,'ro')
12 plt.savefig('Stress_strain_sample.png',fortmat='png',\
13             bbox_inches='tight', dpi=72)
1 # The rectangles method
2 def rectangle(X,Y,n):
3     d = X[1]-X[0]
4     val = 0
5     for i in range(n-1):
6         val += Y[i]
7     val *= d
8     return val
 1 # The trapezoid method
 2 def trapz(X,Y,n):
 3     d = X[1]-X[0]
 4     val_a = 0
 5     for i in range(n):
 6         if i == 0 or i == n-1:
 7             pass
 8         else:
 9             val_a += 2*Y[i]
10     return (d*0.5)*(Y[0]+Y[n-1]+val_a)
 1 # Simpson’s method
 2 def simps(X,Y,n):
 3     d = X[1]-X[0]
 4     val_a = 0
 5     val_b = 0
 6     for i in range(n):
 7         if i ==0 or i == n-1:
 8             pass
 9         else:
10             if i % 2 == 1:
11                 val_a += 4*Y[i]
12             else:
13                 val_b += 2*Y[i]
14     return (d/3)*(Y[0]+Y[n-1]+val_a+val_b)
1 R = rectangle(X,Y,7)
2 print('Rectangle: ',  R)
3 
4 T = trapz(X,Y,7)
5 print('Trapezoid: ', T)
6 
7 S = simps(X,Y,7)
8 print('Simpson: ', S)

 

posted @ 2020-10-20 07:13  cfdchen  阅读(133)  评论(0编辑  收藏  举报