diff options
| author | Christian Kolset <christian.kolset@gmail.com> | 2025-04-29 18:54:01 -0600 |
|---|---|---|
| committer | Christian Kolset <christian.kolset@gmail.com> | 2025-04-29 18:54:01 -0600 |
| commit | d0f224c34e0a0726274c62e9fe66220af6d2e6cc (patch) | |
| tree | 60a78908d64001b3d7e0f006aeb393691d409384 | |
| parent | dc13208abd61cc3ac7c64a4373f3ad85689f1293 (diff) | |
Updated Chapter indexing.
| -rw-r--r-- | book/computingME.pdf | bin | 3782618 -> 4057638 bytes | |||
| -rw-r--r-- | book/module2/error.tex | 4 | ||||
| -rw-r--r-- | book/module2/module2.tex | 4 | ||||
| -rw-r--r-- | book/module2/num_methods_1.tex (renamed from book/module2/non_linear_eqn_solver.tex) | 0 | ||||
| -rw-r--r-- | book/module3/module3.tex | 2 | ||||
| -rw-r--r-- | book/module3/non_linear_eqn_solver.tex | 129 | ||||
| -rw-r--r-- | tutorials/module_2/num_methods_1.md (renamed from tutorials/module_2/non_linear_eqn_solver.md) | 0 |
7 files changed, 6 insertions, 133 deletions
diff --git a/book/computingME.pdf b/book/computingME.pdf Binary files differindex 145ae15..572b469 100644 --- a/book/computingME.pdf +++ b/book/computingME.pdf diff --git a/book/module2/error.tex b/book/module2/error.tex index 2646dc8..758a206 100644 --- a/book/module2/error.tex +++ b/book/module2/error.tex @@ -29,9 +29,9 @@ part of the computation}. An example of this could be using a finite number of terms from a Taylor Series expansion to approximate a function. -Approximating \(e^x\) by the first few terms of its Taylor series: +Approximating $e^x$ by the first few terms of its Taylor series: -\[e^x \approx 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!}\] +$e^x \approx 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!}\$ The error comes from \textbf{neglecting} all the higher order terms (\(\frac{x^4}{4!}, \frac{x^5}{5!}\), \ldots). diff --git a/book/module2/module2.tex b/book/module2/module2.tex index 2781a0e..14f37e0 100644 --- a/book/module2/module2.tex +++ b/book/module2/module2.tex @@ -1,6 +1,8 @@ \chapter{Module 2: Algorithm Development} \input{module2/problem_solving_strategies} -\input{module2/intro_to_numerical_methods} +\input{module2/num_methods_1} +\input{module2/error} \input{module2/ai_assisted_programming} \input{module2/debugging_code} \input{module2/version_control} +\input{module2/documentation} diff --git a/book/module2/non_linear_eqn_solver.tex b/book/module2/num_methods_1.tex index 5550d12..5550d12 100644 --- a/book/module2/non_linear_eqn_solver.tex +++ b/book/module2/num_methods_1.tex diff --git a/book/module3/module3.tex b/book/module3/module3.tex index 3e93796..3c59ddd 100644 --- a/book/module3/module3.tex +++ b/book/module3/module3.tex @@ -1,4 +1,4 @@ \chapter{Module 3: Applications of Computational Mathematics} -\input{module3/non_linear_eqn_solver} +\input{module3/numerical_methods} \input{module3/supersonic} \input{module3/system_of_equations} diff --git a/book/module3/non_linear_eqn_solver.tex b/book/module3/non_linear_eqn_solver.tex deleted file mode 100644 index 5550d12..0000000 --- a/book/module3/non_linear_eqn_solver.tex +++ /dev/null @@ -1,129 +0,0 @@ -\section{Solving non-linear -equations}\label{solving-non-linear-equations} - -\subsection{Introduction}\label{introduction} - -\subsection{Prerequisites}\label{prerequisites} - -\begin{Shaded} -\begin{Highlighting}[] -\ImportTok{import}\NormalTok{ numpy} -\ImportTok{import}\NormalTok{ scipy} -\ImportTok{import}\NormalTok{ sympy} -\end{Highlighting} -\end{Shaded} - -\subsection{fsolve from SciPy}\label{fsolve-from-scipy} - -\begin{Shaded} -\begin{Highlighting}[] -\ImportTok{from}\NormalTok{ scipy.optimize }\ImportTok{import}\NormalTok{ fsolve} - -\KeywordTok{def}\NormalTok{ equations(}\BuiltInTok{vars}\NormalTok{):} -\NormalTok{ x, y }\OperatorTok{=} \BuiltInTok{vars} -\NormalTok{ eq1 }\OperatorTok{=}\NormalTok{ x}\OperatorTok{**}\DecValTok{2} \OperatorTok{+}\NormalTok{ y}\OperatorTok{**}\DecValTok{2} \OperatorTok{{-}} \DecValTok{25} -\NormalTok{ eq2 }\OperatorTok{=}\NormalTok{ x}\OperatorTok{**}\DecValTok{2} \OperatorTok{{-}}\NormalTok{ y} - \ControlFlowTok{return}\NormalTok{ [eq1, eq2]} - -\NormalTok{initial\_guess }\OperatorTok{=}\NormalTok{ [}\DecValTok{1}\NormalTok{, }\DecValTok{1}\NormalTok{]} -\NormalTok{solution }\OperatorTok{=}\NormalTok{ fsolve(equations, initial\_guess)} -\BuiltInTok{print}\NormalTok{(}\StringTok{"Solution:"}\NormalTok{, solution)} -\end{Highlighting} -\end{Shaded} - -\subsection{root from SciPy}\label{root-from-scipy} - -\begin{Shaded} -\begin{Highlighting}[] -\ImportTok{from}\NormalTok{ scipy.optimize }\ImportTok{import}\NormalTok{ root} - -\KeywordTok{def}\NormalTok{ equations(}\BuiltInTok{vars}\NormalTok{):} -\NormalTok{ x, y }\OperatorTok{=} \BuiltInTok{vars} -\NormalTok{ eq1 }\OperatorTok{=}\NormalTok{ x}\OperatorTok{**}\DecValTok{2} \OperatorTok{+}\NormalTok{ y}\OperatorTok{**}\DecValTok{2} \OperatorTok{{-}} \DecValTok{25} -\NormalTok{ eq2 }\OperatorTok{=}\NormalTok{ x}\OperatorTok{**}\DecValTok{2} \OperatorTok{{-}}\NormalTok{ y} - \ControlFlowTok{return}\NormalTok{ [eq1, eq2]} - -\NormalTok{initial\_guess }\OperatorTok{=}\NormalTok{ [}\DecValTok{1}\NormalTok{, }\DecValTok{1}\NormalTok{]} -\NormalTok{solution }\OperatorTok{=}\NormalTok{ root(equations, initial\_guess)} -\BuiltInTok{print}\NormalTok{(}\StringTok{"Solution:"}\NormalTok{, solution.x)} -\end{Highlighting} -\end{Shaded} - -\subsection{minimize from SciPy}\label{minimize-from-scipy} - -\begin{Shaded} -\begin{Highlighting}[] -\ImportTok{from}\NormalTok{ scipy.optimize }\ImportTok{import}\NormalTok{ minimize} - -\CommentTok{\# Define the equations} -\KeywordTok{def}\NormalTok{ equation1(x, y):} - \ControlFlowTok{return}\NormalTok{ x}\OperatorTok{**}\DecValTok{2} \OperatorTok{+}\NormalTok{ y}\OperatorTok{**}\DecValTok{2} \OperatorTok{{-}} \DecValTok{25} - -\KeywordTok{def}\NormalTok{ equation2(x, y):} - \ControlFlowTok{return}\NormalTok{ x}\OperatorTok{**}\DecValTok{2} \OperatorTok{{-}}\NormalTok{ y} - -\CommentTok{\# Define the objective function for optimization} -\KeywordTok{def}\NormalTok{ objective(xy):} -\NormalTok{ x, y }\OperatorTok{=}\NormalTok{ xy} - \ControlFlowTok{return}\NormalTok{ equation1(x, y)}\OperatorTok{**}\DecValTok{2} \OperatorTok{+}\NormalTok{ equation2(x, y)}\OperatorTok{**}\DecValTok{2} - -\CommentTok{\# Initial guess} -\NormalTok{initial\_guess }\OperatorTok{=}\NormalTok{ [}\DecValTok{1}\NormalTok{, }\DecValTok{1}\NormalTok{]} - -\CommentTok{\# Perform optimization} -\NormalTok{result }\OperatorTok{=}\NormalTok{ minimize(objective, initial\_guess)} -\NormalTok{solution\_optimization }\OperatorTok{=}\NormalTok{ result.x} - -\BuiltInTok{print}\NormalTok{(}\StringTok{"Optimization Method Solution:"}\NormalTok{, solution\_optimization)} -\end{Highlighting} -\end{Shaded} - -\subsection{nsolve from SymPy}\label{nsolve-from-sympy} - -\begin{Shaded} -\begin{Highlighting}[] -\ImportTok{from}\NormalTok{ sympy }\ImportTok{import}\NormalTok{ symbols, Eq, nsolve} - -\CommentTok{\# Define the variables} -\NormalTok{x, y }\OperatorTok{=}\NormalTok{ symbols(}\StringTok{\textquotesingle{}x y\textquotesingle{}}\NormalTok{)} - -\CommentTok{\# Define the equations} -\NormalTok{eq1 }\OperatorTok{=}\NormalTok{ Eq(x}\OperatorTok{**}\DecValTok{2} \OperatorTok{+}\NormalTok{ y}\OperatorTok{**}\DecValTok{2}\NormalTok{, }\DecValTok{25}\NormalTok{)} -\NormalTok{eq2 }\OperatorTok{=}\NormalTok{ Eq(x }\OperatorTok{{-}}\NormalTok{ y, }\DecValTok{0}\NormalTok{)} - -\CommentTok{\# Initial guess for the solution} -\NormalTok{initial\_guess }\OperatorTok{=}\NormalTok{ [}\DecValTok{1}\NormalTok{, }\DecValTok{1}\NormalTok{]} - -\CommentTok{\# Use nsolve to find the solution} -\NormalTok{solution }\OperatorTok{=}\NormalTok{ nsolve([eq1, eq2], [x, y], initial\_guess)} -\BuiltInTok{print}\NormalTok{(}\StringTok{"Solution:"}\NormalTok{, solution)} -\end{Highlighting} -\end{Shaded} - -\subsection{newton\_method from NumPy}\label{newton_method-from-numpy} - -\begin{Shaded} -\begin{Highlighting}[] -\ImportTok{import}\NormalTok{ numpy }\ImportTok{as}\NormalTok{ np} - -\KeywordTok{def}\NormalTok{ equations(}\BuiltInTok{vars}\NormalTok{):} -\NormalTok{ x, y }\OperatorTok{=} \BuiltInTok{vars} -\NormalTok{ eq1 }\OperatorTok{=}\NormalTok{ x}\OperatorTok{**}\DecValTok{2} \OperatorTok{+}\NormalTok{ y}\OperatorTok{**}\DecValTok{2} \OperatorTok{{-}} \DecValTok{25} -\NormalTok{ eq2 }\OperatorTok{=}\NormalTok{ x}\OperatorTok{**}\DecValTok{2} \OperatorTok{{-}}\NormalTok{ y} - \ControlFlowTok{return}\NormalTok{ np.array([eq1, eq2])} - -\KeywordTok{def}\NormalTok{ newton\_method(initial\_guess, tolerance}\OperatorTok{=}\FloatTok{1e{-}6}\NormalTok{, max\_iter}\OperatorTok{=}\DecValTok{100}\NormalTok{):} - \BuiltInTok{vars} \OperatorTok{=}\NormalTok{ np.array(initial\_guess, dtype}\OperatorTok{=}\BuiltInTok{float}\NormalTok{)} - \ControlFlowTok{for}\NormalTok{ \_ }\KeywordTok{in} \BuiltInTok{range}\NormalTok{(max\_iter):} -\NormalTok{ J }\OperatorTok{=}\NormalTok{ np.array([[}\DecValTok{2} \OperatorTok{*} \BuiltInTok{vars}\NormalTok{[}\DecValTok{0}\NormalTok{], }\DecValTok{2} \OperatorTok{*} \BuiltInTok{vars}\NormalTok{[}\DecValTok{1}\NormalTok{]], [}\DecValTok{2} \OperatorTok{*} \BuiltInTok{vars}\NormalTok{[}\DecValTok{0}\NormalTok{], }\OperatorTok{{-}}\DecValTok{1}\NormalTok{]])} -\NormalTok{ F }\OperatorTok{=}\NormalTok{ equations(}\BuiltInTok{vars}\NormalTok{)} -\NormalTok{ delta }\OperatorTok{=}\NormalTok{ np.linalg.solve(J, }\OperatorTok{{-}}\NormalTok{F)} - \BuiltInTok{vars} \OperatorTok{+=}\NormalTok{ delta} - \ControlFlowTok{if}\NormalTok{ np.linalg.norm(delta) }\OperatorTok{\textless{}}\NormalTok{ tolerance:} - \ControlFlowTok{return} \BuiltInTok{vars} - -\NormalTok{initial\_guess }\OperatorTok{=}\NormalTok{ [}\DecValTok{1}\NormalTok{, }\DecValTok{1}\NormalTok{]} -\NormalTok{solution }\OperatorTok{=}\NormalTok{ newton\_method(initial\_guess)} -\BuiltInTok{print}\NormalTok{(}\StringTok{"Solution:"}\NormalTok{, solution)} -\end{Highlighting} -\end{Shaded} diff --git a/tutorials/module_2/non_linear_eqn_solver.md b/tutorials/module_2/num_methods_1.md index 6d1ded3..6d1ded3 100644 --- a/tutorials/module_2/non_linear_eqn_solver.md +++ b/tutorials/module_2/num_methods_1.md |
