Introduction¶
The Nature of Mathematical Modeling (draft)¶
Background¶
- The original Cambridge University Press text
- was written in response to encountering issues in discipline-centric modeling
- is a survey with three goals
- introduce concepts
- implement examples
- provide pointers for further study
- The second edition was not converging
- core concepts were largely unchanged
- there was an ongoing proliferation of tools and applications
- This version (V2) replaces the static text with dynamic notebooks
Topics¶
- Introduction
- Mathematical Computing
- Linear Algebra and Calculus
- Differential and Difference Equations
- Finite Differences
- Finite Elements
- Discrete Elements
- Random Systems
- Transforms
- Function Fitting
- Neural Networks
- Search
- State and Density Estimation
- Constrained Optimization
- Machine Learning
Applications¶
Projects for and from the class have included:
- Data analytics
- Music synthesis
- Physics simulations
- Movie special effects
- Motion control systems
- Engineering design optimization
- Microelectronics signal processing
Questions¶
Questions that will be answered:
- When should you use a:
- SVD?
- SVM?
- HMM?
- GMM?
- CWM?
- CNN?
- RNN?
- RBF?
- VAE?
- GAN?
- LLM?
- PINN?
- When should you apply:
- MD?
- DEM?
- MIPS?
- MPM?
- PBD?
- LBM?
- FEM?
- PCA?
- ICA?
- When should you employ:
- analytical methods?
- numerical methods?
- data-driven methods?
- How do you represent:
- beliefs?
- expectations?
- uncertainty?
- How do you search:
- with a model?
- without a model?
- How do you program:
- 2 cores?
- 2000 cores?
- 2000000 cores?
Types of Models¶
Spaces that will be explored:
import matplotlib.pyplot as plt
pitch = 0.4
width = 7
height = 3
margin = 1
fig,ax = plt.subplots(figsize=(width,height))
ax.axis([0,width,0,height])
ax.set_axis_off()
def left_text(text,row):
ax.text(margin,height-row*pitch,text,
ha='right',va='center',
fontsize=0.5*pitch*72,color='black')
def right_text(text,row):
ax.text(width-margin,height-row*pitch,text,
ha='left',va='center',
fontsize=0.5*pitch*72,color='black')
def arrow(row):
ax.annotate('',xy=(1.15*margin,height-row*pitch),xytext=(width-2*margin,height-row*pitch),
arrowprops=dict(color='black',width=1.5,headwidth=8,headlength=14))
ax.annotate('',xy=(width-1.15*margin,height-row*pitch),xytext=(2*margin,height-row*pitch),
arrowprops=dict(color='black',width=1.5,headwidth=8,headlength=14))
def entry(left,right,row):
left_text(left,row)
right_text(right,row)
arrow(row)
entry('specific','general',1)
entry('estimation','derivation',2)
entry('numerical','analytical',3)
entry('stochastic','deterministic',4)
entry('microscopic','macroscopic',5)
entry('discrete','continuous',6)
entry('qualitative','quantitative',7)
plt.show()
Problems¶
- First edition problems statements are equivalent to large language model prompts
- New V2 problems are more open-ended, requiring judgement and creativity
(c) Neil Gershenfeld 1/23/26