Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- import numpy as np
- def A(x):
- return ((2019*x**5)-(2018*x**4)+(2017*x**3))
- def B(x):
- return (1/(1+25*x**2))
- def C(x):
- return (math.sin((9*x)+1)/x)
- def Romberg(f,a,b,n):
- sum=0
- h = b - a
- R = np.zeros((n+1 , n+1 ))
- R[0][0] = 0.5 * h * (f(a) + f(b))
- for i in range(1,n+1):
- h *= 0.5
- sum = 0
- for k in range(1,2**i,2):
- sum += f(a + k * h)
- R[i][0] = 0.5 * R[i-1][0] + sum * h
- for j in range(1,i+1):
- R[i][j] = R[i][j-1] + (R[i][j-1] - R[i-1][j-1]) / ((4**j)-1)
- return R
- def prettyprint(R):
- float_formatter = lambda x: "%.6f" % x
- np.set_printoptions(formatter={'float_kind':float_formatter})
- for i, row in enumerate(R):
- print("%3d" % (i + 1), row[:i + 1])
- print("Wynik to %.18f\n" % R[-1][-1])
- n = 15
- prettyprint(Romberg(A, -1.0, 2.0, 15))
- prettyprint(Romberg(B, -1.0, 1.0, 15))
- prettyprint(Romberg(C, 1, 2 * math.pi, 15))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement