Files
risonanza/osc_attr.ipynb

284 lines
6.8 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "9c25e271",
"metadata": {},
"outputs": [],
"source": [
"import importlib\n",
"from statlib import *\n",
"\n",
"g = 9.806\n",
"ug = 0.004"
]
},
{
"cell_type": "markdown",
"id": "233e717f",
"metadata": {},
"source": [
"# Calcolo w0"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e1efad4a",
"metadata": {},
"outputs": [],
"source": [
"# k e m varie configurazioni\n",
"\n",
"# k [N/m]\n",
"k1 = 23.631\n",
"uk1 = 0.017\n",
"\n",
"k2 = 3.2053\n",
"uk2 = 0.0013\n",
"\n",
"# m [g]\n",
"m_CD = [63.13, 83.04, 103.02, 122.83, 142.77, 162.44, 182.33]\n",
"m_rete = [58.96, 78.86, 98.85, 118.66, 138.61, 158.26, 178.16]"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "81d935ac",
"metadata": {},
"outputs": [],
"source": [
"# Creazione Data\n",
"\n",
"df = pd.DataFrame()\n",
"df[\"m_CD\"] = m_CD\n",
"df[\"um_CD\"] = 0.01/np.sqrt(12)\n",
"df[\"m_rete\"] = m_rete\n",
"df[\"um_rete\"] = 0.01/np.sqrt(12)\n",
"df[\"k1\"] = k1\n",
"df[\"uk1\"] = uk1\n",
"df[\"k2\"] = k2\n",
"df[\"uk2\"] = uk2\n",
"\n",
"param_sistema = Data(df)\n",
"param_sistema.analisi_stat = df"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "7b2c2af7",
"metadata": {},
"outputs": [],
"source": [
"# Calcolo w0 varie cnfigurazioni\n",
"\n",
"m_CD, m_rete, k1, k2 = sp.symbols('m_CD, m_rete, k1, k2', positive=True)\n",
"\n",
"w0_1_CD = sp.sqrt(k1/(m_CD/1000))\n",
"w0_1_rete = sp.sqrt(k1/(m_rete/1000))\n",
"w0_2_CD = sp.sqrt(k2/(m_CD/1000))\n",
"w0_2_rete = sp.sqrt(k2/(m_rete/1000))\n",
"\n",
"param_sistema = param_sistema.calc_var(w0_1_CD, \"w0_1_CD\")\n",
"param_sistema = param_sistema.calc_var(w0_1_rete, \"w0_1_rete\")\n",
"param_sistema = param_sistema.calc_var(w0_2_CD, \"w0_2_CD\")\n",
"param_sistema = param_sistema.calc_var(w0_2_rete, \"w0_2_rete\")"
]
},
{
"cell_type": "markdown",
"id": "ecf23a81",
"metadata": {},
"source": [
"# Creazione classi dati\n",
"\n",
"Selezione picchi delle oscillazioni"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "c040f35e",
"metadata": {},
"outputs": [],
"source": [
"config = [molla1_leggera_rete_inizio, molla1_leggera_rete_fine, molla1_leggera_rete_mid,\n",
" molla1_pesante_rete_inizio, molla1_pesante_rete_fine, molla1_pesante_rete_mid,\n",
" molla1_leggera_CD_inizio, molla1_leggera_CD_fine, molla1_leggera_CD_mid,\n",
" molla1_pesante_CD_inizio, molla1_pesante_CD_fine, molla1_pesante_CD_mid,\n",
" molla2_leggera_rete_inizio, molla2_leggera_rete_fine, molla2_leggera_rete_mid,\n",
" molla2_pesante_rete_inizio, molla2_pesante_rete_fine, molla2_pesante_rete_mid,\n",
" molla2_leggera_CD_inizio, molla2_leggera_CD_fine, molla2_leggera_CD_mid,\n",
" molla2_pesante_CD_inizio, molla2_pesante_CD_fine, molla2_pesante_CD_mid]"
]
},
{
"cell_type": "markdown",
"id": "3b522bfe",
"metadata": {},
"source": [
"# Rgressione lineare"
]
},
{
"cell_type": "markdown",
"id": "30f903b5",
"metadata": {},
"source": [
"## Attrito proporzionale a v"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "64e483e1",
"metadata": {},
"outputs": [],
"source": [
"# Calcolo simbolico x e y\n",
"\n",
"# x = n-1\n",
"n = sp.Symbol('n', positive=True)\n",
"x = n-1\n",
"\n",
"# y = ln(h1/hn)\n",
"h1, hn = sp.symbols('h1 hn', positive=True)\n",
"y = sp.ln(h1/hn)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "b0df03fc",
"metadata": {},
"outputs": [],
"source": [
"# Calcolo numerico x e y\n",
"\n",
"for data in config:\n",
" data = data.calc_var(x, \"x\")\n",
" data = data.calc_var(y, \"y\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "497ed583",
"metadata": {},
"outputs": [],
"source": [
"# Regressione\n",
"\n",
"for data in config:\n",
" data = data.reg_lin(stampa_param=True, plot_regressione=True, calc_residui=True,\n",
" x_label=\"\", y_label=\"\", r_label=\"\",\n",
" titolo_reg=\"\", titolo_residui=\"\",\n",
" cd_A=4, cd_B=4, scala_barre=1)"
]
},
{
"cell_type": "markdown",
"id": "453d5b53",
"metadata": {},
"source": [
"## Attrito proporzionale a v^2"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "cdb8d336",
"metadata": {},
"outputs": [],
"source": [
"# Calcolo simbolico x e y\n",
"\n",
"# x = n-1\n",
"n = sp.Symbol('n', positive=True)\n",
"x = n-1\n",
"\n",
"# y = 1/hn - 1/h1\n",
"h1, hn = sp.symbols('h1 hn', positive=True)\n",
"y = 1/hn - 1/h1"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "84ad3d64",
"metadata": {},
"outputs": [],
"source": [
"# Calcolo numerico x e y\n",
"\n",
"for data in config:\n",
" data = data.calc_var(x, \"x\")\n",
" data = data.calc_var(y, \"y\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "8fee50b3",
"metadata": {},
"outputs": [],
"source": [
"# Regressione\n",
"\n",
"for data in config:\n",
" data = data.reg_lin(stampa_param=True, plot_regressione=True, calc_residui=True,\n",
" x_label=\"\", y_label=\"\", r_label=\"\",\n",
" titolo_reg=\"\", titolo_residui=\"\",\n",
" cd_A=4, cd_B=4, scala_barre=1)"
]
},
{
"cell_type": "markdown",
"id": "dc3ce36f",
"metadata": {},
"source": [
"# Stima errore campionamento"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "513736c3",
"metadata": {},
"outputs": [],
"source": [
"A_max =\n",
"w0_max =\n",
"fc = 50 # [Hz]\n",
"\n",
"err_picco_max = A_max * (1 - np.cos(w0_max / (2*fc)))\n",
"print(f\"errore massimo individuazione picco > {err_picco_max}\")"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "base",
"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.13.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}