复化Simpson公式

image.png

  1. def Simpson(func, n):
  2. x_array = np.linspace(0, np.pi/2, 7)
  3. item_0 = 1
  4. item_1 = 0
  5. for idx in range(1, n):
  6. print(f"now is cal the seconod item with k = {idx}")
  7. item_1 += func(x_array[idx])
  8. item_1 *= 2
  9. item_2 = 0
  10. for idx in range(0, n):
  11. real_x = (x_array[idx] + x_array[idx+1])/2
  12. print(f"now is cal the third item with k = {idx}")
  13. item_2 += func(real_x)
  14. item_2 *= 4
  15. item_3 = func(x_array[-1])
  16. S = (x_array[-1] - x_array[0])/(6*n) * (item_0 + item_1 + item_2 + item_3)
  17. return S