Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- import plotly.figure_factory as ff
- def pryam(f, a, b, n):
- h = (b - a) / n
- return h * sum([f(a + i * h) for i in range(0, n)]) + 0.01 * (b-a)
- def simpson_rule(func, a, b, nseg):
- if nseg%2 == 1:
- nseg += 1
- dx = 1.0 * (b - a) / nseg
- sum = (func(a) + 4 * func(a + dx) + func(b))
- for i in range(1, int(nseg / 2)):
- sum += 2 * func(a + (2 * i) * dx) + 4 * func(a + (2 * i + 1) * dx)
- return sum * dx / 3 + 0.01 * (b-a)
- def f(x):
- return math.cos(x) / (x + 2)
- def realint():
- return 0.1989882210658063
- a, b = 0.4, 1.2
- eps = 10 ** -8
- print("Эпсилон: ", eps)
- print("Метод прямоугольников")
- data = []
- data.append(['N', 'eps', 'P'])
- n = 2
- r1 = pryam(f, a, b, n)
- data.append([n, abs(realint()-r1), ""])
- n *= 2
- r2 = pryam(f, a, b, n)
- data.append([n, abs(realint()-r2), math.log(abs(realint()-r2)/abs(realint()-r1), 2)])
- while (n < 1000000):
- n *= 2
- r1 = pryam(f, a, b, n)
- data.append([n, abs(realint()-r1), math.log(abs(realint()-r1)/abs(realint()-r2), 2)])
- n *= 2
- r2 = pryam(f, a, b, n)
- data.append([n, abs(realint()-r2), math.log(abs(realint()-r2)/abs(realint()-r1), 2)])
- fig = ff.create_table(data)
- fig.show()
- print("n = ", n)
- print("Результат: ", r2)
- print("---------------------------")
- print("Метод симпсона")
- data = []
- data.append(['N', 'eps', 'P'])
- n = 4
- r1 = simpson_rule(f, a, b, n)
- data.append([n, abs(realint()-r1), ""])
- n *= 2
- r2 = simpson_rule(f, a, b, n)
- data.append([n, abs(realint()-r2), math.log(abs(realint()-r2)/abs(realint()-r1), 2)])
- while (n<100000):
- n *= 2
- r1 = simpson_rule(f, a, b, n)
- data.append([n, abs(realint()-r1), math.log(abs(realint()-r1)/abs(realint()-r2), 2)])
- n *= 2
- r2 = simpson_rule(f, a, b, n)
- data.append([n, abs(realint()-r2), math.log(abs(realint()-r2)/abs(realint()-r1), 2)])
- fig = ff.create_table(data)
- fig.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement