from numpy import * import pylab # data to fit x = random.rand(6) y = random.rand(6) # fit the data with a 4th degree polynomial z4 = polyfit(x, y, 4) p4 = poly1d(z4) # construct the polynomial z5 = polyfit(x, y, 5) p5 = poly1d(z5) xx = linspace(0, 1, 100) pylab.plot(x, y, 'o', xx, p4(xx),'-g', xx, p5(xx),'-b') pylab.legend(['data to fit', '4th degree poly', '5th degree poly']) pylab.axis([0,1,0,1]) pylab.show()Let's see the two polynomials:
Thursday, July 14, 2011
Polynomial curve fitting
We have seen already how to a fit a given set of points minimizing an error function, now we will see how to find a fitting polynomial for the data using the function polyfit provided by numpy:
Tuesday, July 12, 2011
Dice rolling experiment
If we roll a die a large number of times, and we compute the mean and variance, as exaplained here, we’d expect to obtain a mean = 3.5 and a variance = 2.916. Let's simulate that with a script:
import pylab import math # Rolling the die 1000 times v = pylab.randint(1,7,size=(1000)) print 'mean',pylab.mean(v) print 'variance',pylab.var(v) pylab.hist(v, bins=6) # histogram of the outcoming pylab.xlim(1,6) pylab.show()Here's the result:
mean 3.435 variance 2.781775
Monday, July 11, 2011
Prime factor decomposition of a number
The following function compute the prime factors (PFs) of an integer.
from math import floor
def factors(n):
result = []
for i in range(2,n+1): # test all integers between 2 and n
s = 0;
while n/i == floor(n/float(i)): # is n/i an integer?
n = n/float(i)
s += 1
if s > 0:
for k in range(s):
result.append(i) # i is a pf s times
if n == 1:
return result
# test
print factors(90)
The result will be[2, 3, 3, 5]This means that 90 is equal to 2*3*3*5.
Subscribe to:
Posts (Atom)

