Skip to content

Commit 65e001f

Browse files
committed
simpson
1 parent 8753fd3 commit 65e001f

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed
+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
from simpson_1_3 import simpson_1_3
2+
def simpson_3_8(f, n):
3+
def simpson_(f, n, a, b):
4+
h = (b - a)/n
5+
s = 0
6+
i = 0
7+
xData = []
8+
for k in range(n + 1):
9+
xData.append(a + k * h)
10+
if n % 3:
11+
s += simpson_1_3(f, n)(xData[0], xData[1])
12+
i = n % 3
13+
while i < n - 2 :
14+
add = (3*h/8) * (f(xData[i]) + 3 * f(xData[i+1]) + 3*f(xData[i+2]) + f(xData[i+3]))
15+
s += add
16+
i += 3
17+
return s
18+
return lambda a, b: simpson_(f, n, a, b)
19+
20+
21+
if __name__ == "__main__":
22+
def f(x): return 1
23+
F = simpson_3_8(f, 200000)
24+
print(F(0, 2))
25+
def g(x): return x
26+
G = simpson_3_8(g, 2000)
27+
print(G(0, 3))
+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
#simpson 1/3 - Felix
2+
from trapezoid import trapezoid
3+
def simpson_1_3(f, n):
4+
def simpson_(f, n, a, b):
5+
h = (b - a)/n
6+
s = 0
7+
i = 0
8+
xData = []
9+
for k in range(n + 1):
10+
xData.append(a + k * h)
11+
if n % 2:
12+
s += trapezoid(f, n)(xData[0], xData[1])
13+
i = 1
14+
while i < n - 1:
15+
add = (h/3) * (f(xData[i]) + 4 * f(xData[i+1]) + f(xData[i+2]))
16+
s += add
17+
i += 2
18+
return s
19+
return lambda a, b: simpson_(f, n, a, b)
20+
21+
22+
if __name__ == "__main__":
23+
# def f(x): return 1
24+
# F = simpson_1_3(f, 100)
25+
# print(F(0, 2))
26+
def g(x): return x
27+
G = simpson_1_3(g, 101)
28+
print(G(0, 1.5))
29+
print(G(1.5, 3))

0 commit comments

Comments
 (0)