MC - SCHEDA 2                   [schede: 1 2 3 4 5 6 7 8]     [indice schede]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Linguaggi della matematica, manipolazione delle espressioni e
calcolo numerico: che cosa cambia con l'avvento del computer? 
[Seconda parte]
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Indice:
2.1  Questioni didattiche proposte nella scheda 1.
2.2  Numeri-macchina e codifiche binarie dei numeri. I numeri di DERIVE.
     es.1  es.2
2.3  I fogli di calcolo
     es.3
2.4  Spunti per altre attività e per riflessioni didattiche.
2.5  La struttura dei termini. Errori e difficoltà degli alunni.
     es.4  es.5  es.6  es.7
2.6  Trasformazione dei termini, regole di riscrittura e proprietà dei
     numeri. La trasformazione dei termini in Derive. Errori e difficoltà
     degli alunni.
     es.8  es.9  es.10
2.7  Altre possibili attività al calcolatore.
2.8  Commenti ad alcuni esercizi proposti
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -




===== 2.1 ==================== [inizio scheda] Ecco alcune possibili riflessioni sulle questioni proposte alla fine di scheda 1. Uso del computer <-> matematica ->: Il computer per facilitare lo studio della matematica <-: Lo studio della matematica per padroneggiare il computer -> Automatizzazione dei CALCOLI: facilita lo studio, sgrava da aspetti più meccanici a favore di attività mentali di altro tipo; vedi ad es. 1.1, tabulazione di x^3 e messa a punto di strategia per calcolare Rad3(100) <- Conoscenze matematiche, atteggiamenti critici, ... per interpretare le uscite, impostare i calcoli in modo opportuno, ... -> Facilitazione dello studio GRAFICO dei problemi, offrendo alternative (più semplici o efficaci) rispetto ad altri metodi (vedi il confronto grafico tra x -> t1 e x -> t2) <- Per scegliere la scala, ... occorre aver compreso i concetti e svolto prima attività "a mano" analoghe a quelle automatizzate sul computer -> Metodi alternativi per studiare comportamenti LIMITE (ordini di infinito e infinitesimo, ...) <- I concetti di ordine di infinito e infinitesimo per interpretare il comportamento del computer (vedi fine di 1.2 - ossia: scheda 1, §2) Suggerimenti per attività didattiche - Calcolo APPROSSIMATO (dalle prime disequazioni, dalle prime riflessioni sui risultati delle CT, avviabili nella scuola dell'obbligo, anche intrec- ciandosi a impieghi in ambiti tecncologici e scientifici, ai collegamenti con l'analisi infinitesimale, nel triennio delle superiori) [per spunti per attività per il biennio vedi gli Oggetti Matematici] - Algebra: "quali PROPRIETÀ dei NUMERI reali non sono verificate dai numeri macchina?": motivazioni per la messa a fuoco, per contrasto, di proprietà dei numeri reali (affrontabili, a vari livelli, nei vari cicli scolastici) - STRATEGIE di calcolo (per trovare zeri, massimi, ...) che utilizzano le tabulazioni: diversi livelli di formalizzazione degli ALGORITMI, diversi livelli di riflessione sulle PROPRIETÀ che le motivano e sui casi a cui sono applicabili (continuità, monotonia, ...) Abbiamo visto anche alcune questioni legate all'uso di linguaggi formali diversi: nomi di funzioni diversi (es.: SQR, R, tasto della CT), scrittura a un piano o a più piani, convenzioni diverse per le variabili, ... In questa scheda approfondiremo alcune questioni legate ai numeri macchina (introdotte dall'es. 5 della scheda 1) e avvieremo alcune riflessioni più generali sui linguaggi formali.
===== 2.2 ==================== [inizio scheda] Discutiamo quanto emerso nell'es. 5 della scheda 1. Le CT memorizzano le CIFRE DECIMALI IN FORMA BINARIA: ogni cifra è codi- ficata con 4 bit: 0 -> 0000, 1 -> 0001, ..., 9 -> 1001. Codificano con un bit il segno della mantissa e con un altro bit il segno dell'esponente. Ad es. la CT dell'es.4 della scheda 1 memorizza -12345678 trasformandolo in notazione scientifica (-1.2345678 E 07) usando 4*8+1 bit per le 8 cifre della mantissa e il suo segno e 4*2+1 bit per l'esponente e il suo segno. - 1 2 3 4 5 6 7 8 0 7 0 0001 0010 0011 0100 0101 0110 0111 1000 1 0000 0111 I calcoli vengono svolti in base dieci. Questa rappresentazione interna dei numeri viene chiamata BCD (binary coded decimal). Il QBasic invece memorizza non le cifre, ma l'intero NUMERO IN FORMA BINA- RIA, e svolge i calcoli in base 2. In precisione semplice esprime il numero in notazione scientifica binaria con una mantissa di 24 cifre binarie, che codifica con 23 bit (la prima cifra, poiche' è diversa da 0, deve essere per forza 1, quindi è inutile registrarla); un altro bit lo impiega per il segno della mantissa; con 7 bit codifica l'esponente e con 1 il suo segno. In tutto 32 bit (= 4 byte). In precisione doppia impiega 64 bit (= 8 byte), 53 dedicati alla mantissa (di 54 cifre binarie). Dall'help avevamo visto che il massimo numero in precisione singola è 3.402823*10^38. Questa è la rappresentazione decimale del numero in base 2: 1.11111111111111111111111 * 10 ^ 1111111 = [circa] 10*10^1111111 = 24 bit 7 bit 10^(1111111+1) = 10^10000000 = [in base dieci] 2^128. Se con una assegnazione a una variabile viene assegnato un numero intero il cui valore assoluto è esprimibile in forma binaria con 23 [53] cifre, il QBasic non lo esprime in forma scientifica, ma in forma esponenziale con mantissa intera ed esponente 0; in precisione doppia si può arrivare a memorizzare in forma intera (1111...11)[base 2] = 9 007 199 254 740 991. Esiste anche la possibilità di dichiarare altri tipi di dati numerici, come si è visto esaminando l'help (-> punto 3 di es.2 della scheda 1): la precisione intera e la precisione intera lunga (o doppia), che memoriz- zano i numeri interi in forma binaria non esponenziale, impiegando 16 bit e 32 bit rispettivamente. NOTA. Cose analoghe valgono per vari altri linguaggi di programmazione. Ad es. il TurboPascal ha comportamenti simili, ma non ha la possibilità di memorizzare numeri in forma intera usando le precisioni singola - real - e doppia; inoltre non segnala gli overflow quando si lavora in precisione inte- ra: agli interi dà una struttura modulare, per cui se un risultato supera il massimo intero macchina 32767, ad esso viene sostituito automaticamente un altro numero: ad es. 32767+1 diventa -32768. Ora siamo in grado di interpretare il fenomeno messo in luce dall'es. 5. Usiamo l'applicazione DERIVE per studiare perche' per il Qbasic 1024.35 - 1024.33 = 2.001953E-02. DERIVE è infatti una applicazione che consente, tra le altre cose, di dare input e/o ottenere output in basi diverse dalla base dieci, e che consente di operare con quantità grandi a piacere di cifre. Potremo, dunque, "simulare" il comportamento del QBasic. ** ES.1 ******* 1) Apri l'applicazione DERIVE. Ciò può essere fatto in vari modi, a seconda della configurazione del computer e della versione di Derive. - La versione di Derive per Windows può essere aperta cliccando sull'icona di DFW.exe o su un'icona di collegamento (o dal menu Avvio-Programmi) senza chiudere altre applicazioni (o sessioni Dos) aperte. - La versione DOS può essere aperta da Windows oppure da DOS. [ Per aprirla da DOS si può provare a battere >> derive << dal directory in cui si è collocati. Se la applicazione viene aperta vuol dire che il computer è stato predisposto (mediante il file autoexec.bat) a cercare automaticamete l'applicazione nel directory DERIVE in cui derive.exe è collocato. Altrimenti occorre spostarsi con CD nel directory DERIVE e battere >> derive <<. Se si conosce la collocazione di DERIVE, ad es. se si sa che è collocato alla radice del disco, si può rimanere dove si è collocati e battere prima di "derive" il percorso, cioè battere: >> \derive\derive <<.] 2) Esamina le informazioni sullo stato del sistema: nella versione per Windows esamina le varie finestre apribili dal sottomenu di Declare/Dichiara sullo Stato del sistema. Esamina in particolare quelle sulla configurazione numerica: precisione, notazione, basi di rappresentazione (radix in inglese), per quanto riguarda sia la Visualizzazione che la Semplificazione. [Le indicazioni su Derive qui e nel seguito sono in genere date sia per la versione per Windows-italiana che per la versione Dos-inglese. Combinando le informazioni fornite è facile capire come comportarsi di fronte ad altre versioni] Nella versione Dos Apri l'help (per azionare un comando basta battere la lettera maiuscola del nome del comando scelto tra quelli che compaiono nel menu che appare nella parte bassa dello schermo; in questo caso H) e poi batti S (perche'?) 3) Ora carica il file DIFFER.MTH presente in MC (nella versione per Windows si può operare con il mouse dal menu File: File -> Load/Carica -> Math e dalla finestra di dialogo arrivare alla cartella MC; oppure si puo' usare: File -> Open/Apri; in Dos aziona Transfer -> Load -> Derive e batti >> \macosa\mc\differ << se MACOSA è alla radice di C) Leggi quanto contenuto nel file caricato (per far scorrere il contenuto della finestra puoi usare i tasti freccia o i tasti <PgUp> (PaginaSu) e <PgDown> (PaginaGiù), o il mouse (con Derive per Windows). NOTA: il file "funziona" almeno fino alla versione 4.07. Ecco come si presenta il file, in modo che chi dispone di una versione incompatibile possa realizzare qualcosa di analogo. [nella versione Windows Author/Crea è un menu da azionare col mouse; approX è un sottomenu di Semplifica; le opzioni sui modi di visualizzazione sono un sottomenu di Declare/Dichiara: PrecisionDigits lo si attiva da Dichiara-StatoAlgebra-Semplificazione, OutputBase da Dichiara-…-Visualizzazione, InputBase da Dichiara-…-Inserimento] #1 "Rappresentazione binaria con 24 cifre di 1024.35-1024.33" #2 "Da Options seleziono Precision e predispongo Derive a lavorare con 24" #3 "cifre (con <Tab> mi sposto sul campo Digit e batto 24); infine batto" #4 "<Enter>. Il cambio di configurazione e' annotato su una nuova riga:" #5 PrecisionDigits := 24 #6 "Da Options seleziono Radix e predispongo Derive a esprimere gli output" #7 "in forma binaria (passato al campo Output premo <B>, poi <Enter>)" #8 OutputBase := Binary #9 "Vado in Author e scrivo 1024.35-1024.33. Il termine viene visualizzato" #10 "in forma binaria a 24 bit:" #11 10000000000.0101100110011 - 10000000000.0101010001111 #12 "Predispongo Derive a prendere input in forma binaria" #13 InputBase := Binary #14 "Ribatto il termine scrivendolo direttamente in forma binaria" #15 10000000000.0101100110011 - 10000000000.0101010001111 #16 "Aziono il comando approX" #17 0.00000101001 #18 "Se scelgo la forma decimale per gli output e con Author ribatto il" #19 "termine soprastante ottengo proprio il valore visualizzato da QBasic:" #20 OutputBase := Decimal #21 0.02001953125 ******* END es.1 ** [commenti] Con il QBasic avevamo ottenuto: 1024.35-1024.33 = 2.001953E-02 In forma binaria 1024.35 e` 10000000000.0101100110011001100...; Qbasic lo arrotonda a 24 bit con: 10000000000.0101100110011 Analogamente 1024.33 e` 10000000000.0101010001111010111...; viene arrotondato a 24 bit con: 10000000000.0101010001111 Dalla differenza delle due approssimazioni si ottiene: 0.00000101001 che in forma decimale è 0.02001953125, il cui arrotondamento a 7 cifre è 0.02001953. Alla origine delle uscite "strane" vi è dunque il fatto che i valori battuti in forma decimale finita vengono rappresentati con un numero binario finito che non è detto che li rappresenti esattamente: un numero decimale con periodo 0 non è detto che in forma binaria abbia periodo 0. I calcoli vengono effettuati con questi valori approssimati in base 2 e poi vengono visualizzati in base 10. NOTA: un arrotondamento a 24 bit corrisponde a (vedi scheda 1, punto 1.3, sulla relazione tra numero delle cifre dell'arrotondamento e precisione relativa) una precisione relativa media di circa 2^-24, cioè 10^Log(2^-24) = 10^(-24*Log(2)) = 10^-7.224... . Per questo possiamo dire che il QBasic arrotonda a 7.2 cifre decimali. Analogamente (come? ...) si trova che in precisione doppia arrotonda a 15.95 (cioè quasi 16) cifre decimali. Ora proviamo a calcolare t2 direttamente con Derive. ** ES.2 ******* 1) Riconfigura Derive in modo che sia per input che per output usi la forma decimale (Options -> Radix -> Input/Output). Predisponilo a operare con 7 cifre (Options -> Precision -> Digit) [ricordiamo che nella versione per Windows le opzioni su Visualizzazione e Semplificazione/calcolo dei numeri sono in un sottomenu di Declare] 1 2) Prima di scrivere t2 usa l'help per vedere come in- ---------------- dicare la radice quadrata. Poi aziona Author e scrivi Rad2(x^2+1) + x t2. Il termine verrà visualizzato a più piani. Control- la se l'hai introdotto correttamente, se no ribattilo. 3) Per effettuare il calcolo con Derive per x=10^6 occorre sostituire tale valore a x usando il comando Manage. Fallo (osserva le indicazioni che com- paiono sulla barra di riferimento, in fondo allo schermo - in Derive per Windows usa Sostituisci dal menu Semplifica). 4) Ora aziona approX per calcolare il valore del termine ottenuto in 3). 5) Ora prova ad azionare Simplify al termine ottenuto in 3) e poi ad aziona- re approX su questo nuovo termine. Che differenze osservi rispetto a prima? Come le spieghi? 6) Aumenta a 50 il numero di cifre con cui lavora Derive [ ->1) ] e ripeti i passi 4 e 5. ******* END es.2 ** [commenti]
===== 2.3 ==================== [inizio scheda] Vediamo ora come utilizzare (e come si comporta) un altro tipo di applica- zione: un FOGLIO DI CALCOLO (elettronico). Vediamo, per es., come realizzare una tabulazione di 0.1^N+1-1, già effettuata in QBasic [-> es.5]. ** ES.3 ******* 1) Avvia un foglio di calcolo (Excel o Lotus o il foglio di calcolo del gratuito, ed eccellente, StarOffice). Poi scrivi i valori e le formule sotto riportati nelle celle indicate. A B C ---|---------------|---------------|----------------|------------ 1 | 0 | |=1024.35-1024.33| ---|---------------|---------------|----------------|------------ 2 | = A1+1 | = 0.1^A2+1-1 | | ---|---------------|---------------|----------------|------------ 3 | | | | ---|---------------|---------------|----------------|------------ 4 | | | | ---|---------------|---------------|----------------|------------ 2) Che valore osservi nella cella C1? 3) Posiziona il mouse sulla cella A2, premi il pulsante (sinistro) del mouse e tienilo premuto mentre sposti il mouse sulla cella B20. Infine rila- scia il pulsante del mouse. Quindi aziona il comando RicopiaInBasso o FillDown o un comando simile (può essere nel menu Modifica o Edit o ... o può essere rappresentato con una icona particolare): dipende dalla versione di foglio di calcolo di cui disponi e dalla configurazione che gli è stata data. Oppure seleziona A2 e B2, poi aziona il comando Copy/Copia, poi seleziona il "rettangolo" da A2 a B20 e aziona Paste/Incolla. Che cosa osservi nelle colonne A e B? 4) Se non hai mai usato un foglio di calcolo, usando le frecce spostati sulle celle delle colonne A e B e osserva le formule contenute in esse visualizzate nella barra di introduzione, cioè nel riquadro in cui compari- vano i caratteri che man mano battevi [ -> 1)]. Come vengono copiate le formule da una cella all'altra? ******* END es.3 ** [commenti] Con i fogli di calcolo più comuni si ottiene il risultato "corretto" per 1024.35-1024.33; nel caso della tabulazione, prima di arrivare a 0 si otten- gono risultati strani, simili a quelli ottenuti col QBasic. I fogli di calcolo in genere visualizzano i numeri arrotondati a un numero di cifre inferiore a quello con cui operano, cosi` che nel caso di calcoli con pochi decimali i risultati vengano (almeno in apparenza) aggiustati in modo da essere uguali a quelli che si otterrebbero lavorando in base dieci, affinche', ad esempio, in un calcolo di tipo economico non si trovi che 1024.35 $ - 1024,33 $ non fa 2 cent! Volendo si può forzare il programma a visualizzare più cifre (in genere è presente un menu "formato" che consente di decidere il formato di visualizzazione del contenuto delle celle): 1024.35-1024.33 invece di 0.02 si può vedere, ad esempio, 0.0199999999999818. Se non si sta attenti, si possono commettere errori che poi è difficile individuare (si può credere che in una cella vi sia 0 senza che ciò sia vero e non comprendre come il contenuto di un'altra cella, calcolato in funzione della cella precedente, assuma un valore diverso dalle aspettative).
===== 2.4 ==================== [inizio scheda] Altre considerazioni didattiche e spunti per attività didattiche che potrebbero essere approfonditi: ** Numeri in basi diverse: il computer, nelle superiori, offre motivazioni per riflessioni sulla base 2 (interpretazione di uscite strane, la codifica delle informazioni, ...). Ha senso introdurre la riflessione sulla base 2 nella scuola dell'obbligo o è meglio mettere solo in luce le analogie tra l'operare in base dieci e l'operare in altre basi di uso diffuso (60, 12, 24, 100, 360)? (1) scrivi "27." ** Il numero 27.(04) = 27.040404... è generabile con: -> (2) scrivi "24" Generalizzando si ottiene la def. di numero PERIODICO. (3) vai a (2) I numeri reali sono definibili nel modo seguente: se vuoi ---> scrivi una seq. ---> scrivi -----> scrivi -----> scrivi "-" finita di cifre "." | una cifra | | | dove le seq. fin. di cifre siano <-- stai scrivendo <-- state definite con: un NUMERO REALE scrivi una cifra ---> vuoi continuare? -- no --> hai scritto una SEQUENZA | | si` FINITA DI CIFRE <------------------ Questo approccio pone alcuni problemi (che sono legati a questioni che, al di là dell'approccio scelto per introdurre i numeri reali, devono comunque essere affrontate): (1) come definire l'eguaglianza tra numeri reali (cioè quando due espres- sioni illimitate devono essere considerate uguali "come numeri") ? (2) la limitatezza (avere periodo 0) di un numero dipende dalla base di rappresentazione? (3) la periodicità è una proprietà dei numeri o dipende dalla base? (4) come definire le operazioni tra numeri reali? ** In quali altri modi possono essere introdotti i numeri reali? Questi sarebbero più facili e alla portata degli alunni? ** Come fa Derive a operare su una quantità potenzialmente illimitata di cifre?
===== 2.5 ==================== [inizio scheda] Abbiamo visto alcuni tipi di applicazioni diverse per il linguaggio da usa- re nella descrizione dei termini, per le modalità di azionamento dei coman- di, per il modo in cui operano sui numeri, per il modo in cui si possono de- scrivere/realizzare gli algoritmi (si pensi al ciclo FOR nei linguaggi di programmazione e alla riproduzione di celle con i fogli di calcolo). Abbiamo visto alcune potenzialità didattiche dell'uso del computer in relazione allo studio dei numeri. Ora incominciamo ad approfondire alcuni aspetti legati alla manipolazione dei termini e (a partire dalla prossima scheda) delle formule. Un LINGUAGGIO FORMALE è costituito da un insieme di simboli e da regole per costruire, a partire da questi simboli, espressioni significative. La SINTASSI è la descrizione di come ottenere queste espressioni, la SEMANTICA è la associazione a queste espressioni di significati riferiti a un partico- lare contesto. Anche la sintassi si occupa di significato, potremmo dire del significato formale o strutturale di una espressione. Ad esempio (nell'ambito del linguaggio della aritmetica) di fronte a 5+7*3 è sintattico il fatto che questo termine è ottenuto mettendo insieme 2 co- stanti (7 e 3) con un simbolo di funzione a 2 posti (*) e, poi, mettendo in- sieme un'altra costante (5) con il termine cosi` formato mediante un altro simbolo di funzione a 2 posti (+). È semantica la associazione di valori ai simboli di costanti e della moltiplicazione e della addizione ai due simboli di funzione. In ambito numerico (aritmetica, analisi matematica) in genere si ha a che fare con espressioni di due tipi: termini e formule (a loro volta distinte in equazioni e disequazioni). Un TERMINE può essere descritto come un ATOMO (cioè una variabile o una costante) o un oggetto ottenuto "combinando" atomi mediante simboli di fun- zione. Questa descrizione si adatta anche ad altri ambiti. Ad esempio all'am- bito insiemistico: il simbolo dell'insieme vuoto è una costante, i simboli di unione, intersezione e complemento sono simboli funzionali; analogamente nel caso delle proposizioni Vero e Falso sono costanti, i connettivi (AND, OR, NOT, ...) sono simboli funzionali. Occorre precisare che cosa vuol dire "combinando". Nel linguaggio matematico usuale spesso si usano convenzioni non del tutto precisate, a volte tra loro contraddittorie. Si pensi a: 2 2 sin xy usato al posto di sin(x*y) ma che, riferendosi ad altre convenzioni, potrebbe essere inteso come: 2 2 s*i*n *x*y o sin(x) * y o sin(sin(x*y)) o interpretato come se xy fosse un'unica variabile. Il contesto in genere aiuta nell'interpretazione (ma alcune difficoltà degli alunni spesso segnalano una scarsa attenzione degli insegnanti a questi aspetti). Per semplificare il discorso riferiamoci al linguaggio formale di un soft- ware. Consideriamo il QBasic. Usando le convenzioni introdotte in Scheda1 (vedi punto 5 di ES.1 e commenti) vediamo ad esempio le principali forme che può avere un TERMINE NUMERICO: { CostanteNumerica | VariabileNumerica | - TermineNumerico | (TermineNumerico) | TermineNumerico Operazione TermineNumerico | FunzioneNumerica [(TermineNumerico [, TermineNumerico] ...)] } A loro volta, per es., Operazione può essere descritta con: { + | * | + | - | / | ^ | \ | MOD } e NomeFunzione con { ABS | ATN | CINT | COS | EXP | FIX | omissis | TAN } Ad esempio - SQR(ang * (ang - 1)) è un termine in quanto: ang è un termine in quanto ang è una variabile 1 ... 1 è una costante ang-1 ... ... ha la forma Termine-Termine (ang-1) ... ... ... (Termine) ang*(ang-1) ... ... ... Termine Operazione Termine ... Esistono anche delle funzioni a 0 input, ad es. TIMER, che ha come valore il numero dei secondi trascorso dalla accensione del computer; l'input, quindi, c'è ma è fornito implicitamente dall'hardware (in matematica, inve- ce, a volte si intendono come funzioni a 0 input le costanti). La descrizione da noi data non è esauriente, nel senso che indica dei modi in cui possono essere costruiti i termini, ma non tutti i modi (ad es. esi- stono anche funzioni a input stringa e output numerici: LEN("casa") ha come valore 4, la lunghezza della stringa "casa"). Ad essere rigorosi invece che di Variabile, Funzione, ... occorerebbe parlare di NomeDiVariabile, NomeDi- Funzione, ... La descrizione di TermineNumerico data sopra è RICORSIVA (all'interno del- la descrizione compare il riferimento a ciò che viene descritto). ** ES.4 ******* Come descriveresti i termini stringa? ******* END es.4 ** [commenti] Nel caso di un linguaggio di programmazione, la semantica di un termine numerico è il procedimento con cui ad esso (nel corso dell'esecuzione) viene associato un valore numerico. Il software (il QBasic o il TurboPascal o il C o ... ) di fronte a una ASSEGNAZIONE del tipo Variabile=Termine ana- lizza la struttura di Termine e traduce la assegnazione in una sequenza di assegnazioni in LINGUAGGIO MACCHINA (linguaggio in codice binario, specifico del tipo di computer con cui si sta operando, in cui vengono indicati espli- citamente i registri di memoria in cui sono memorizzati i valori man mano calcolati, i dispositivi da azionare per la esecuzione delle singole opera- zioni, ...) in ciascuna delle quali compare una sola operazione. Se Termine è scritto correttamente questa traduzione viene ultimata (non vi è la segnalazione di errori sintattici). Se anche le altre parti del pro- gramma sono scritte correttamente, tutto il programma viene tradotto in lin- guaggio macchina. Nel corso della esecuzione può capitare che ad un certo termine non sia assegnabile un valore, ad esempio se compare la radice qua- drata di un numero negativo (compare un messaggio di "errore in corso di ese- cuzione", run-time error, e, in genere, il programma si arresta). Vi è quindi una distinzione tra correttezza sintattica e correttezza seman- tica. ** ES.5 ******* 1) "Si può scrivere" 3/(Rad2(4)-2) ? 2) Descrivi con un grafo ad albero la struttura del termine COS(-x^2*y) e in- vidua con quale ordine esegue i singoli calcoli il computer dopo la traduzio- ne in linguaggio macchina dell'assegnazione z=COS(-x^2*y). Avvia il programma COMPILA.EXE (da MACOSA) e utilizzalo per verificare la tua risposta. 3) Scrivi il termine che corrisponde al grafo a / lato. Verifica la risposta usando COMPILA. ______________/ \______________ 1 + _____/ \_____ SQR x | + / \ ^ 1 / \ x 2 ******* END es.5 ** [commenti] ** ES.6 ******* 1) Avvia Derive. Aziona Author/Crea e batti sin^2xy. Che cosa appare? Poi aziona Options - Input e seleziona Mode Word e Case Sensitive, aziona Author/Crea e batti sin^2xy. Che cosa appare? Spiega l'accaduto. [nella versione per Windows le opzioni per l'Input/Inserimento sono nel sottomenu sullo Stato del sistema presente nel menu Declare/Dichiara] 2) Riseleziona Mode Character e Case Insensitive. Aziona Author e scrivi il termine cos(-x^2*y). Usa ripetutamente i 4 tasti direzionali (tasti-freccia); vengono evidenziati in negativo i sottotermini. Quali spostamenti sul grafo ad albero del termine corrispondono all'azionamento dei tasti-freccia? [ nella versione Windows usa <Shift+TastoFreccia> ] 3) Lascia evidenziato il sottotermine -x^2*y. Quindi aziona Author e intro- duci il termine 1-sin(-x^2*y) senza ribattere -x^2*y. Per vedere come fare ciò, quando sei in Author premi <F1> (perche'? osserva la barra di riferi- mento), poi <E> (poi <Esc>, <Esc>). [ nella versione Windows cerca le informazioni sull'"inserimento delle espressioni" nella pagina della guida che si apre con <F1> ] ******* END es.6 ** [commenti] ** ES.7 ******* Ecco alcuni esempi di errori abbastanza comuni: 3 x+2 3-x+2 10+x 2+x x x 1) --- - --- -> ----- 2) ---- -> --- 3) 3*2 -> 6 5 5 5 5x x sin 2x 2x 4) ------ -> -- -> 2 5) A(-B)(-C) -> A+BC sin x x x+kx 6) (3x+3)(x-1-x+1)+4 -> (3x+3)+4 -> 3x+7 7) ---- -> k x 2 8) 3AB+B+9B -> (3A+9B)B Quali sono attribuibili a una scarsa padronanza e/o attenzione alla struttura dei termini? Quali ad altre confusioni concettuali? Di che tipo? ******* END es.7 ** [commenti]
===== 2.6 ==================== [inizio scheda] Molti errori degli alunni sono dovuti allo svolgimento meccanico dei calco- li, seguendo prototipi o procedimenti standard memorizzati (temporaneamente) ma mal compresi. In alcuni casi manipolano le espressioni senza tener conto della loro struttura. In altri operano con REGOLE (sintattiche) di trasfor- mazione delle espressioni senza aver compreso o senza prestare attenzione al collegamento tra queste e specifiche PROPRIETÀ dei numeri o di particolari funzioni. Ad esempio la trasformazione di y(1+z-1-z) in y dopo la "semplifi- cazione" operata "cancellando" 1 e -1, z e -z è legata al non aver compreso che si sta usando la proprietà x-x=0. La scuola, con il suo lessico, con l'addestramento a svolgere velocemente i calcoli, con i tipi di verifiche proposti, ... ha non poche responsabilità nel favorire negli alunni il di- sinteresse per i riferimenti semantici (utili per scegliere e controllare le trasformazioni sintattiche). Richiamiamo alcuni concetti e alcune terminologie legate alla manipolazione dei termini numerici. I termini t1 e t2 sono EQUIVALENTI (algebricamente) se, comunque sostituisca numeri alle variabili che compaiono nei due termini, ottengo (svolgendo man mano i calcoli a partire dai nodi finali dei grafi ad albero) termini dello stesso valore o termini entrambi indefiniti. Per manipolare un termine, oltre al puro CALCOLO numerico (esecuzione di ope- razioni sui numeri, tenendo conto delle priorità e delle parentesi), si usa- no delle REGOLE di RISCRITTURA, tra le quali le più comuni sono: RIMPIAZZAMENTO (sostitu- ... t1 ... -> ... t2 ... (se so che t1 è zione di un sottotermine ... (t2) ... trasformabile in t2) t1 con un altro termine t2) RIORDINO delle A + B + C + D -> B + D + C + A (esempi) addizioni C + (A + B) + D B + (C + (D + A)) ELIMINAZIONE delle NEGAZIONI --A -> A PORTAR FUORI la NEGAZIONE A * -B -> -(A*B) Nota: -A*B per alcuni da un PRODOTTO (-A) * B sta per -(A*B), per altri per (-A)*B DISTRIBUZ./RACCOGL. -(A + B + ...) -> -A + -B + ... di NEGAZ. risp. ADD. <- DIFFERENZA -> SOMMA A - B -> A + -B <- <- Addiz./sottraz. di ZERO A + 0 -> A 0 + A A - 0 RIORDINO delle A * B * C * D -> C * A * B * D (esempi) moltiplicazioni B * D * (A * C) ELIMINAZIONE dei RECIPROCI 1/(1/A) -> A (A/B)^-1 -> B/A DISTRIBUZ./RACCOGL. 1 1 1 di RECIPR. risp. MOLT. --- -> --- * --- A*B <- A B 1 RAPPORTO -> PRODOTTO A / B -> A * --- cioe` A * (1 / B) <- <- B Altre trasformazioni A/(B*C) -> A/B/C di divisioni <- A/(B/C) -> A/B*C A*C/B A*B A ->: eliminazione di fattori --- -> --- comuni tra i due termini C*B <- C di una divisione MOLTIPLICAZIONE per ZERO A * 0 -> 0 0 * A 0 / A MOLTIPLICAZIONE per UNO A * 1 -> A 1 * A <- A / 1 DISTRIBUZ./RACCOGL. A(B+C+...) -> AB+AC+... di * rispetto + <- (B+C+...)A -> BA+CA+... <- C C C DISTRIBUZIONI/ (A*B) -> A * B RACCOGLIMENTI <- rispetto a * Rad2(A*B) -> Rad2(A)*Rad2(B) <- 3 3 RAGGRUPPARE i ter- 3 + 6X - 5 - Y + X -> - Y + 7X - 2 (esempi) mini di una SOMMA 3 7X - Y - 2 -2 5 4 2 RAGGRUPPARE i ter- X * Y * X * Y * X -> X * Y (esempi) mini di un PRODOTTO 2 4 Y * X FATTORIZZARE In questo modo vengono spesso chiamati i raccoglimenti a fattor comune e le distribuzioni rispetto alla moltiplic. PORTAR FUORI (da una potenza, una radice, una somma) indica una fatto- rizzazione (per portar fuori un sottotermine da una paren- tesi o da un simbolo di radice) PORTAR DENTRO indica una trasformazione opposta al portar fuori SEMPLIFICARE In questo modo vengono spesso chiamate le trasformazioni ottenute applicando raggruppamenti, eliminazioni di fatto- ri comuni tra i termini di una divisione, calcoli numerici o basati sulle proprieta` di 0 e di 1 [ x*1 -> x, ecc.] o delle potenze [ (A^B)^C -> A^(B*C), A^B*A^C -> A^(B+C), A^-B -> 1/A^B, ... ]. SVILUPPARE In questo modo vengono spesso chiamate le trasformazioni o ESPANDERE ottenute applicando distribuzioni rispetto alla addiz. (per ridurre il numero delle parentesi), trasformazioni di divisioni (per ridurre il numero dei "piani"), oltre a calcoli numerici o basati sulle proprieta` di 0 e di 1 o delle potenze. Questi procedimenti sono descritti in modo più esteso, esemplificati e commentati negli Oggetti Matematici. ** ES.8 ******* 1) Sono dimostrabili (in classe) tutte le proprietà che stanno dietro alle regole descritte? Che fare? 2) Tutte le regole di riscrittura viste trasformano termini in termini equi- valenti? Quali regole necessitano attenzioni particolari? ******* END es.8 ** [commenti] ** ES.9 ******* 1) Da Derive apri (Transfer/File-Load-Derive/Math) il file SIMP.mth (in MC) e, seguendo le indicazioni contenute nel file stesso, esplora che cosa significa, in Derive, Simplify. [nella versione per Windows l'evidenziazione delle espressioni è effettuabile col mouse; per la Semplificazione occorre azionare Semplifica-Base; al posto di Manage - Ordering occorre attivare il sottomenu Dichiara-StatoAlgebra-Visualizzazione; alcuni comandi sono azionabili cliccando sui bottoni presenti sotto il menu a cascata; ad es. per la semplificazione, si può cliccare sul bottone [=]] #1 "Prova ad azionare Simplify sui seguenti termini e cerca di capire" #2 "- quale riscritture opera," #3 "- se i nuovi termini sono algebricamente equivalenti ai precedenti," #4 "- come operare per evitare trasformazioni indesiderate" #5 "NOTA. Se vuoi semplificare #n, puoi evitare di battere #n se usando i" #6 "tasti freccia selezioni (evidenzi in negativo) #n" #7 -a + x + a - 2*x 3 #8 (y*x*x) #9 a*a - a*c - a*b*c 5 #10 (1 + x) + b #11 "Prova a risemplificare i termini #9 e #10 dopo aver azionato" #12 "Manage - Ordering e aver messo b come lettera iniziale (prima di x)." SQRT(x)*SQRT(-x) #13 ------------------ SQRT(-x) #14 "Prova a risemplificare #13 dopo aver dichiarato x reale" #15 "(Declare - Variable - x - Real - All)" #16 SQRT(x*x) #17 "Prova a risemplificare #16 dopo aver dichiarato x<0" (1 - COS(x))*(1 + COS(x)) #18 --------------------------- (1 - x)*(1 + COS(x)) 2) Apri il file EXP.mth (in MC) e, seguendo le indicazioni contenute nel file stesso, esplora che cosa significa, in Derive, Expand/Sviluppa. [nella versione per Windows è un sottomenu di Semplifica; azionato Sviluppa occorre confermare cliccando su [Sviluppa]; se invece si clicca su [OK] viene visualizzato il nuovo termine nelle forma EXPAND(VecchioTermine); per esplicitare lo sviluppo occorre operare su questo con Semplifica-Base] #1 "Opera sul termine seguente con Simplify. Poi opera su di esso (non sul" #2 "nuovo termine) con Expand, prima lasciando x,y come ordine delle va-" #3 "riabili rispetto a cui espandere, poi facendo espandere solo rispetto" #4 "a x, poi solo rispetto a y, poi rispetto a y,x" / x \2 2 #5 |x + ---| + (x + y + 1) \ x / 3) Apri il file FACT.mth (in MC) e, seguendo le indicazioni contenute nel file stesso, esplora che cosa significa, in Derive, Factor/Fattorizza. #1 "Prova ad azionare Factor su ciascuno di questi termini selezionando in" #2 "ordine tutte le modalità (Trivial, Squarefree, ...) fino ad arrivare," #3 "per ogni termine, alla prima modalità per cui si ha la fattorizzazione" 2 #4 (a*b) 1 #5 3 - ------- x + 2 3 2 #6 x + 2*x + x 2 #7 x + 3*x + 2 2 #8 x - 4 2 #9 x - 2 2 #10 x + 1 #11 SQRT(x*y) #12 "Prova a fattorizzare il termine soprastante dopo aver Dichiarato x" #13 "variabile reale non negativa" NOTA: questi (come altri) comandi di Derive, se il termine su cui si opera ha un sottotermine evidenziato in negativo, applicano la manipolazione solo su questo. Se negli esercizi non è esplicitato di trasformare un sottoter- mine, si stia attenti a non selezionare involontariamente (con i tasti frec- cia) un sottotermine. ******* END es.9 ** [commenti] Le potenzialità e limiti di Derive nella manipolazione dei termini messi in luce in questi esercizi costituiscono ulteriori esemplificazioni della "doppia freccia" discussa in 2.1: ->: Il computer per facilitare lo studio della matematica <-: Lo studio della matematica per padroneggiare il computer ** ES.10 ******* Prova a fattorizzare con Derive il seguente polinomio: 5 4 2·x - x - 2 ******* END es.10 ** [commenti]
===== 2.7 ==================== [inizio scheda] Nel directory MACOSA è presente altro software che può suggerire alcune attività didattiche (anche per far fronte a questioni poste in 2.4): - il programma INDET (per effettuare calcoli con dati approssimati; si osservi come migliora la precisione del risultato al migliorare delle precisioni dei fattori), azionabile direttamente dal menu MaCoSa - i programmi BASI e BASIINT nel sottodirectory NUM (cambi di base), azio- naboli dal menu MaCoSa con X (scegli un eXe) e >> num\basi << o >> num\basiint <<; - il programma DIVISION.bas, sempre in NUM (come modificarlo e usarlo per ottenere in base 2 e 6 i risultati di 1/5 e 1/3 ?), apribile dal QBasic - i programmi SOMMA.bas e PRODOTTO.bas (per fare operazioni su numeri con quantità arbitrarie di cifre), apribili dal QBasic
===== 2.8 ==================== [inizio scheda] Suggerimenti/commenti per alcuni esercizi (su alcune problemi posti in 2.4 e 2.7 si tornerà nella scheda 3). ** Su Es.1 Per altre informazioni su Derive puoi vedere gli Oggetti Matematici. ** Su Es.2 Dall'help (cercando "simboli matematici" o "radice quadrata") si trova che la radice quadrata può essere introdotta battendo SQRT o con <Ctrl+Q> o, nella versione Windows, cliccando sul suo simbolo nella finestra che si apre azionando Crea/Author). Ottenuto 1/(Rad2(10^6*10^6+1)+10^6) se si sostituisce (senza semplificare) e si approssima si ottiene: 5*10^-7 Se invece si semplifica si ottiene Rad2(1000000000001)-1000000 e se si approssima a questo punto si ha 0 Se si fosse approssimato Rad2(1000000000001)-1000000 con 50 cifre si sarebbe ottenuto 4.9999999999987500000000006249999999996875000000001*10^-7 Si sarebbe dovuto approssimare almeno a 16 cifre per ottenere 4.999995*10^-7 ossia un valore confrontabile con quello ottenibile direttamente con una approssimazione a 7 cifre. Fino all'uso di 15 cifre si ottiene 0. Anche con Derive non sempre conviene "semplificare". ** Su Es.3 Per altre informazioni sui fogli elettronici vedi gli Oggetti Matematici. ** Su Es.4 - {Stringa | VariabileStringa | TermineStringa + TermineStringa | FunzioneStringa [(TermineStringa[, TermineStringa]...)]} - Esempi di funzione-stringa a 0 input sono DATE$ e TIME$ - Vi sono anche funzioni a input numerico o misto e output stringa: (se vuoi vedi l'help di QBasic, per es., relativo a CHR$, LEFT$, MID$) ** Su Es.5 1) Si può scrivere, in quanto è un termine sintatticamente corretto; ma non se ne può calcolare il valore: è un termine indefinito. Nei libri di testo, spesso, questi due concetti vengono confusi. ** Su Es.6 1) A seconda delle convenzioni cambia l'interpretazione dei termini: -> 2.5: 2 #1 SIN(x) ·y #2 CaseMode := Sensitive #3 InputMode := Word 2 #4 sin ·xy Se lasciassi la differenza maiuscolo/minuscolo e mettessi la modalità carattere otterrei: #5 InputMode := Character 2 #6 s·i·n ·x·y 2) Per commenti puoi vedere gli Oggetti Matematici. 3) "Muovendosi" in un termine si può evidenziare un sottotermine che poi può essere inserito in una espressione che si sta costruendo con un Copia-Incolla o più semplicemente premendo <F3> o, se è necessario isolare il sottotermine con una coppia di parentesi, <F4>. ** Su Es.7 1-3) sono da collegare a una scarsa padronanza o attenzione alla struttura dei termini (difficoltà nella individuazione dei sottotermini) 4) da collegare a confusioni legate all'uso di convenzioni diverse rispetto a quelle a cui è stato abituato da un insegnamento meccanico del calcolo letterale 5) "-" per "-" fa "+": che c'è di sbagliato? Da qui si potrebbero aprire molte riflessioni sui modi in cui spesso sono introdotti i numeri negativi, il concetto di valore assoluto, di "segno" di un numero (per i linguaggi di programmazione il "segno" è la funzione 0 -> 0, x<0 -> -1, x>0 -> 1), ... 6) "semplifico" 1 con -1, x con -x: che c'è di sbagliato? Se invece che a cancellare, per fare più in fretta, gli alunni fossero educati a sostituire 1-1 e x-x con 0 ... 7) come sopra: ... x/x con 1 ... 8) "porto fuori" B da tutti gli addendi, mi rimangono 3A e 9B: che c'è di sbagliato. Se invece gli alunni fossero educati a riscrivere (con un passag- gio in più) B come 1*B ... ** Su Es.8 1) Alcune proprietà sono dimostrabili a partire da altre, ed è bene fare al- cune dimostrazioni di questo genere. Ad esempio il fatto che A/(B*C)=A/B/C è dimostrabile usando A/D=A*(1/D) e 1/(B*C)=1/B*(1/C). La possibilità di riordinare i termini di un'addizione sarebbe dimostrabile con un procedimen- to induttivo complesso a partire dalla commutatività e dalla associatività di "+", non alla portata degli alunni. Neanche la commutatività e la asso- ciatività sarebbero del resto facilmente dimostrabili a partire dall'algo- ritmo per la addizione, ne' si può pensare di definire assiomaticamente i numeri reali. Si possono convincere gli alunni, ad es., della proprietà del riordino facendoli lavorare su alcuni esempi e sulla base di "interpre- tazioni fisiche": unendo |---| e |-----| e poi |--| ottengo |---|-----|--|, lungo uguale a |-----|--|---|, che avrei ottenuto unendo ..., facendo osser- vare che, comunque, queste proprietà possono essere dimostrate in termini matematici. Per la distributività si può ricorrere alla interpratzione del prodotto come area di rettangoli, per -(A + B) = -A + -B si può ricorrere a: A+B: -->----> -(A+B): <----<-- A B -B -A 2) Solo qualche esempio. Trasformando divisioni possono cambiare i domini: 5/(3/x) non è definito per x=0, 5/3*x lo è. A*0->0 può allargare il domi- nio: 1/x*0+x non è definito per x=0, x è definito ovunque. Rad2(A*B) e Rad2(A)*Rad2(B) possono avere domini diversi. ... Vedi anche alcuni dei commenti a es.7. Approfondimenti sono presenti negli Oggetti Matematici. ** Su Es.9 1) - Fa le cose elencate prima di Es.8 sotto la voce "semplificare" - Inoltre tenta di dare forma polinomiale (in 1 indeterminata) ai termini che sono somme di prodotti (e alle potenze a esponente intero di termini di tal tipo, dopo averle sviluppate) ordinando le variabili secondo un ordine predefinito (x,y,z,a,b,c,...), che può essere modificato usando Manage-Ordering: AA-AC-ABC -> A^2-AC(B+1) [polinomio di grado 2 in A] (1+X)^5+B -> x^5+5X^4+... [polinomio di grado 5 in X] dopo avere scelto l'ordine b,x,y,z,a,c,...: AA-AC-ABC -> -ACB+A^2-AC [polinomio di grado 1 in B] (1+X)^5+B -> B+(X+1)^5 [polinomio di grado 1 in B] - Non tiene conto dei domini: Rad2(x)*Rad2(-x)/Rad2(-x), che (nei reali) ha dominio vuoto, viene trasformato in Rad2(x). Nei complessi Derive in- terpreta Rad2(x) come la soluzione con parte reale non negativa (o, me- glio, con -90 gradi < argomento ≤ 90 gradi) di z^2=x, per cui, per Derive, il termine ottenuto differisce da quello originale solo per il fatto di essere definito anche per x=0 (per Derive Rad2(-1)=i anche se pure -i risolve z^2=-1). - l'ordine con cui opera tutte queste trasformazioni non è sempre il più efficiente, come si è visto nell'ultima semplificazione proposta nel file SIMP: Derive fornisce: -SIN(x)^2/((x-1)*COS(x)+x-1) invece di (1-COS(x))/(1-x). 2) - prima opera una semplificazione, come SIMP, poi dà forma polinomiale in 1 o più indeterminate, prendendo le indeterminate nell'ordine che si è scelto azionando il comando; si ottengono, rispettivamente: 2x^2 + 2xy + 4x + y^2 + 2y + 2, 2x^2 + 2x(y+2) + y^2 + 2y + 2, y^2 + 2y(x+1) + 2(x+1)^2 e y^2 + 2xy + 2y + 2x^2 + 4x + 2 (nella versione Windows, per selezionare le variabili occorre evidenziarle con dei clic nell'ordine voluto, a meno di non battere il comando: vedi la Nota seguente) NOTA: come osservato nel testo, se si preme OK viene visualizzato il comando; volendo, invece di usare il menu Semplifica-Sviluppa si può battere direttamente il comando in tale forma dal menu Author/Crea. Qui sotto è visualizzato il comando di espandere in ambiente razionale rispetto, in ordine, a y,x: / / x \2 2 \ EXPAND | |x + ———| + (x + y + 1) , Rational, y, x | \ \ x / / 3) - con Trivial fattorizza in senso stretto (raccoglimenti a fattor comune e distribuzioni rispetto alla moltiplicazione); inoltre trasforma la somma di divisioni in divisione - con Squarefree riconosce e fattorizza anche le potenze di somme - con Rational è in grado di eseguire fattorizzazioni in termini polino- miali a coefficienti razionali - con Radical può eseguire fattorizzazioni in termini polinomiali a coef- ficienti del tipo m^(p/q) - m,p,q interi - (quando è in grado di farlo, ad es. di fronte alla fattorizzazione di un polinomio di grado 2) - con Complex può ... a coefficienti complessi (quando è in grado) - alcune fattorizzazioni riescono solo restringendo opportunamente il dominio: con Declare si può restringere il dominio di una variabile in modo da PERMETTERE che il termine possa essere fattorizzato (ma, come si è visto in SIMP.mth, la restrizione del dominio non può essere usata per EVITARE che certe trasformazioni vengano eseguite): dichiarando x non negativa Rad2(x*y) viene fattorizzato in Rad2(x)*Rad2(y), imponendo implicitamente che anche y è non negativa; analogamente, dichiarando x non positiva si sarebbe ottenuto Rad2(-x)*Rad2(-y). ** Su Es.10 Si ottiene:  5 4 2·x - x - 2 Si tratta di un polinomio in x di grado 5 che Derive non riesce a scomporre. Derive riesce a scomporre solo particolari polinomi di grado superiore al 4°. Quelli di grado inferiore al 5° li scompone utilizzando i procedimenti per risolvere le eq. algebriche. Ricordiamo che per le equazioni di grado inferiore al 5° c'è la possibilità di esprimere le soluzioni in funzione dei coefficienti utilizzando (composizioni di) quattro operazioni ed estrazioni di radice. Questo fatto a volte è espresso erroneamente dicendo che "solo le equazioni di grado inferiore al 5° sono risovibili esattamente": è una frase che non ha molto senso, in quanto con un algoritmo (come quello con cui nella scheda 1 abbiamo risolto x^3=100) si possono trovare tutte le soluzioni di una qualunque equazione polinomiale con tutte le cifre che si vogliono (del resto, per le equazioni di 5° e 6° esite la possibilità di esprimere le soluzione in funzione dei coefficienti usando altre classi di funzioni - ellittiche e iperellittiche(*)). L'errore è forse frutto di un uso, che sarebbe meglio evitare, di chiamare "calcolo esatto" il "calcolo simbolico", e del non tener conto che ciò che è risolvibile simbolicamente dipende dall'ambiente in cui ci si mette, ossia dai simboli funzionali che si ammette di utilizzare. Se si decide di usare solo simboli funzionali per le quattro operazioni e per le potenze ad esponente razionale, allora è corretto dire che, con questa convenzione, solo le equazioni di grado inferiore al 5° sono tutte risolvibili simbolicamente. Con il programma Polinomi del software MaCoSa avrei invece ottenuto la fattorizzazione (in ambiente reale): 2 (x^2 + 1.447626x + 0.8594025)(x^2 - 0.822845x + 1.034512)(x - 1.124781) che il programma realizza con metodi numerici. (*) Le funzioni ellittiche sono generalizzazioni delle funzioni usate per esprimere la lunghezza di un arco di ellisse (grosso modo si ottengono aggiungendo ai tipi di funzione elencati sopra l'impiego di operatori del tipo "integrale tra h e x della radice di ..."). Quelle iperellittiche sono ulteriori generalizzazioni. [inizio scheda] [schede: 1 2 3 4 5 6 7 8] [indice schede]