|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#16
|
||||
|
||||
|
Re: Math Quiz 9
https://en.wikipedia.org/wiki/Monte_Carlo_method
Randomly sample the set of all line segments, and find the mean length of only the segments in the sample (a finite number chosen to suit your computational resources, rather than the uncountably infinite number in the entire set). If the sampling matches the probability distribution/weighting of the set, then the law of large numbers says your mean will approach the true mean as sample size increases. |
|
#18
|
||||
|
||||
|
Re: Math Quiz 9
I ran the Monte Carlo thing in a python script and the answers, each run with 1,000,000 trials, were all around 0.333. I'm gonna keep thinking, though, how to get an exact answer.
Quote:
EDIT: I found the error - the value comes out to 0.521 Last edited by Hitchhiker 42 : 16-07-2016 at 22:01. |
|
#19
|
|||
|
|||
|
Re: Math Quiz 9
I am thinking the answer is a number that is very small (close to 0), as you can draw a ton more 0.000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 01 lines than you can 1 inch (or larger on a diagonal) lines.
|
|
#20
|
||||
|
||||
|
Re: Math Quiz 9
Quote:
Last edited by Hitchhiker 42 : 16-07-2016 at 22:01. |
|
#21
|
||||
|
||||
|
Re: Math Quiz 9
Quote:
Your script has an error. Compare it to the one-line AWK script I posted. |
|
#22
|
|||||
|
|||||
|
Re: Math Quiz 9
My simple Python Monte Carlo script gave me an average of 0.521408 (or 0.52141 rounded to 5 digits) in ~5e9 iterations (10 miles of hiking worth).
Code is below: Code:
import numpy as np
iterations = 10000000
avg = 0
for i in range(100000):
for i in range(iterations):
pos = np.random.rand(4)
length = np.sqrt((pos[0]-pos[1])**2+(pos[2]-pos[3])**2)
avg = (avg*i + length)/(i+1)
with open("test.txt", "a") as f:
f.write(str(avg)+'\n')
Code:
import numpy as np
f = np.loadtxt('test.txt')
print(np.average(f))
print(len(f))
Edit: Reps to whoever finds the bug in my code and explains what it does. Last edited by z_beeblebrox : 16-07-2016 at 22:57. Reason: New challenge |
|
#23
|
||||
|
||||
|
Re: Math Quiz 9
That is the correct answer. Reps to you
![]() |
|
#24
|
||||
|
||||
|
Re: Math Quiz 9
Now, how would you get the correct answer accurate to, let's say, 8 decimal places? |
|
#25
|
|||
|
|||
|
Re: Math Quiz 9
Makes no logical sense unless the question is improperly worded or bounded. You can fit an infinite number of lines in the box, and fact is, more lines closer to 0 in length fit in the box than lines averaging 0.52xxxx
|
|
#26
|
|||||
|
|||||
|
Re: Math Quiz 9
I think the problem is more "Choose two random points inside by a 1" square and measure the distance between them. Repeat infinitely. What's the average of those measurements?"
|
|
#27
|
|||
|
|||
|
Re: Math Quiz 9
Quote:
What's the average length of all the line segments which can be drawn inside a 1 inch square? |
|
#28
|
|||||
|
|||||
|
Re: Math Quiz 9
If the problem is interpreted as you describe (What is the average length of all the line segments that could be packed into a 1" square at once without overlapping?), there would be no meaningful answer, since infinite line segments of any length l < sqrt(2)" could be fit within the square, as line segments have no thickness thus can be packed infinitely densely.
Last edited by z_beeblebrox : 16-07-2016 at 22:49. Reason: grammar |
|
#29
|
|||
|
|||
|
Re: Math Quiz 9
Exactly - hence why people struggled to answer I think......
|
|
#30
|
||||
|
||||
|
Re: Math Quiz 9
Precisely ln(1+sqrt(2))/3 + sqrt(2)/15 + 2/15
Or approximately 0.52140543316 Rounded to 8 digits: 0.52140543 Rounded to 5 digits: 0.52141 A fun exercise in every integration tool I've ever learned, plus a cool rationalization trick I wasn't familiar with. The computation took a bit to hash through some arithmetic errors and one silly differential error (chain rule!). In practice you probably wouldn't bother to do this (or use a symbolic manipulation tool like Mathematica - this is how I checked my work), and sometimes there is no closed form for the integral. To get 8 digits simply run a larger Monte Carlo simulation (a couple lines of code instead of several pages of derivation). In the end we are always limited to some finite number of digits, so numerical methods win out. |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|