71 lines
1.8 KiB
Plaintext
71 lines
1.8 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "62ac3700",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import sys\n",
|
|
"sys.path.append(\"../modules\")\n",
|
|
"import numpy as np"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "3d7375ae",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Data Fitting\n",
|
|
"\n",
|
|
"It is approximate fit, which allows some errors depending on noise model.\n",
|
|
"\n",
|
|
"## Least-Square Data Fitting\n",
|
|
"\n",
|
|
"Given $N$ data points and a models has $M$ adjustable parameters.\n",
|
|
"\n",
|
|
"find $\\mathbf{a} = \\begin{bmatrix}a_1, a_2, \\cdots, a_M\\end{bmatrix}$ that minimizes $$S = \\sum_{i=1}^N{[y_i - y(x_i; \\mathbf{a})]^2}$$\n",
|
|
"\n",
|
|
"It is also equivalent to **maximum likelihood estimation** if $e_i$ is **independently distributed Gaussian**.\n",
|
|
"\n",
|
|
"\n",
|
|
"### Line Fitting\n",
|
|
"\n",
|
|
"$y = a + bx, \\quad e_i = y_i - (a + bx)$\n",
|
|
"\n",
|
|
"$S(a, b) = \\sum_{i = 1}^{N}e_i^2$\n",
|
|
"\n",
|
|
"$$\\begin{align*}\n",
|
|
"\\frac{\\partial S}{\\partial a} &= 2\\sum_{i = 1}^N [y_i-a-bx_i](-1) = 0\\\\\n",
|
|
"\\frac{\\partial S}{\\partial b} &= 2\\sum_{i = 1}^N [y_i =a - bx_i](-x_i) = 0\\\\\n",
|
|
"\\end{align*}$$\n",
|
|
"\n",
|
|
"$$\\begin{align*}\n",
|
|
"a\\sum 1 + b\\sum x_i &= \\sum y_i\\\\\n",
|
|
"a\\sum x_i + b \\sum x_i^2 &= \\sum x_iy_i\n",
|
|
"\\end{align*}$$\n",
|
|
"\n",
|
|
"$$\\therefore \\begin{bmatrix}\n",
|
|
"a \\\\ b\n",
|
|
"\\end{bmatrix} = \\begin{bmatrix}\n",
|
|
"\\sum 1 & \\sum x_i \\\\\n",
|
|
"\\sum x_i & \\sum x_i^2 \\\\\n",
|
|
"\\end{bmatrix}^{-1} \\begin{bmatrix}\n",
|
|
" \\sum y_i \\\\ \\sum x_i y_i\n",
|
|
"\\end{bmatrix}$$\n",
|
|
"\n",
|
|
"\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"language_info": {
|
|
"name": "python"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|