{ "cells": [ { "cell_type": "markdown", "metadata": { "nbpages": { "level": 0, "link": "[](https://jckantor.github.io/CBE32338/02.11-TCLab-Lab-2-Fitting.html)", "section": "" } }, "source": [ "\n", "*This notebook contains material from [CBE32338](https://jckantor.github.io/CBE32338);\n", "content is available [on Github](https://github.com/jckantor/CBE32338.git).*\n" ] }, { "cell_type": "markdown", "metadata": { "nbpages": { "level": 0, "link": "[](https://jckantor.github.io/CBE32338/02.11-TCLab-Lab-2-Fitting.html)", "section": "" } }, "source": [ "\n", "< [2.10 TCLab Lab 2: Model Identification](https://jckantor.github.io/CBE32338/02.10-TCLab-Lab-2-Model-Indentification.html) | [Contents](toc.html) | [3.0 State Estimation](https://jckantor.github.io/CBE32338/03.00-State-Estimation.html) >
"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# IMPORT DATA FILES USED BY THIS NOTEBOOK\n",
"import os, requests\n",
"\n",
"file_links = [(\"data/tclab-data.csv\", \"https://jckantor.github.io/CBE32338/data/tclab-data.csv\")]\n",
"\n",
"# This cell has been added by nbpages. Run this cell to download data files required for this notebook.\n",
"\n",
"for filepath, fileurl in file_links:\n",
" stem, filename = os.path.split(filepath)\n",
" if stem:\n",
" if not os.path.exists(stem):\n",
" os.mkdir(stem)\n",
" if not os.path.isfile(filepath):\n",
" with open(filepath, 'wb') as f:\n",
" response = requests.get(fileurl)\n",
" f.write(response.content)\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 1,
"link": "[2.11 Model Identification: Fitting models to data](https://jckantor.github.io/CBE32338/02.11-TCLab-Lab-2-Fitting.html#2.11-Model-Identification:-Fitting-models-to-data)",
"section": "2.11 Model Identification: Fitting models to data"
}
},
"source": [
"# 2.11 Model Identification: Fitting models to data\n",
"\n",
"Given the data from an identification experiment, the next task is to find one or more models that accurately reproduce the process response to changes in the manipulated variable. This notebook demonsrates a practical approach to fitting low-order models to step response data."
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 2,
"link": "[2.11.1 Initializations](https://jckantor.github.io/CBE32338/02.11-TCLab-Lab-2-Fitting.html#2.11.1-Initializations)",
"section": "2.11.1 Initializations"
}
},
"source": [
"## 2.11.1 Initializations"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"nbpages": {
"level": 2,
"link": "[2.11.1 Initializations](https://jckantor.github.io/CBE32338/02.11-TCLab-Lab-2-Fitting.html#2.11.1-Initializations)",
"section": "2.11.1 Initializations"
}
},
"outputs": [],
"source": [
"%matplotlib inline\n",
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"\n",
"from scipy.integrate import odeint\n",
"from scipy.optimize import minimize"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[2.11.1.1 Reading data](https://jckantor.github.io/CBE32338/02.11-TCLab-Lab-2-Fitting.html#2.11.1.1-Reading-data)",
"section": "2.11.1.1 Reading data"
}
},
"source": [
"### 2.11.1.1 Reading data\n",
"\n",
"The following cell reads previously stored experimental step response data."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"nbpages": {
"level": 3,
"link": "[2.11.1.1 Reading data](https://jckantor.github.io/CBE32338/02.11-TCLab-Lab-2-Fitting.html#2.11.1.1-Reading-data)",
"section": "2.11.1.1 Reading data"
}
},
"outputs": [],
"source": [
"df = pd.read_csv(\"tclab-data.csv\")\n",
"t = np.array(df[\"Time\"])\n",
"T1 = np.array(df[\"T1\"])\n",
"T2 = np.array(df[\"T2\"])\n",
"Q1 = np.array(df[\"Q1\"])\n",
"Q2 = np.array(df[\"Q2\"])"
]
},
{
"cell_type": "markdown",
"metadata": {
"nbpages": {
"level": 3,
"link": "[2.11.1.2 Plotting function](https://jckantor.github.io/CBE32338/02.11-TCLab-Lab-2-Fitting.html#2.11.1.2-Plotting-function)",
"section": "2.11.1.2 Plotting function"
}
},
"source": [
"### 2.11.1.2 Plotting function\n",
"\n",
"The following simple data plotting function is used in this notebooke to compare experimental data to model predictions. "
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"nbpages": {
"level": 3,
"link": "[2.11.1.2 Plotting function](https://jckantor.github.io/CBE32338/02.11-TCLab-Lab-2-Fitting.html#2.11.1.2-Plotting-function)",
"section": "2.11.1.2 Plotting function"
}
},
"outputs": [
{
"data": {
"image/png": "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W4C/AqnAk+6+2Mx+DBS5+xTgCeB3ZrYc2EisCAI4C/ixmVUB1cBN7r4x8VmIiIg0XElJCZmZmeTm5rL3nJlt27aRmZkZcmTx1dQc3Z3y8nJKSkrIy8tr0DJhbsHB3d8A3qjT9sNaryuBK+pZ7mXg5bgHKCIi0owqKyv3K26kYcyMrKwsysrKGryMrmQsIiKSQCpuGudI/91U4IiIiEjkhLqLSkRERBKnvLycMWPGALB27VpSU1Pp3j12EeDZs2fTrl27uK4/IyODioqKuK5jLxU4IiIiSSIrK4v58+cDMHHiRDIyMrj99tubNGZ1dTWpqanNEV6zUoEjIiISgnv+vJgPSrc2a4FwUs9O/Ojigc0y1sqVKxk7dizDhw9n3rx59OvXj2eeeYb09HRyc3O54YYbeOutt7jllls4/fTTufnmmykrKyM9PZ3HH3+cE088kRUrVnD11Veza9cuLrzwwmaJq6F0DI6IiIjUa+nSpYwfP56FCxfSqVMnfvWrX+2bl5aWxjvvvMOVV17J+PHj+d///V+Ki4v5+c9/zre//W0Abr31ViZMmMDf//53jjnmmITGftAtOGbWB8h293frtJ8JlLr7x/EOTkREJKr2bmlpydfB6dWrF6NGjQLg2muv5eGHH963S+vrX/86ELvP1HvvvccVV3x+VZddu3YB8O677/Lyyy9TWVnJddddx5133pmw2A+1BedBYFs97TuDeSIiIhJhdU/Nrj3dsWNHAGpqaujSpQvz58/f96h91eLDnd79yCOPMHjwYAYPHkxpad07NjXeoQqcXHdfWLfR3YuA3GaLQERERFqkVatWMWPGDACef/55zjjjjAP6dOrUiby8PF588UUgdtXhBQsWADBq1CgmT54MwHPPPVfvOm6++eZ9hVHPnj2bLfZDFThph5jXodkiEBERkRZpwIABPP3005x66qls3LiRCRMm1Nvvueee44knnmDQoEEMHDiQV199FYCHHnqIRx55hC9+8Yts2bIlkaEf8iyqOWb2r+7+eO1GM7sRKI5vWCIiIhJPEydOPGyflJQUHn300QPaV65cud90Xl4eb7755gH98vLymDFjxr7jjO66667GhnvEDlXg3Aa8YmbX8HlBkw+0A74c78BEREREGuugBY67rwO+YGajgZOD5tfdfVpCIhMREZG4q31149qmTp3KokWLQoioeRz2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\n",
"text/plain": [
"
"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}