<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 <center>
    <h1> ILI285 - Computación Científica I  / INF285 - Computación Científica </h1>
    <h2> Finding 2 Chebyshev points graphycally </h2>
    <h2> <a href="#acknowledgements"> [S]cientific [C]omputing [T]eam </a> </h2>
    <h2> Version
Step1:  <div id='cheb' />
Finding 2 Chebyshev points
We compute them so we can compare them later.
Step2:  Recall that the Chebyshev points are points that minimize the following expression
Step3:  Now we need to evaluate $\omega(x_1,x_2)$ over the domain $\Omega=[0,1]^2$.
Step4:  With this data, we can now plot the function $\omega(x_1,x_2)$ on $\Omega$. 
The minimun value of is shown by the color at the bottom of the colorbar.
By visual inspection, we see that we have two mins. 
They are located at the bottom right and top left.
Step5:  Finally, we have included the min in the plot and we see the agreement between the min of $\omega(x_1,x_2)$ and the Chebyshev points found.
<ASSISTANT_TASK:>
Python Code:
import numpy as np
import matplotlib.pyplot as plt
from ipywidgets import interact
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib as mpl
mpl.rcParams['font.size'] = 14
mpl.rcParams['axes.labelsize'] = 20
mpl.rcParams['xtick.labelsize'] = 14
mpl.rcParams['ytick.labelsize'] = 14
%matplotlib inline
Explanation: <center>
    <h1> ILI285 - Computación Científica I  / INF285 - Computación Científica </h1>
    <h2> Finding 2 Chebyshev points graphycally </h2>
    <h2> <a href="#acknowledgements"> [S]cientific [C]omputing [T]eam </a> </h2>
    <h2> Version: 1.02</h2>
</center>
Table of Contents
Finding 2 Chebyshev points
Python Modules and Functions
Acknowledgements
End of explanation
n=2
i=1
theta1=(2*i-1)*np.pi/(2*n)
i=2
theta2=(2*i-1)*np.pi/(2*n)
c1=np.cos(theta1)
c2=np.cos(theta2)
Explanation: <div id='cheb' />
Finding 2 Chebyshev points
We compute them so we can compare them later.
End of explanation
N=50
x=np.linspace(-1,1,N)
w = lambda x1,x2: np.max(np.abs((x-x1)*(x-x2)))
wv=np.vectorize(w)
Explanation: Recall that the Chebyshev points are points that minimize the following expression:
$$
\displaystyle{\omega(x_1,x_2,\dots,x_n)=\max_{x} |(x-x_1)\,(x-x_2)\,\cdots\,(x-x_n)|}.
$$
This comes from the Interpolation Error Formula (I hope you remember it, otherwise see the textbook or the classnotes!). 
In this notebook, we will find the $\min$ for 2 points, 
this means:
$$
[x_1,x_2]= \displaystyle{\mathop{\mathrm{argmin}}{x_1,x_2\in [-1,1]}} \,\omega(x_1,x_2)=\displaystyle{\mathop{\mathrm{argmin}}{x_1,x_2\in [-1,1]}}\,
\max_{x\in [-1,1]} |(x-x_1)\,(x-x_2)|.
$$
For doing this, we first need to build $\omega(x_1,x_2)$,
End of explanation
[X,Y]=np.meshgrid(x,x)
W=wv(X,Y)
Explanation: Now we need to evaluate $\omega(x_1,x_2)$ over the domain $\Omega=[0,1]^2$.
End of explanation
plt.figure(figsize=(8,8))
#plt.contourf(X, Y, W,100, cmap=cm.hsv, antialiased=False)
plt.contourf(X, Y, W,100, cmap=cm.nipy_spectral, antialiased=False)
plt.xlabel(r'$x_1$')
plt.ylabel(r'$x_2$')
plt.colorbar()
plt.show()
Explanation: With this data, we can now plot the function $\omega(x_1,x_2)$ on $\Omega$. 
The minimun value of is shown by the color at the bottom of the colorbar.
By visual inspection, we see that we have two mins. 
They are located at the bottom right and top left.
End of explanation
plt.figure(figsize=(8,8))
plt.contourf(X, Y, W,100, cmap=cm.nipy_spectral, antialiased=False)
plt.plot(c1,c2,'k.',markersize=16)
plt.plot(c2,c1,'k.',markersize=16)
plt.colorbar()
plt.xlabel(r'$x_1$') 
plt.ylabel(r'$x_2$')
plt.show()
Explanation: Finally, we have included the min in the plot and we see the agreement between the min of $\omega(x_1,x_2)$ and the Chebyshev points found.
End of explanation
<END_TASK>