In [1]:
%pylab inline


Populating the interactive namespace from numpy and matplotlib

In [52]:
x = arange(0, 2*pi, 0.1)

In [30]:
x = linspace(0, 2*pi, 101)

In [31]:
y = sin(x)

In [37]:
plot(x, sin(x), "g")
plot(x, cos(x), "r")
plot(x, x**2/20)


Out[37]:
[<matplotlib.lines.Line2D at 0x6ea2d50>]

In [39]:
plot(cos(x), sin(x))


Out[39]:
[<matplotlib.lines.Line2D at 0x7079350>]

In [45]:
[10,2,3,4]


Out[45]:
[10, 2, 3, 4]

In [46]:
[x**2 for x in range(1, 11)]


Out[46]:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

In [54]:
from random import random
x = arange(0, 2*pi, 0.1)
a=[2*random()-1 for i in range(100)]
b=[2*random()-1 for i in range(100)]
plot(a,b, "x")
plot(cos(x), sin(x), "r")


Out[54]:
[<matplotlib.lines.Line2D at 0x76d0d90>]

In [76]:
s =0
N = 1000000
for i in range(N):
    a, b = random(), random()
    if a**2 + b**2 <=1:
        s += 1
print s*4./N


3.1416

In [81]:
def error(N):
    s =0    
    for i in range(N):
        a, b = random(), random()
        if a**2 + b**2 <=1:
            s += 1
    return abs(s*4./N - pi)

In [92]:
def avg_error(N):
    s = 0
    for i in range(1000):
        s+=error(N)
    return s/100.

In [93]:
plot([1/avg_error(N)**2 for N in range(10, 1000, 10)])


Out[93]:
[<matplotlib.lines.Line2D at 0x122d8110>]

In [95]:
x = linspace(0, pi, 101)
plot(x, sin(x))


Out[95]:
[<matplotlib.lines.Line2D at 0xf3647f0>]

In [121]:
x = linspace(0, pi, 100001)
delta_x = x[1]-x[0]
print sin(x[1:]).sum()*delta_x


1.99999999984

In [122]:
x = linspace(0, pi, 100001)
delta_x = x[1]-x[0]
s = sin(x).sum()
s -= (sin(x[0]) + sin(x[-1]))/2
print s*delta_x


1.99999999984

In [125]:
x = linspace(0, 1, 1001)
plot(x, x**2)
delta_x = x[1]-x[0]
s = (x[1:]**2).sum()
print s*delta_x
s = (x[:-1]**2).sum()
print s*delta_x


0.3338335
0.3328335

In [124]:
x = linspace(0, 1, 1001)
plot(x, x**2)
delta_x = x[1]-x[0]
s = (x**2).sum()
s -= ((x[0]**2) + (x[-1]**2))/2
print s*delta_x


0.3333335

In [127]:
x = linspace(0, 1, 101)
plot(x, x**2)
delta_x = x[1]-x[0]
s = 4*(x**2)[1:-1:2].sum()
s += 2*(x**2)[2:-1:2].sum()
s += x[0]**2 + x[-1]**2
print s/3*delta_x


0.333333333333

In [130]:
x = linspace(0, pi, 10001)
plot(x, sin(x))
delta_x = x[1]-x[0]
s = 4*(sin(x))[1:-1:2].sum()
s += 2*(sin(x))[2:-1:2].sum()
s += sin(x[0]) + sin(x[-1])
print s/3*delta_x


2.0

In [106]:
s =0
N = 100000
for i in range(N):
    a, b = random()*pi, random()
    if b <= sin(a):
        s += 1
print s*pi/N


1.99978080364

In [ ]: