From 48e8c6ee64acd783fc22afd87913c4b6b6d63714 Mon Sep 17 00:00:00 2001 From: Lars Bogner Date: Thu, 18 Sep 2025 09:12:22 +0200 Subject: [PATCH] Change scaling plot to loglog --- projects/project2/main.pdf | Bin 248044 -> 247899 bytes projects/project2/main.tex | 3 +-- src/project2/python/scaling_plotter.py | 6 ++++-- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/projects/project2/main.pdf b/projects/project2/main.pdf index 239d2fd07816f8ac2fd4eaf9f5a26ea2b4e30b0f..41f6c9564df43b09b964d7d5304932dba818a6eb 100644 GIT binary patch delta 18815 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 LISM5uMNdWwre?gz diff --git a/projects/project2/main.tex b/projects/project2/main.tex index 10257dc..f042430 100644 --- a/projects/project2/main.tex +++ b/projects/project2/main.tex @@ -150,8 +150,7 @@ The Jacobi rotation algorithm is implemented as described in the lecture notes. \section*{Problem 5} \subsection*{Subproblem (a)} -The scaling of the number of iterations is tested in \texttt{src/project2/scaling\_tester.cpp}. The results are shown in \autoref{fig:scaling}. On the logarithmic scale, we see a trend that is roughly of the order $\sqrt{\log N}$. - +The scaling of the number of iterations is tested in \texttt{src/project2/scaling\_tester.cpp}. The results are shown in \autoref{fig:scaling}. On the double logarithmic scale, the scaling is approximately linear, indicating a polynomial relation between the number of iterations and the matrix size $N$. \begin{figure} \centering \includegraphics[width=0.7\textwidth]{include/scaling_data_iterations.pdf} diff --git a/src/project2/python/scaling_plotter.py b/src/project2/python/scaling_plotter.py index c6cd2e0..c83e54c 100644 --- a/src/project2/python/scaling_plotter.py +++ b/src/project2/python/scaling_plotter.py @@ -7,6 +7,7 @@ import os parser = argparse.ArgumentParser(description='Plot scaling data.') parser.add_argument('input_file', type=str, help='Path to the input CSV file') parser.add_argument("--times", "-t", action="store_true", help="Plot times instead of iterations") +parser.add_argument("--no-loglog", "-nL", action="store_true", help="Do not use log-log scale") args = parser.parse_args() data = pd.read_csv(args.input_file) @@ -18,16 +19,17 @@ if args.times: ax.plot(x, data["Arma_time"], label='Armadillo Time', color='C1', linestyle='-', marker='o') ax.set_ylabel('Time (s)') ax.set_title('Scaling of Computation Time') - ax.set_yscale('log') ax.legend() ax.grid() else: ax.set_ylabel('Number of Iterations') ax.set_title('Scaling of Jacobi Iterations') - ax.set_yscale('log') ax.plot(x, data["Jacobi_iterations"], label='Jacobi Iterations', color='C0', linestyle='-', marker='o') ax.grid() +if not args.no_loglog: + ax.set_xscale('log') + ax.set_yscale('log') ax.set_xlabel('Matrix Size N') dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../../projects/project2/include")) filename = args.input_file.split("/")[-1].replace(".txt", "")