```
In [13]:
```import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns

In discrete mathematics a Graph is a set of *vertices* or *nodes* that are connected to each other by *edges* or *lines*. If those *edges* don't have directionality, the graph is said to be *undirected*. Graphs are used to model social and communications networks (Twitter, Facebook, Internet) as well as natural systems such as molecules.

A Complete Graph, $K_n$ on $n$ nodes has an edge that connects each node to every other node.

Here is $K_5$:

```
In [2]:
```import networkx as nx
K_5=nx.complete_graph(5)
nx.draw(K_5)

```
```

The Laplacian Matrix is a matrix that is extremely important in graph theory and numerical analysis. It is defined as $L=D-A$. Where $D$ is the degree matrix and $A$ is the adjecency matrix. For the purpose of this problem you don't need to understand the details of these matrices, although their definitions are relatively simple.

The degree matrix for $K_n$ is an $n \times n$ diagonal matrix with the value $n-1$ along the diagonal and zeros everywhere else. Write a function to compute the degree matrix for $K_n$ using NumPy.

```
In [4]:
```def complete_deg(n):
"""Return the integer valued degree matrix D for the complete graph K_n."""
x=np.empty((n,n),dtype=int) #makes an integer array nxn
x.fill(n-1) #fills array with n-1
deg_mat=np.diag(np.diag(x)) #takes the diag of a 2D array x which is all n-1 then creates a diag with zeros nxn
return deg_mat

```
In [6]:
```D = complete_deg(5)
assert D.shape==(5,5)
assert D.dtype==np.dtype(int)
assert np.all(D.diagonal()==4*np.ones(5))
assert np.all(D-np.diag(D.diagonal())==np.zeros((5,5),dtype=int))

```
In [7]:
```def complete_adj(n):
"""Return the integer valued adjacency matrix A for the complete graph K_n."""
a=np.ones((n,n),dtype=int) #makes an interger array of ones nxn
np.fill_diagonal(a,0) #googled "how to fill diagonal array using numpy" found the fill_diagonal function
return(a)

```
In [8]:
```A = complete_adj(5)
assert A.shape==(5,5)
assert A.dtype==np.dtype(int)
assert np.all(A+np.eye(5,dtype=int)==np.ones((5,5),dtype=int))

*spectrum* of the Laplacian *L* of $K_n$. What patterns do you notice as $n$ changes? Create a *conjecture* about the general Laplace *spectrum* of $K_n$.

```
In [22]:
```def Lspectrum(n):
L=complete_deg(n)-complete_adj(n)
plt.plot(L)

```
In [32]:
```Lspectrum(9)

```
```

YOUR ANSWER HERE

```
In [ ]:
```

```
In [ ]:
```