Struttura di un termine
Con struttura di un termine [ formule] si intende il modo in cui esso viene costruito a partire dagli atomi, cioè dalle variabili e dalle costanti che compaiono in esso.
Ad es. √2 + | A·B | e √A + | B·5 | sono termini diversi ma con la stessa struttura. |
| | |||
C | 3 |
+ _____/ \______ SQR / | ____/ \____ 2 * C __/ \__ A B |
+ _____/ \______ SQR / | ____/ \____ A * 3 __/ \__ B 5 |
I termini man mano ottenuti costruendo un termine si chiamano sottotermini di esso.
+
___/ \___
SQR /
| ___/ \___
2 * C
__/ \__
A B |
+
___/ \___
SQR /
| ___/ \___
2 * C
__/ \__
A B |
+
___/ \___
SQR /
| ___/ \___
2 * C
__/ \__
A B | ||
radice quadrata | moltiplicazione | divisione |
I termini possono essere scritti in modi diversi.
Ad esempio il termine precedente può essere scritto anche
Convenzioni: un termine in cui compaiano più simboli di operazione e non compaiano parentesi è da intendersi come "abbreviazione" del termine ottenuto aggiungendo parentesi in questo modo: (a) si considerano i simboli di operazione nell'ordine di priorità (1) "^", (2) "·" e "/", (b) nel caso si succedano due simboli con la stessa priorità viene considerato prima quello a sinistra. Ad es. 5+2/3 sta per 5+(2/3) in quanto "/" lega più di "+"; analogamente | |
La scrittura delle divisioni nella forma "a più piani" è una abbreviazione per eliminare eventuali parentesi dal primo e dal secondo termine e dall'intera divisione; ad esempio |
4+7 2+3 1: 5 6 |
Si noti che (23)4 equivale a (2^3)^4,
mentre il termine rappresentato a destra spesso è interpretato come 2^(3^4).
Per evitare ambiguità, nel caso di scritture di potenze che impieghino più di 2 piani
conviene usare parentesi per indicare le priorità ed evitare scritture come quella a destra;
nel caso specifico per intendere 2^(3^4) occorrerebbe usare come esponente (34). Per altro, nel caso di "^" la convenzione (b) di associare a sinistra non è accettata da tutti i software: alcuni interpretano 2^3^4 come (2^3)^4, altri come 2^(3^4). In questi casi per evitare confusioni è bene non eliminare mai le parentesi. |
4 3 2 |
Si osservi che l'operazione "principale" di un termine è quella che lega meno, ossia quella che ha "priorità" inferiore. |
Vi sono anche convenzioni che consentono di omettere
il simbolo di moltiplicazione:
2(x+3) e (a+b)(1+c) stanno per 2·(x+3) e (a+b)·(1+c),
ossia lo si può omettere quando il secondo termine della moltiplicazione è racchiuso tra parentesi;
πR , Rπ e 5x stanno per π·R, R·π e 5·x,
ossia lo si può omettere quando è chiaro dal contesto che sono moltiplicati
due simboli di costante o di variabile; in casi particolari, in cui si faccia la convenzione di indicare le variabili
con singole lettere e mai non con nomi formati da più lettere, si può scrivere
anche bc (con un piccolo spazio in mezzo) al posto di b·c
(in qualche manuale di Fisica viene usata la, strana, convenzione di interpretare
Le parentesi non servono se si descrive un termine mediante un grafo ad albero. Nella scrittura usuale sono invece indispensabili. Le coppie di parentesi più interne, come si è visto sopra, indicano calcoli che sono "prioritari", cioè che corrispondono a parti più basse del grafo ad albero. Spesso si usano coppie di parentesi di dimensioni o forme diverse per facilitare la lettura di un termine, ma forma e dimensione delle parentesi non indicano alcuna priorità, che è espressa solo dalla collocazione delle parentesi stesse (se in qualche libro hai letto di priorità tra parentesi tonde, quadre e graffe, scordatele: sono solo sciocchezze). Le parentesi, in matematica, sono usate anche con altri significati, che scoprirai man mano.
Qui, nel punto (03), trovi come esercitarti sull'uso dei grafi ad albero di termini con R.
È molto importante saper analizzare la struttura dei termini. Serve per:
calcolare seguendo un ordine corretto il valore di un termine numerico, interpretare il significato di una formula, costruire una formula che rappresenti un certo procedimento di calcolo;
fare correttamente trasformazioni di termini/formule in termini/formule equivalenti;
descrivere un termine in un linguaggio diverso: impostarne il calcolo su una CT, descriverlo in un linguaggio di programmazione o in un programma per il calcolo simbolico.
|
|
Altrimenti posso usare: | 9 4 2 7 | ||||||||||
| |||||||||||
ad esso equivalente e battere: | 9 4 2 7 |
Quando si manipola un termine in genere se ne cambia la struttura. Vediamo un esempio riferito alla applicazione della regola di riscrittura [ ternini equivalenti] a·(b+c+ ) a·b+a·c+ per distribuire il fattore moltiplicativo a tra i termini di una sequenza di addizioni, cioè per portarlo dentro al sottotermine (b+c+ ): 4·157 = 4·(150+7) = 4·150+4·7 = 600+28 = 628
Nel passaggio da 4·(150+7) a 4·150+4·7 la struttura del termine è cambiata nel modo raffigurato a fianco: l'operazione "principale" non è più la moltiplicazione, ma la addizione, cioè il termine si presenta come una somma di termini invece che come un prodotto di termini. |
La struttura di un termine può essere descritta anche elencando le operazioni che vi compaiono nell'ordine in cui vanno eseguite. Questo è, essenzialmente, ciò che fa un programma traduttore [ calcolatore 2] quando trasforma un'assegnazione in una sequenza di istruzioni in linguaggio macchina.
Ecco come viene trasformata l'assegnazione (scritta in un linguaggio Basic) corrispondente alla formula a fianco: |
3 2 ·-x w = + x·5 9 - 1 |
ASSEGNAZIONE: W = (2^3*-X)/(9-1)+X*5 variabili->REGISTRI: R0 = (2^3*-R1)/(9-1)+R1*5 + Traduzione in _________/ \_________ istruzioni elementari: / * R2 = 2 ^ 3 _____/ \_____ ____/ \____ R3 = - R1 * - X 5 R4 = R2 * R3 __/ \__ __/ \__ R5 = 9 - 1 ^ - 9 1 Grafo ad albero R6 = R4 / R5 / \ | corrispondente R7 = R1 * 5 2 3 X R0 = R6 + R7 |
Ecco i passaggi con cui da tale grafo si può risalire alla scrittura nel linguaggio di programmazione, partendo dai nodi a sinistra in basso:
2^3 2^3*x (2^3*x)/(9-1) (2^3*x)/(9-1)+x*5
Qui e qui trovi vari esercizi di questo tipo.
[ Se vuoi, in R puoi "caricare" la "libreria" codetools che contiene il comando showTree(quote(...)) che fornisce in ordine l'operazione principale e le operazioni via via secondarie, come si leggono sul grafo ad albero precedente ("tree" significa "albero"):
library(codetools) showTree(quote( (2^3*-x)/(9-1)+x*5 )) (+ (/ ("(" (* (^ 2 3) (- x))) ("(" (- 9 1))) (* x 5)) Le scritte "(" segnalano solo la presenza di più parentesi, con la la possibiità di trasformare le "((...))" in "(...)", come se fosse: (+ (/((* (^ 2 3) (- x)))((- 9 1))) (* x 5)) (+ (/ (* (^ 2 3) (- x)) (- 9 1)) (* x 5)) ovvero in questo modo: walkCode(quote( (1^2*-3)/(4-5)+6*7 )) `+` `/` `(` `*` `^` [1] 1 [1] 2 `-` [1] 3 `(` `-` [1] 4 [1] 5 `*` [1] 6 [1] 7 Le '(' indicano solo l'avvio di una sottodiramazione; per questo non ci sono le ')'. Come trasformare quanto sopra nel grafo seguente:
Se vuoi, se sei in ambiente Windows, cliccando QUI, puoi attivare il programma Compilazione (o il più semplice programma Albero) che realizza e visualizza trasformazioni e grafi come nell'esempio precedente (per avviare il programma, dalla finestra di dialogo che si apre scegli "Apri", non "Salva").
Puoi trovare anche un programma per calcolare termini numerici in cui devi man mano introdurre numeri e funzioni in ordine di composizione, nella cosiddetta notazione postfissa, con la quale il termine descritto sopra viene introdotto come: