Introduction

The Nature of Mathematical Modeling (draft)

Background

download.jpeg

  • The original Cambridge University Press text
    • issues with discipline-centric modeling
    • survey with three goals
      • introduce concepts
      • implement examples
      • provide pointers for further study
  • Second edition not converging
    • core concepts unchanged
    • ongoing proliferation of tools and applications
  • V2 replaces static text with dynamic notebooks

Applications

Projects based on the class have included:

  • Data analytics
  • Music synthesis
  • Physics simulation
  • Movie special effects
  • Motion control systems
  • Engineering design optimization
  • Microelectronics signal processing

Questions

Questions to 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?
    • PDB?
    • 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 to 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
  • V2 problems are more open-ended, requiring judgement and creativity

(c) Neil Gershenfeld 1/4/26