Add program for plotting problem 5 and 6
This commit is contained in:
parent
24f9f88af5
commit
2b103b9e3a
66
src/plot.py
66
src/plot.py
@ -4,42 +4,50 @@ import pandas as pd
|
|||||||
import seaborn as sns
|
import seaborn as sns
|
||||||
|
|
||||||
sns.set_theme()
|
sns.set_theme()
|
||||||
sns.dark_palette("seagreen")
|
plt.rcParams['text.usetex'] = True
|
||||||
|
|
||||||
"""Write to file (for dense matrix):
|
|
||||||
Line give size of matrix (column give number of transformations until convergence)
|
|
||||||
N 1 (2 3 4 5)
|
|
||||||
3
|
|
||||||
6
|
|
||||||
9
|
|
||||||
12
|
|
||||||
15
|
|
||||||
"""
|
|
||||||
|
|
||||||
def read_data(filename: str) -> tuple:
|
|
||||||
N = []
|
|
||||||
T = []
|
|
||||||
with open(filename, "r") as f:
|
|
||||||
lines = f.readlines()
|
|
||||||
for line in lines:
|
|
||||||
n_i, t_i = line.strip().split(",")
|
|
||||||
N.append(float(n_i))
|
|
||||||
T.append(float(t_i))
|
|
||||||
return (N, T)
|
|
||||||
|
|
||||||
|
|
||||||
|
def plot_transformations(save: bool=False) -> None:
|
||||||
|
# Load data
|
||||||
|
tridiag = pd.read_csv("../latex/output/transform_tridiag.csv", header=0)
|
||||||
|
dense = pd.read_csv("../latex/output/transform_dense.csv", header=0)
|
||||||
|
|
||||||
def plot_similarity_transformations(N: np.ndarray, T: np.ndarray) -> None:
|
|
||||||
fig, ax = plt.subplots()
|
fig, ax = plt.subplots()
|
||||||
ax.plot(N, T, label='Transformations')
|
ax.loglog(dense['N'], dense['T'], '--', label='Dense')
|
||||||
|
ax.loglog(tridiag['N'], tridiag['T'], label='Tridiagonal')
|
||||||
ax.set_xlabel('N')
|
ax.set_xlabel('N')
|
||||||
ax.set_ylabel('Similarity transformations')
|
ax.set_ylabel('Similarity transformations')
|
||||||
ax.set_xlim(xmin=N[0], xmax=N[-1])
|
ax.legend()
|
||||||
fig.savefig("similarity_transformation.pdf")
|
|
||||||
|
|
||||||
def plot_eigenvectors():
|
# Save to file
|
||||||
pass
|
if save is True:
|
||||||
|
fig.savefig("../latex/images/transform.pdf")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def plot_eigenvectors(N: int, save: bool=False) -> None:
|
||||||
|
# Load data based on matrix size
|
||||||
|
name = "eigenvector_" + str(N)
|
||||||
|
path = "../latex/output/" + name + ".csv"
|
||||||
|
eigvec = pd.read_csv(path, header=0)
|
||||||
|
|
||||||
|
fig, ax = plt.subplots()
|
||||||
|
ax.plot(eigvec['x'], eigvec['Vector 1'], label='Vector 1')
|
||||||
|
ax.plot(eigvec['x'], eigvec['Vector 2'], label='Vector 2')
|
||||||
|
ax.plot(eigvec['x'], eigvec['Vector 3'], label='Vector 3')
|
||||||
|
ax.set_xlabel(r'Element $\hat{x}_{i}$')
|
||||||
|
ax.set_ylabel(r'Value of element $v_{i}$')
|
||||||
|
ax.legend()
|
||||||
|
|
||||||
|
# Save to file
|
||||||
|
if save is True:
|
||||||
|
fig.savefig("../latex/images/" + name + ".pdf")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
pass
|
plot_transformations(True)
|
||||||
|
plot_eigenvectors(6, True)
|
||||||
|
plot_eigenvectors(100, True)
|
||||||
|
# plt.show()
|
||||||
Loading…
Reference in New Issue
Block a user