Simulation for a triangle

조회 수: 4 (최근 30일)
Thufz
Thufz 2014년 2월 9일
i'm trying to creat a simple script to find the area of a triangle using monte carlo simulation. however, i'm basically stuck. could someone please help me.
any help is appreciated,
thannks
  댓글 수: 1
Aswin Farzana Mohamed Ansar
Aswin Farzana Mohamed Ansar 2017년 10월 1일
Thufz can you share the script that you tried with!

댓글을 달려면 로그인하십시오.

채택된 답변

Roger Stafford
Roger Stafford 2014년 2월 10일
The theory of the Monte Carlo simulation which you describe is, I presume, that if you enclose a triangle completely in a square of known area, the area of the triangle can be estimated by multiplying the area of the square by the fraction of the random points within the square which happen to land inside the triangle. Of course this requires a very large number of random points to obtain a reasonably accurate estimate.
With the triangle you have specified with vertices (0,0), (0,1), (1,0), it is very easy to do this, and in fact you have done just that in your code. Writing x = rand and y = rand will fill the unit square with vertices at (0,0), (1,0), (1,1), and (0,1) uniformly. Since x and y are non-negative, the only test you need for being inside your triangle is for the hypotenuse, whether or not x+y <=1, and that is what your 'count' is recording. That means your code as you have shown it is almost done. Multiply the known area of the square by the fraction count/tries and you have your estimate for the area. You were almost there!
The simulation is a little more challenging with an arbitrary triangle. You have to define a square which is guaranteed to completely enclose it and then generate a large number of random points that are distributed uniformly in the square. Each of these points is tested to see if it does or does not lie within the triangle. The fraction that do lie within it is to be multiplied by the area of the square to give an estimate of the triangle's area.
  댓글 수: 1
Thufz
Thufz 2014년 2월 10일
편집: Thufz 2014년 2월 10일
exactly what i was looking for
thanks

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Image Analyst
Image Analyst 2014년 2월 9일
You have not specified the 3 vertex coordinates of the triangle. Once you do that you can use inpolygon() to determine if a test point is inside the triangle.
  댓글 수: 4
Thufz
Thufz 2014년 2월 9일
편집: Thufz 2014년 2월 9일
the vertices are (0,0), (0,1), (1,0)
and how will i calculate the area using what you have said perviously
Image Analyst
Image Analyst 2014년 2월 9일
편집: Image Analyst 2014년 2월 9일
x = [0, 0, 1]
y = [0, 1, 0]
area = polyarea(x, y)
However I don't know how a Monte Carlo could be worked into this. The only way I can see it is if you run it a million times and get random coordinates, but I don't know if that is what you are after.
By the way, don't use max as a variable name or else you will destroy a very important build in function. Same for min.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Creating and Concatenating Matrices에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by