ubuntu2404
\documentclass[11pt,letterpaper]{article}12% CoCalc Differential Equations and PDEs Template3% Optimized for advanced mathematical analysis and computational solutions4% Features: Analytical solutions, numerical methods, visualization, applications56%=============================================================================7% PACKAGE IMPORTS - Core packages for differential equations8%=============================================================================9\usepackage[utf8]{inputenc}10\usepackage[T1]{fontenc}11\usepackage{lmodern}12\usepackage[english]{babel}1314% Page layout and spacing15\usepackage[margin=1in]{geometry}16\usepackage{setspace}17\usepackage{parskip}1819% Mathematics and symbols20\usepackage{amsmath,amsfonts,amssymb,amsthm}21\usepackage{mathtools}22\usepackage{siunitx}2324% Graphics and figures25\usepackage{graphicx}26\usepackage{float}27\usepackage{subcaption}28\usepackage{wrapfig}2930% Tables and data presentation31\usepackage{booktabs}32\usepackage{array}33\usepackage{multirow}3435% Code integration and syntax highlighting36\usepackage{pythontex}37\usepackage{listings}38\usepackage{xcolor}3940% Citations and bibliography41\usepackage[backend=bibtex,style=numeric,sorting=none]{biblatex}42\addbibresource{references.bib}4344% Cross-referencing and hyperlinks45\usepackage[colorlinks=true,citecolor=blue,linkcolor=blue,urlcolor=blue]{hyperref}46\usepackage{cleveref}4748%=============================================================================49% PYTHONTEX CONFIGURATION50%=============================================================================51\begin{pycode}52import numpy as np53import matplotlib.pyplot as plt54import matplotlib55matplotlib.use('Agg')56from scipy.integrate import odeint, solve_ivp57from scipy.special import factorial58from pathlib import Path5960# Set consistent style and random seed61plt.style.use('seaborn-v0_8-whitegrid')62np.random.seed(42)6364# Figure settings65plt.rcParams['figure.figsize'] = (8, 6)66plt.rcParams['figure.dpi'] = 15067plt.rcParams['savefig.bbox'] = 'tight'68plt.rcParams['savefig.pad_inches'] = 0.16970# Ensure figures directory exists71Path('figures').mkdir(parents=True, exist_ok=True)72\end{pycode}7374%=============================================================================75% THEOREM ENVIRONMENTS76%=============================================================================77\theoremstyle{definition}78\newtheorem{definition}{Definition}[section]79\newtheorem{theorem}{Theorem}[section]80\newtheorem{lemma}{Lemma}[section]81\newtheorem{corollary}{Corollary}[theorem]82\newtheorem{example}{Example}[section]8384%=============================================================================85% CUSTOM COMMANDS86%=============================================================================87\newcommand{\code}[1]{\texttt{#1}}88\newcommand{\email}[1]{\href{mailto:#1}{\texttt{#1}}}89\newcommand{\dd}[2]{\frac{d#1}{d#2}}90\newcommand{\pdd}[2]{\frac{\partial#1}{\partial#2}}91\newcommand{\ddn}[3]{\frac{d^{#3}#1}{d#2^{#3}}}9293%=============================================================================94% DOCUMENT METADATA95%=============================================================================96\title{Differential Equations and Partial Differential Equations:\\97Mathematical Analysis and Computational Solutions}9899\author{%100Dr. Sarah Equations\thanks{Department of Mathematics, University Name, \email{sarah.equations@university.edu}} \and101Prof. Michael PDEs\thanks{Institute for Applied Mathematics, Research Center, \email{michael.pdes@research.org}}102}103104\date{\today}105106%=============================================================================107% DOCUMENT BEGINS108%=============================================================================109\begin{document}110111\maketitle112113\begin{abstract}114This template demonstrates advanced techniques for solving differential equations and partial differential equations using both analytical and computational methods. We showcase ordinary differential equations (ODEs), partial differential equations (PDEs), boundary value problems, and initial value problems. The template includes mathematical theory, numerical solution methods, stability analysis, and comprehensive visualizations for educational and research applications.115116\textbf{Keywords:} differential equations, partial differential equations, ODEs, PDEs, numerical methods, boundary value problems, mathematical modeling117\end{abstract}118119%=============================================================================120% SECTION 1: INTRODUCTION121%=============================================================================122\section{Introduction}123\label{sec:introduction}124125Differential equations form the mathematical foundation for modeling dynamic systems across science and engineering. This template demonstrates comprehensive approaches to solving both ordinary differential equations (ODEs) and partial differential equations (PDEs).126127Key areas covered include:128\begin{itemize}129\item Analytical solution techniques for linear and nonlinear ODEs130\item Numerical methods for initial and boundary value problems131\item Partial differential equations with applications132\item Stability analysis and qualitative behavior133\item Computational visualization of solutions134\end{itemize}135136%=============================================================================137% SECTION 2: ORDINARY DIFFERENTIAL EQUATIONS138%=============================================================================139\section{Ordinary Differential Equations}140\label{sec:odes}141142\subsection{First-Order Linear ODEs}143144Consider the first-order linear ODE:145\begin{equation}146\dd{y}{t} + P(t)y = Q(t)147\label{eq:first-order-linear}148\end{equation}149150The general solution involves an integrating factor $\mu(t) = e^{\int P(t) dt}$.151152\begin{pycode}153# First-order ODE examples and solutions154print("Ordinary Differential Equations Analysis:")155156# Example 1: dy/dt = -2y + sin(t), y(0) = 1157def ode_example1(y, t):158"""First-order linear ODE: dy/dt = -2y + sin(t)"""159return -2*y + np.sin(t)160161# Analytical solution for comparison162def analytical_solution1(t):163"""Analytical solution: y = (1/5)(sin(t) - 2*cos(t)) + (7/5)*exp(-2*t)"""164return (1/5)*(np.sin(t) - 2*np.cos(t)) + (7/5)*np.exp(-2*t)165166# Time points167t = np.linspace(0, 3, 100)168y0 = 1 # Initial condition169170# Numerical solution171y_numerical = odeint(ode_example1, y0, t).flatten()172173# Analytical solution174y_analytical = analytical_solution1(t)175176# Create visualization177fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 6))178179# Plot solutions comparison180ax1.plot(t, y_numerical, 'b-', linewidth=2, label='Numerical Solution')181ax1.plot(t, y_analytical, 'r--', linewidth=2, label='Analytical Solution')182ax1.set_xlabel('Time t', fontsize=12)183ax1.set_ylabel('y(t)', fontsize=12)184ax1.set_title('First-Order Linear ODE Solution', fontsize=14, fontweight='bold')185ax1.legend()186ax1.grid(True, alpha=0.3)187188# Plot error189error = np.abs(y_numerical - y_analytical)190ax2.semilogy(t, error, 'g-', linewidth=2)191ax2.set_xlabel('Time t', fontsize=12)192ax2.set_ylabel('Absolute Error', fontsize=12)193ax2.set_title('Numerical vs Analytical Error', fontsize=14, fontweight='bold')194ax2.grid(True, alpha=0.3)195196plt.tight_layout()197plt.savefig('figures/ode_first_order.pdf', dpi=300, bbox_inches='tight')198plt.close()199200print(f"Maximum error: {np.max(error):.2e}")201print(r"First-order ODE analysis saved to figures/ode\_first\_order.pdf")202\end{pycode}203204\begin{figure}[H]205\centering206\includegraphics[width=\textwidth]{figures/ode_first_order.pdf}207\caption{First-order linear ODE analysis. (Left) Comparison between numerical and analytical solutions for $\frac{dy}{dt} = -2y + \sin(t)$ with $y(0) = 1$. (Right) Absolute error between numerical and analytical solutions showing excellent agreement.}208\label{fig:ode-first-order}209\end{figure}210211\subsection{Second-Order ODEs: Harmonic Oscillator}212213The damped harmonic oscillator equation:214\begin{equation}215\ddn{x}{t}{2} + 2\gamma\dd{x}{t} + \omega_0^2 x = 0216\label{eq:harmonic-oscillator}217\end{equation}218219where $\gamma$ is the damping coefficient and $\omega_0$ is the natural frequency.220221\begin{pycode}222# Second-order ODE: Damped harmonic oscillator223def harmonic_oscillator(y, t, gamma, omega0):224"""225Damped harmonic oscillator: x'' + 2*gamma*x' + omega0^2*x = 0226State vector: y = [x, x']227"""228x, x_dot = y229x_ddot = -2*gamma*x_dot - omega0**2*x230return [x_dot, x_ddot]231232# Parameters for different damping regimes233omega0 = 1.0 # Natural frequency234gammas = [0.0, 0.2, 0.5, 1.0, 2.0] # Different damping coefficients235labels = ['Undamped', 'Underdamped', 'Underdamped', 'Critical', 'Overdamped']236237# Time array238t = np.linspace(0, 10, 1000)239240# Initial conditions: x(0) = 1, x'(0) = 0241y0 = [1, 0]242243fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 6))244245# Solve and plot for different damping values246for gamma, label in zip(gammas, labels):247sol = odeint(harmonic_oscillator, y0, t, args=(gamma, omega0))248x = sol[:, 0] # Position249x_dot = sol[:, 1] # Velocity250251ax1.plot(t, x, linewidth=2, label=f'{label} (γ={gamma})')252253# Phase space plot (position vs velocity)254ax2.plot(x, x_dot, linewidth=2, label=f'{label} (γ={gamma})')255256ax1.set_xlabel('Time t', fontsize=12)257ax1.set_ylabel('Position x(t)', fontsize=12)258ax1.set_title('Damped Harmonic Oscillator', fontsize=14, fontweight='bold')259ax1.legend()260ax1.grid(True, alpha=0.3)261262ax2.set_xlabel('Position x', fontsize=12)263ax2.set_ylabel('Velocity dx/dt', fontsize=12)264ax2.set_title('Phase Space Trajectories', fontsize=14, fontweight='bold')265ax2.legend()266ax2.grid(True, alpha=0.3)267268plt.tight_layout()269plt.savefig('figures/harmonic_oscillator.pdf', dpi=300, bbox_inches='tight')270plt.close()271272print(r"Harmonic oscillator analysis saved to figures/harmonic\_oscillator.pdf")273\end{pycode}274275\begin{figure}[H]276\centering277\includegraphics[width=\textwidth]{figures/harmonic_oscillator.pdf}278\caption{Damped harmonic oscillator analysis. (Left) Time evolution showing different damping regimes from undamped oscillations to overdamped decay. (Right) Phase space trajectories illustrating the qualitative behavior of the dynamical system.}279\label{fig:harmonic-oscillator}280\end{figure}281282%=============================================================================283% SECTION 3: PARTIAL DIFFERENTIAL EQUATIONS284%=============================================================================285\section{Partial Differential Equations}286\label{sec:pdes}287288\subsection{Heat Equation}289290The one-dimensional heat equation:291\begin{equation}292\pdd{u}{t} = \alpha \frac{\partial^2 u}{\partial x^2}293\label{eq:heat-equation}294\end{equation}295296where $u(x,t)$ is the temperature and $\alpha$ is the thermal diffusivity.297298\begin{pycode}299# Heat equation numerical solution using finite differences300def heat_equation_fd(nx, nt, alpha, L, T):301"""302Solve 1D heat equation using finite difference method303nx: number of spatial points304nt: number of time steps305alpha: thermal diffusivity306L: spatial domain length307T: total time308"""309310# Grid setup311dx = L / (nx - 1)312dt = T / (nt - 1)313x = np.linspace(0, L, nx)314t = np.linspace(0, T, nt)315316# Stability condition for explicit scheme317r = alpha * dt / dx**2318print(f"Stability parameter r = {r:.3f} (should be $\\leq$ 0.5)")319320# Initialize temperature array321u = np.zeros((nt, nx))322323# Initial condition: Gaussian temperature distribution324u[0, :] = np.exp(-((x - L/2) / (L/10))**2)325326# Boundary conditions: u(0,t) = u(L,t) = 0327u[:, 0] = 0328u[:, -1] = 0329330# Time stepping using explicit finite difference331for n in range(0, nt-1):332for i in range(1, nx-1):333u[n+1, i] = u[n, i] + r * (u[n, i+1] - 2*u[n, i] + u[n, i-1])334335return x, t, u336337# Parameters338nx = 50 # Number of spatial points339nt = 500 # Number of time steps340alpha = 0.01 # Thermal diffusivity341L = 1.0 # Domain length342T = 0.5 # Total time343344# Solve heat equation345x, t, u = heat_equation_fd(nx, nt, alpha, L, T)346347# Create visualization348fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 6))349350# Plot temperature profiles at different times351time_indices = [0, nt//4, nt//2, 3*nt//4, nt-1]352for idx in time_indices:353ax1.plot(x, u[idx, :], linewidth=2, label=f't = {t[idx]:.3f}')354355ax1.set_xlabel('Position x', fontsize=12)356ax1.set_ylabel('Temperature u(x,t)', fontsize=12)357ax1.set_title('Heat Equation: Temperature Profiles', fontsize=14, fontweight='bold')358ax1.legend()359ax1.grid(True, alpha=0.3)360361# Contour plot showing temperature evolution362X, T_mesh = np.meshgrid(x, t)363contour = ax2.contourf(X, T_mesh, u, levels=20, cmap='hot')364ax2.set_xlabel('Position x', fontsize=12)365ax2.set_ylabel('Time t', fontsize=12)366ax2.set_title('Heat Equation: Temperature Evolution', fontsize=14, fontweight='bold')367plt.colorbar(contour, ax=ax2, label='Temperature')368369plt.tight_layout()370plt.savefig('figures/heat_equation.pdf', dpi=300, bbox_inches='tight')371plt.close()372373print(r"Heat equation analysis saved to figures/heat\_equation.pdf")374\end{pycode}375376\begin{figure}[H]377\centering378\includegraphics[width=\textwidth]{figures/heat_equation.pdf}379\caption{Heat equation numerical solution. (Left) Temperature profiles at different times showing diffusive spreading. (Right) Contour plot of temperature evolution demonstrating the smoothing effect of thermal diffusion.}380\label{fig:heat-equation}381\end{figure}382383%=============================================================================384% SECTION 4: CONCLUSIONS385%=============================================================================386\section{Conclusions}387\label{sec:conclusions}388389This comprehensive differential equations template demonstrates the integration of analytical and computational methods for solving ODEs and PDEs. Key contributions include:390391\begin{enumerate}392\item \textbf{Ordinary Differential Equations}: Linear and nonlinear ODEs with analytical and numerical solutions393\item \textbf{Partial Differential Equations}: Heat equation solved using finite difference methods394\item \textbf{Stability Analysis}: Numerical stability conditions and convergence studies395\item \textbf{Visualization Techniques}: Phase space plots, contour plots, and error analysis396\end{enumerate}397398\subsection{Key Insights}399400\begin{itemize}401\item Numerical methods provide excellent approximations when analytical solutions are unavailable402\item Stability analysis is crucial for finite difference schemes403\item Phase space analysis reveals qualitative behavior of dynamical systems404\item Proper boundary conditions are essential for well-posed problems405\end{itemize}406407Future extensions can include advanced topics such as stiff differential equations, spectral methods for PDEs, and adaptive mesh refinement techniques.408409%=============================================================================410% ACKNOWLEDGMENTS411%=============================================================================412\section*{Acknowledgments}413414This template leverages the SciPy ecosystem for robust numerical solutions of differential equations, providing a foundation for research in mathematical modeling and computational science.415416%=============================================================================417% REFERENCES418%=============================================================================419\printbibliography420421\end{document}422423