summaryrefslogtreecommitdiff
path: root/book/module2/num_methods_1.tex
diff options
context:
space:
mode:
Diffstat (limited to 'book/module2/num_methods_1.tex')
-rw-r--r--book/module2/num_methods_1.tex129
1 files changed, 0 insertions, 129 deletions
diff --git a/book/module2/num_methods_1.tex b/book/module2/num_methods_1.tex
deleted file mode 100644
index 5550d12..0000000
--- a/book/module2/num_methods_1.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}