<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Approximation of Pi
Theory
We approximated the value of $\pi$ (the ratio of a circle's perimeter to its diameter) using the Monte Carlo Method.
For that, we sample uniformly the available points of the square $[-1, +1]^2$. We then compute the ratio of pionts that follow the implicit circle equation $x^2 + y^2 <= 1$. This will give us an approximation of $\pi$.
Why, might you ask?
Each point is either in the circle, or it isn't. This means that the chance of having a randomly-chosen point inside the circle is the ratio of the circle's area to the square's area.
The area of the $[-1, +1]^2$ square is $2^2 = 4$. The area of the unitary circle is $\pi * 1^2 = \pi$.
This means that we have a chance of $\frac{\pi}{4}$ of choosing a point that is inside the circle.
The Monte Carlo part is about taking many samples to approximate that chance.
Thus, $$\frac{\pi}{4} ≈ \frac{N_{inside}}{N_{outside}}$$
Which is the same as $$\pi ≈ 4*\frac{N_{inside}}{N_{outside}}$$
Step1:  Results
Step2:  However, this method isn't very fast and can only approximate Pi, never truly compute the exact value.
<ASSISTANT_TASK:>
Python Code:
plot_approximation()
Explanation: Approximation of Pi
Theory
We approximated the value of $\pi$ (the ratio of a circle's perimeter to its diameter) using the Monte Carlo Method.
For that, we sample uniformly the available points of the square $[-1, +1]^2$. We then compute the ratio of pionts that follow the implicit circle equation $x^2 + y^2 <= 1$. This will give us an approximation of $\pi$.
Why, might you ask?
Each point is either in the circle, or it isn't. This means that the chance of having a randomly-chosen point inside the circle is the ratio of the circle's area to the square's area.
The area of the $[-1, +1]^2$ square is $2^2 = 4$. The area of the unitary circle is $\pi * 1^2 = \pi$.
This means that we have a chance of $\frac{\pi}{4}$ of choosing a point that is inside the circle.
The Monte Carlo part is about taking many samples to approximate that chance.
Thus, $$\frac{\pi}{4} ≈ \frac{N_{inside}}{N_{outside}}$$
Which is the same as $$\pi ≈ 4*\frac{N_{inside}}{N_{outside}}$$
End of explanation
print("Pi was approximated at %.5f, when the real value is %.5f..." % (best_pi_approximation, real_pi_value))
Explanation: Results
End of explanation
plot_approximation_evolution_graph()
Explanation: However, this method isn't very fast and can only approximate Pi, never truly compute the exact value.
End of explanation
<END_TASK>