From db3627fa93b724180feb56aadbf6ff139fbad728 Mon Sep 17 00:00:00 2001 From: Gilbert Young <109980169+bud-primordium@users.noreply.github.com> Date: Sat, 12 Oct 2024 20:35:23 +0800 Subject: [PATCH] update link in ass3_2 --- Assignment_3/Problem_2/problem_2.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assignment_3/Problem_2/problem_2.tex b/Assignment_3/Problem_2/problem_2.tex index a3e0c1a..0d6feae 100644 --- a/Assignment_3/Problem_2/problem_2.tex +++ b/Assignment_3/Problem_2/problem_2.tex @@ -38,7 +38,7 @@ \subsection{程序描述} `-- pi_81.in \end{verbatim} \end{multicols} -\noindent \textbf{助教老师}审阅源代码时,可借助\texttt{Doxygen.html}便捷查看\texttt{Doxygen}生成的\href{https://bud-primordium.github.io/Computational-Physics-Fall-2024/Assignment%203/Problem%202/doxygen_output/html/index.html}{注释文档}。在\texttt{src}目录下,运行\ccmd{g++ *.cpp -o main}(或其它编译器,需要支持\texttt{-std=c++11}标准)编译,再在当前目录使用\ccmd{./main}运行即可(也有已经编译好的\texttt{Gaussian.exe},适配\texttt{Win64})。\texttt{interaction.cpp}负责交互功能,包括在当前文件夹搜索\texttt{.in}文件供用户选择等;\texttt{main.cpp}是主程序入口点,其逻辑结构在伪代码 \ \ref{alg:gaussian_elimination_solver} \ 中有详细说明;\texttt{methods.cpp}负责算法实现,包括使用高斯消元法行阶梯化、计算秩、检查方程组自洽性、回代法求唯一解等,逻辑结构在伪代码 \ \ref{alg:gaussian_elimination},\ref{alg:determine_rank},\ref{alg:check_consistency},\ref{alg:back_substitution} \ 中有详细说明;\texttt{utils.cpp}包含一些通用的工具函数,如\texttt{ReadMatrix},\texttt{ShowMatrix}等,并提供计时功能。目录下还准备了$6$个测试用的\texttt{.in}文件,其中\texttt{quiz.in}是本题要求的输入文件,\texttt{inf.in}是约束重复导致无穷多组解的例子,\texttt{inf\_2.in}是方程少于未知数的例子,\texttt{no.in}是无解的例子,\texttt{pi\_27.in}和\texttt{pi\_81.in},分别是从圆周率生成的$27\times28$和$81\times82$的增广矩阵,用于验证前述算法时间复杂度的分析,最终结果表明,两者运行时间之比为$3.43s:62.7s \approx 1:18$,考虑到输入输出等影响,近似吻合$O(n^3)=27$的时间复杂度之比。同时还借助\texttt{numpy}库的\texttt{linalg}模块在服务器上求解了\texttt{pi\_81.in},其结果与本程序输出一致(还快些),验证了本算法的正确性,详细的结果分析见\ref{sec:problem_2_example}所述。 +\noindent \textbf{助教老师}审阅源代码时,可借助\texttt{Doxygen.html}便捷查看\texttt{Doxygen}生成的\href{https://bud-primordium.github.io/Computational-Physics-Fall-2024/Assignment_3/Problem_2/doxygen_output/html/index.html}{注释文档}。在\texttt{src}目录下,运行\ccmd{g++ *.cpp -o main}(或其它编译器,需要支持\texttt{-std=c++11}标准)编译,再在当前目录使用\ccmd{./main}运行即可(也有已经编译好的\texttt{Gaussian.exe},适配\texttt{Win64})。\texttt{interaction.cpp}负责交互功能,包括在当前文件夹搜索\texttt{.in}文件供用户选择等;\texttt{main.cpp}是主程序入口点,其逻辑结构在伪代码 \ \ref{alg:gaussian_elimination_solver} \ 中有详细说明;\texttt{methods.cpp}负责算法实现,包括使用高斯消元法行阶梯化、计算秩、检查方程组自洽性、回代法求唯一解等,逻辑结构在伪代码 \ \ref{alg:gaussian_elimination},\ref{alg:determine_rank},\ref{alg:check_consistency},\ref{alg:back_substitution} \ 中有详细说明;\texttt{utils.cpp}包含一些通用的工具函数,如\texttt{ReadMatrix},\texttt{ShowMatrix}等,并提供计时功能。目录下还准备了$6$个测试用的\texttt{.in}文件,其中\texttt{quiz.in}是本题要求的输入文件,\texttt{inf.in}是约束重复导致无穷多组解的例子,\texttt{inf\_2.in}是方程少于未知数的例子,\texttt{no.in}是无解的例子,\texttt{pi\_27.in}和\texttt{pi\_81.in},分别是从圆周率生成的$27\times28$和$81\times82$的增广矩阵,用于验证前述算法时间复杂度的分析,最终结果表明,两者运行时间之比为$3.43s:62.7s \approx 1:18$,考虑到输入输出等影响,近似吻合$O(n^3)=27$的时间复杂度之比。同时还借助\texttt{numpy}库的\texttt{linalg}模块在服务器上求解了\texttt{pi\_81.in},其结果与本程序输出一致(还快些),验证了本算法的正确性,详细的结果分析见\ref{sec:problem_2_example}所述。 \subsection{伪代码}