1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Homework Help: Monte Carlo error calculation PYTHON

  1. Feb 17, 2016 #1
    • New member warned about posting without the template
    I am using the monte carlo method to calculate the integral of cos^2(x). This is done using N random numbers. In my case I am doing it for 10^i random numbers when i ranges from 1-6. I want to calculate the error on the integral for each value of i used.

    I know for each value of N I want to take say 100 samples of the integral then using numpy calculate the average and standard deviation for my final result. I will need to use arrays to store the values in. I'm just not sure how to do this. This is my code so far. I know it's wrong in the middle where the correct code needs to go. Thanks in advance!


    # this is the integral from 0 to 2 of cos(x)^2
    # using monte carlo integration
    # the errors are also calculated

    import numpy.random as rnd;
    import numpy as np;

    def integrate(n):
    return np.sum(pow(np.cos(rnd.uniform(0,1,size=n)),2))/n

    for i in range(1,8):
    # creating and adding to arrays
    measurement=[];# create an empty array or list
    measurement.append('intergrate(n)');# add to it

    print(pow(10,i),":", integrate(pow(10,i)),":", ERROR)
  2. jcsd
  3. Feb 17, 2016 #2


    Staff: Mentor

    Please use [code] tags around your code. This makes your code easier to read, and with Python, especially, preserves the indentation that is crucial in Python.
    Your python code

    Before getting fancy, with different values for i, try setting i to a specific value and see if you can get some reasonable output. I'm familiar with Python, but not familar with numpy, so can't comment on whether you are calling numpy functions correctly. I suspect that your calls to average and std won't work, as you aren't storing the return values anywhere.

    Also, you have measurement as a list. Why are you storing a string 'intergrate(n)' (which BTW is misspelled) in your list?
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook

Have something to add?
Draft saved Draft deleted