{ "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 }