{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Programmare in Python\n", "\n", "Leggete attentamente il testo di ciascun esercizio. Il primo passo deve essere la comprensione del problema, partendo dall'individuazione di quali dati sono necessari per calcolare la quantità richiesta.\n", "Assegnate i valori di input a delle variabili ed esprimete le formule necessarie in termini di queste variabili.\n", "Fate scrivere il risultato in modo chiaro e descrittivo.\n", "\n", "### Esempio\n", "\n", "__- Calcolare la somma di due numeri.__" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "La somma di 3.1 + 4.7 = 7.800000000000001\n" ] } ], "source": [ "a = 3.1\n", "b = 4.7\n", "c = a + b\n", "print('La somma di',a,'+',b,'=',c)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__- Scrivete una funzione che prenda come input due numeri n1 e n2 e restituisca la radice quadrata del loro prodotto.__" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import math\n", "def my_f(n1,n2):\n", " return math.sqrt(n1*n2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Test della funzione:__" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "3.0" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "my_f(3,3.)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0\n" ] } ], "source": [ "res = my_f(0.,3.9e+34)\n", "print(res)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Trigonometria di base\n", "---------------------\n", "\n", "![](../Images/SinCos_def.gif)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Esercizi: Primi passi" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__1 - Calcolate:__\n", "- __Il coseno iperbolico di -37.5.__\n", "- __Il seno di 3.20 radianti.__\n", "- __Il coseno di 137.42 gradi.__\n", "- __L'angolo il cui seno è -0.001.__\n", "- __L'ipotenusa di un triangolo rettangolo i cui cateti misurano 4.5 metri e 7.82 metri.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__2 - Assegnate alla variabile `pippo` il valore 6.2.__
\n", "__Calcolate:__\n", "- __Il quadrato di `pippo`.__\n", "- __L'esponenziale di -`pippo`.__\n", "- __La radice terza di `pippo` alla quarta potenza.__\n", "- __L'inverso di `pippo`.__ \n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__3 - Verificare che la funzione `exp` ritorna $e^x$. Questo significa calcolare la funzione `exp` in punti `x` nei quali sappiamo quale deve essere il risultato e controllare che l'output della funzione coincida con il valore atteso.__" ] }, { "cell_type": "markdown", "metadata": {}, "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__4 - Problema concettuale, non è scrivere il codice per risolverlo.
\n", " Supponete di conoscere il seno e il coseno di un angolo alfa. Come si può trovare il valore di alfa? Provate la vostra soluzione per gli angoli $\\pi/3$ e $7\\pi/6$ (perchè non possono essere seni o coseni di un angolo?).__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__5 - Dato come input le coordinate cartesiane di un punto `p` del piano, trovare la distanza di `p` dall'origine e l'angolo che il vettore che unisce l'origine al punto `p` forma con l'asse `x` (rappresentazione polare).__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__6 - Dato come input la distanza dall'origine e l'angolo che un vettore bidimensionale `p` forma con l'asse `x` (rappresentazione polare), trovare le componenti lungo gli assi.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__7 - Problema concettuale, non è scrivere il codice per risolverlo.
\n", " Le radici di una equazione algebrica di grado $n$, $y(x) = a_n x^n + \\cdots + a_1 x +a_0$, sono i valori di $x$ per cui $y = 0$. Che cosa devo conoscere per calcolare la radice di un'equazione algebrica di primo grado ($a x + b = 0$)? Ovvero, quali sono gli input necessari fra $a$, $b$ e $x$? Come devo combinare questi input? Se invece il compito fosse quello di disegnare la curva, che dati mi servono?__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__8 - Dato come input un angolo `alfa`, calcolare il seno e il coseno di 2\\*alfa usando le formule di duplicazione.\n", "Calcolare la differenza relativa fra il risultato ottenuto e quello che si ottiene calcolando direttamente sin(2\\*alfa) e cos(2\\*alfa).__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__9 - Dato un capitale iniziale C, il tasso di interesse annuale T e il numero di anni N, calcolare il capitale alla scadenza, assumendo che alla fine di ogni anno gli interessi vengano aggiunti al capitale. Suggerimento: alla fine del primo anno il capitale è C*(1+T).__" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "tags": [] }, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__10 - Calcolare il punto medio di un segmento nel piano. Che input sono necessari?__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__11 - scrivete una funzione f(n) che, dato un numero intero n minore di 10, calcoli n + nn + nnn (per esempio se n=2 calcoli 2 + 22 + 222).__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__12 - Scrivete una funzione che prenda come input le coordinate di un punto del piano, `px` e `py,` e restituisca la sua distanza dall'origine. Verificate la vostra soluzione per i punti (0,3), (1,2), (3,4).__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__13 - L'aliquota IVA è il 22%. Scrivete una funzione che prenda come input il prezzo di vendita di un prodotto in euro, `p`, e restituisca il prezzo prima di applicare l'IVA e l'imposta applicata.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__14 - Scrivete una funzione che prenda come input la lunghezza, `L` di un lato di un triangolo e l'altezza corrispondente, `H`, e restituisca l'area del triangolo. Verificate che la funzione sia corretta applicandola a casi di cui potete calcolare facilmente il risultato.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__15 - Scrivete una funzione che prenda come input le lunghezze dei tre lati di un triangolo e restituisca l'area usando la formula di Erone (Cercatela su Google!). Verificate la risposta. Posso scegliere qualunque valore per le lunghezze dei tre lati?__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__16 - Scrivete una funzione che calcoli la superficie e il volume di un cilindro. Quali sono gli input necessari?__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__17 - Scrivete una funzione prenda come input il raggio `R` di una circonferenza e un angolo `theta`. La funzione restituisca la lunghezza dell'arco di circonferenza corrispondente all'input.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__18 - Scrivete una funzione che calcoli l'area di un settore circolare di angolo al centro `theta`.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__19 - Scrivete una funzione che restituisca la radice quadrata e l'esponenziale di un numero `R`.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__20 - Scrivere, senza usare la funzione `math.radians`, una funzione che trasformi un angolo da gradi a radianti.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__21 - Scrivere, senza usare la funzione `math.degrees`, una funzione che trasformi un angolo da radianti a gradi.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__22 - Usate `math.radians` e `math.degrees` per verificare le vostre soluzioni agli esercizi 12 e 13.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__23 - Scrivete una unica funzione che restituisca il valore numerico delle seguenti espressioni:__\n", "\n", "$$ a = \\frac{3 + e^{2.3}}{\\sqrt{13} - 2}, \\quad b = \\frac{1 - (0.5 + \\ln 2)^{1.4}}{1 + \\pi} , \\quad c = \\sin\\left( \\frac{2 - \\sqrt{2}}{2 - \\sqrt{2}}\\right)$$\n", "\n", "__Quali input sono necessari?__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__24 - Scrivere una funzione che calcoli l'area di un triangolo usando la lunghezza di due lati adiacenti e l'ampiezza dell'angolo compreso.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__25 - Dato come input il tempo `T`, calcolare la posizione di un corpo di massa `M` che si muove, lungo la verticale, nel campo gravitazionale terrestre con `g = 9.81 m/s**2`. Quali informazioni sono necessarie per poter rispondere? Scrivere una funzione che fornisca la risposta.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__26 - Determinare il maggiore fra $100^{99}$ e $\\,99^{100}$.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__27 -In una piastra di Petri sono presenti N0 batteri. In ogni minuto una frazione `g` (compresa fra 0 e 1) di batteri si divide in due. \n", "Costruite una funzione `batteri(g,m)` che determini di quale fattore è aumentato il numero di batteri presente nel contenitore di Petri dopo `m` minuti.__
\n", "__(Non è necessario conoscere N0. Si richiede solo il fattore per cui viene moltiplicato N0 dopo `m` minuti).__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Per ripassare" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__Scrivete una funzione che calcoli la velocità di fuga da un corpo celeste di massa `M` e raggio `R`.\n", "Testate la funzione con i dati della Terra e della Luna.__" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "hide_input": false, "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.12" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": true, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }