sabato 20 giugno 2015

Quesito con la Susi n. 925

Susi si sta godendo una vacanza al mare senza Gianni e perciò s'illude di poter fare domande senza che qualcuno le ponga dei quesiti… Invece, niente da fare: «le sue domande le si ritorcono contro come un boomerang».

Alcuni ragazzini giocano a biglie sulla spiaggia e Susi avvicina tre di loro. Dopo le presentazioni, che supponiamo dal fatto che Susi chiami per nome due dei tre bambini (Dario, Luca e Carlo), si lascia prendere da una strana curiosità: vuol sapere quante biglie ciascuno dei tre ha nel sacchetto.

Stranamente i tre giovanissimi giocatori si comportano come Gianni e i suoi amici che gli reggono sempre il gioco quando propone a Susi i suoi quesiti…

Dai testi delle vignette1 otteniamo tre equazioni in tre incognite2 (con C ho indicato il numero di biglie che ha Carlo, con D quello di Dario e con L quello di Luca).

\[ \begin{alignat*}{4} C & {}+{} & 2D & {}+{} & L & {}={} & 100 \\ C & & & {}-{} & 3L & {}={} & 6 \\ C & {}-{} & 2D & & & {}={} & 3
\end{alignat*} \]

Possiamo risolvere il sistema in diversi modi, procedendo come di consueto (per chi si ricorda come si fa…) sommando o sottraendo le equazioni, eventualmente dopo averle moltiplicate o divise per opportune costanti3, oppure procedendo per sostituzione, o con le matrici, o… Una volta “convertito” il testo nel suo equivalente matematico, un sistema di tre equazioni in tre incognite, la difficoltà sta proprio nel risolvere tale sistema.

Ora la cosa interessante da notare è che per arrivare alla soluzione del quesito non è necessario aver studiato i sistemi di equazioni e ricordarsi le “tecniche” per risolverli… Serve un po' di familiarità con le equazioni in generale (cioè, diciamo, bisogna saper manipolare algebricamente quantità ignote) e saper seguire una “logica”: forse in questo modo si arriva spontaneamente alla soluzione tramite sostituzioni successive, e senza sapere di aver risolto un sistema (semplice) di equazioni! D'altra parte, chi si ricorda i sistemi di equazioni dovrebbe trovare naturale impostare il problema proprio come sistema di equazioni: dalle affermazioni dei bambini è ovvio che abbiamo sotto gli occhi alcune relazioni che legano tra loro diverse quantità ignote.

Calcolatrici per fare due più due

A questo punto dovreste essere arrivati alla soluzione. In fondo in fondo, se la matematica non vi spaventa, il problema è banale. Tutti i quesiti della Susi sono risolvibili con carta e penna (e, ça va sans dire, un po' di cervello), ma in questo blog ho iniziato, in Un quesito con la Susi, a sfruttare il computer per trovare le soluzioni.

Spero che sia stato subito chiaro che ciò non significa copiare e incollare il problema e lasciare che il computer magicamente trovi la soluzione. In un certo senso il problema “come trovare la soluzione” è stato trasformato in un altro tipo di problema, ”come codificare la ricerca della soluzione in modo che possa essere trovata da un computer”. Servono competenze e conoscenze diverse da quelle necessarie per risolvere da sé il problema originale; però nello stesso tempo è necessario capire il problema, la sua natura e avere già un'idea di come possa essere risolto. Poi, alla fine, come possiamo essere certi di aver “codificato” correttamente la ricerca della soluzione se non possiamo paragonare il risultato ottenuto dall'elaborazione meccanica? In pratica torna utile avere la soluzione e quindi risolvere il problema originale; essere consapevoli di come risolviamo il problema originale ci dà le idee per poter “insegnare” ad un computer a risolverlo per noi…4

Si ricrederanno, a questo punto, quelli che hanno storto il naso pensando che l'uso di un computer tolga il divertimento? Non lo so. Posso solo assicurare che è un altro tipo di divertimento (e allenamento) mentale.

Quanto detto vale senza dubbio per il problema n. 921 e in una certa misura per il problema n. 923. Discorso diverso, forse, per il quesito n. 924 e anche per questo nel post che state leggendo: infatti qui abbiamo già fatto il lavoro di “tradurre” il problema nel “linguaggio della matematica”: abbiamo un sistema di equazioni.

È come se fossimo arrivati a dover sommare alcuni numeri. Usare un calcolatore per sommarli significherebbe essere pigri… ed è senza dubbio poco stimolante. Potremmo usare lo stesso approccio usato per attaccare il n. 923: in fondo le tre equazioni che abbiamo trovato sono tre “vincoli” e sappiamo che non ci possono essere più di 100 biglie in ciascun sacchetto (ciò ci permette di limitare lo spazio delle soluzioni da controllare), dunque potremmo procedere con la forza bruta e provare tutte le triplette, scartando man mano quelle che non soddisfano uno dei vincoli, fino ad arrivare a quella (o quelle…) che li soddisfano tutti e tre. Niente di nuovo rispetto a quanto fatto per il problema n. 923: cambierebbero il modo di generare le possibili triplette — non useremmo le permutazioni di un insieme — e la funzione di controllo, checkSol, che dovrà controllare che i tre numeri forniti in ingresso soddisfino tre condizioni…

Insomma, niente, non c'è trippa per gatti. L'unica cosa che possiamo fare è usare il calcolatore per fare la somma… (Sì, d'accordo, risolvere un sistema di equazioni è un po' più complicato che sommare alcuni numeri… però il sistema è semplice e comunque in questo caso veramente ci ritroviamo ad usare il computer alla stregua di una potente calcolatrice.)

Vi mostro due possibilità.

Soluzione con Maxima

Il software Maxima è un Computer Algebra System (CAS), ovvero un sistema di algebra computazionale. Possiamo usarlo per trovare le soluzioni analitiche (non numeriche) di derivate ed integrali (quando esistono5), oppure per risolvere equazioni e sistemi di equazioni…

Dalle affermazioni dei bambini arriviamo alle equazioni, come già detto; ora non le manipolo in nessun modo, come ho fatto invece per arrivare alle tre equazioni su mostrate, e le do direttamente in pasto a Maxima.

(%i1) e1: D + x + L + C = 100;
(%o1)                         L + D + C + x = 100
(%i2) e2: L + 2 = C/3;
                                           C
(%o2)                              L + 2 = -
                                           3
(%i3) e3: 2*D + 3 = C;
(%o3)                             2 D + 3 = C
(%i4) e4: D + x = 2*D;
(%o4)                             D + x = 2 D
(%i5) algsys([e1,e2,e3,e4], [D, C, L, x]);
(%o5)                 [[D = 21, C = 45, L = 13, x = 21]]

Ho indicato con x il numero di biglie perse da Dario. Come avevamo capito già da «prima di perderle ne avevo il doppio di adesso», il numero di biglie perse x è proprio uguale al numero D di biglie che ha adesso Dario.

Soluzione con Octave

GNU Octave è un software simile a Matlab. Per poter usare Octave per risolvere un sistema di equazioni lineari (è quanto abbiamo noi) occorre scriverlo in forma di matrice e vettori, in modo da poter scrivere il sistema nella forma Ax = b (cfr. Sistemi di equazioni lineari o altri testi sull'argomento).

La forma in cui l'ho scritto prima ci permette di “capire” subito chi siano A

\[ A := \left( \begin{matrix} 1 & 2 & 1 \\ 1 & 0 & -3 \\ 1 & -2 & 0 \\ \end{matrix} \right) \]

e b:

\[ \left( \begin{matrix} 100 \\ 6 \\ 3 \\ \end{matrix} \right) \]

Dovrebbe essere ovvio che il vettore x è costituito dalle tre incognite C, D, L; ma non ci serve altro che sapere l'ordine (che corrisponde all'ordine in cui abbiamo sistemato i coefficienti nella matrice), perché Octave ci darà un vettore di numeri e dall'ordine sapremo quale è il valore di C, quale quello di D e quale quello di L.

È importante ricordare (o sapere) che Octave dà una soluzione numerica. A differenza di Maxima, che è in grado di “manipolare simboli” (un po' come facciamo noi), Octave fa solo calcoli. Cioè usa metodi numerici per arrivare ai “numeri” che dà come risultato: abbiamo solo numeri e un algoritmo, non incognite rappresentate da simboli come C, D, L… Non so se fare queste affermazioni è sufficiente a comunicare la profonda differenza tra i due approcci.

Comunque, ecco come calcoliamo le soluzioni con Octave:

octave:1> A = [1, 2, 1; 1, 0, -3; 1, -2, 0];
octave:2> A
A =

   1   2   1
   1   0  -3
   1  -2   0

octave:3> b = [100; 6; 3]
b =

   100
     6
     3

octave:4> A\b
ans =

   45
   21
   13

Ricordate che l'“ordine” è C, D, L; dunque anche in questo caso confermiamo che la nostra soluzione era quella giusta.


  1. Dario: «prima noi tre insieme ne avevamo 100, ma poi io ne ho perse un po'» (cioè: la somma delle nostre biglie, più quelle che ho perso, fa 100: D + x + L + C = 100); Luca: «a me ne mancano due per averne un terzo di quelle di Carlo» (dà L + 2 = C/3); Carlo: «io ne ho 3 più del doppio di quelle di Dario» (dà C = 2D + 3). Infine, l'ultima affermazione di Dario ci permette di sostituire D + x con 2D (infatti Dario ci dice che D + x = 2D).

  2. Per esser precisi sono quattro, ma l'ultima equazione che abbiamo è banale e ci permette di eliminare subito un'incognita: se indichiamo con D il numero di biglie che ha ora Dario, prima doveva averne 2D, secondo quanto afferma lui stesso: «prima di perderle ne avevo il doppio di adesso».

  3. Io ho prima eliminato la C da due coppie di equazioni per ottenerne altre due, cioè  − 3L + 2D = 3 e  − 4D − L =  − 97; da queste ho eliminato la L ottenendo 28D = 6(1 + 97). Così abbiamo la D richiesta (21). Possiamo procedere sostituendo alla D questo valore noto fino ad ottenere 45 (le biglie che ha Carlo) e 13 (le biglie che ha Luca).

  4. Però ci può essere una differenza. I computer sono bravi a macinare numeri e dati, facendo più e più volte le stesse operazioni. Non si stancano, non si annoiano e non sbagliano (in teoria e, di solito, anche in pratica…). Cercare un metodo adatto ad un computer per risolvere qualcosa potrebbe voler dire non impegnarsi a cercare la soluzione migliore o solo più adatta alle eccezionali capacità di un essere umano (che non sono quelle che ha uno stupidissimo computer): è palese ogni volta che adottiamo metodi brute force (forza bruta), cioè quando sfruttiamo la velocità di elaborazione come alibi per non cercare alternative “più furbe”. In piccoli problemi come questi può pure andare bene, ma esistono problemi che invece non possono essere assolutamente affrontati in questo modo (e ne esistono altri, invece, che non sapremmo affrontare diversamente e quindi abbiamo bisogno di aumentare la velocità dei processori, la memoria, di parallelizzare sempre di più…)

  5. Diversamente dall'operazione di derivazione, quella di integrazione non porta sempre ad una primitiva esprimibile in termini di funzioni “note” della variabile. Due classici esempi: la funzione degli errori e la funzione gamma. Possiamo trovare i loro valori numericamente (cosa che un computer opportunamente programmato può fare con facilità), ma non siamo in grado di esprimerle usando altre funzioni “normali”.

Nessun commento:

Posta un commento

Sii educato, costruisci con cura le frasi, rifletti prima di pubblicare, evita parolacce e offese dirette, non uscire dal tema, cerca di non omettere la punteggiatura, evita errori ortografici, rileggi quel che hai scritto.