diff options
Diffstat (limited to 'book/module2/num_methods_1.tex')
| -rw-r--r-- | book/module2/num_methods_1.tex | 129 |
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} |
