Gli argomenti
I materiali
I link utili
Le calcolatrici
Download
professione progetto

Geometria

Unità didattiche

La retta Versione PDF

di Rocco Fazio

L'unità si riferisce al programma del secondo/terzo anno del liceo scientifico tradizionale o sperimentale P.N.I.

Obiettivo

Realizzare una libreria di semplici funzioni per le calcolatrici TI 92, TI 92 Plus e TI 89 utilizzabili per la risoluzione dei problemi della geometria analitica della retta.

Prerequisiti
1. Le liste e le operazioni algebriche sulle liste.

La struttura dati più adatta a rappresentare punti del piano cartesiano con le calcolatrici simboliche è senz'altro la lista; una lista è una sequenza di "oggetti" (numeri ad esempio, ma non solo numeri) racchiusi tra parentesi graffe e separati da una virgola : {3,-2,1}.
Nell'insieme delle liste si può operare, tra l'altro, con le operazioni di addizione, sottrazione, moltiplicazione, divisione e prodotto per un numero

2. Realizzazione di una programma che, acquisite in input le coordinate di due punti, restituisca una lista contenente le equazioni parametriche della retta passante per essi.

Il linguaggio di programmazione delle TI-92/ 89 consente di scrivere programmi e funzioni. Una funzione è un insieme di istruzioni, riconosciute con un nome simbolico, che possono essere richiamate da un programma o da un'altra funzione; alla funzione si possono fornire dati (i cosiddetti parametri) ed essa a sua volta può restituire dati. Le nostre calcolatrici possiedono una cospicua libreria di funzioni predefinite (circa 300); tuttavia l'utente può avere la necessità di costruirne altre adatte a soddisfare le esigenze più disparate.

Ci si può chiedere quando è opportuno scrivere una funzione e quando invece è necessario scrivere un programma; non esiste una regola precisa, ma in alcuni casi la scrittura di una funzione è indispensabile. Per esempio:
- se i valori calcolati devono essere rappresentati graficamente o riportati in una tabella;
- se i valori calcolati devono essere inseriti in una espressione.

La stesura di una funzione è legata però ad alcune restrizioni:

Per questo lavoro scegliamo di realizzare esclusivamente delle funzioni, che ci consentono di inserire i valori forniti da esse all'interno di espressioni.

L'immissione di una nuova funzione è un'operazione molto semplice: si apre il menu APPLICATIONS (con l'apposito "tastone"), si seleziona la voce Program Editor e successivamente la voce New

Nella successiva finestra di dialogo occorrerà indicare se si vuol creare una funzione o un programma, e il nome e la cartella nella quale sarà memorizzata:

Nel nostro caso abbiamo deciso di memorizzare la nostra funzione nella cartella geom2d con il nome rettap2p. Dopo aver premuto due volte il tasto ENTER, comparirà un modello vuoto di funzione:

Nel modello sono inseriti gli elementi essenziali per la scrittura di una funzione:
rettap2p: è il nome interno della funzione (la scelta del nome ha lo scopo di ricordarci che la funzione calcola l'equazione parametrica della retta passante per due punti), che coincide con il nome con cui la funzione è inserita nella memoria della calcolatrice; nelle parentesi andranno elencati, separati dalla virgola, tutti i parametri che si devono conferire alla funzione;
Func... EndFunc : sono i due comandi che delimitano il blocco delle istruzioni della funzione.

La retta passante per i punti  e  ha equazioni parametriche

 (1)

Riempiamo pertanto il modello della nostra funzione nel modo seguente:

rettap2p(a,b) 
 	Func 
 	{a[1]+t*(b[1]-a[1]),a[2]+t*(b[2]-a[2]) 
 	EndFunc 

Nelle parentesi che seguono il nome della funzione abbiamo indicato come parametri le due variabili a e b, mentre nell'unica istruzione compresa tra i comandi Func ed EndFunc abbiamo costruito una lista i cui elementi sono le espressioni rispettivamente dell'ascissa e dell'ordinata di un punto generico della retta in funzione del parametro t (con a[i] si individua l'i-esimo elemento della lista a).

Ecco per esempio il calcolo delle equazioni parametriche della retta passante per i punti  e  :

3. Realizzazione di un programma per la determinazione dell'equazione cartesiana di una retta passante per due punti distinti.

Il procedimento per la scrittura della funzione è identico a quello seguito nel caso precedente; il codice della funzione rettac2p è il seguente:

rettac2p(a,b) 
 	Func 
 	Local lista,espress 
 	
 	If a[1]=b[1] Then 
 	x=a[1] 
 	Else 
 	rettap2p(a,b)  lista 
 	solve(x=lista[1],t)  espress 
 	y=lista[2]|espress 
 	EndIf 
EndFunc 

L'istruzione Local è stata utilizzata per definire due variabili, lista ed espress; il costrutto If..Then..Else..EndIf è stato utilizzato per distinguere il caso della retta parallela all'asse delle ordinate, più semplice, da quello della retta non verticale. In quest'ultima situazione l'algoritmo si articola in tre passi:

- rettap2p(a,b)  lista

chiama la funzione rettap2p ottenendo le equazioni parametriche della retta che assegna alla variabile lista;

- solve(x=lista[1],t)  espress

risolve la prima equazione parametrica rispetto al parametro t e assegna il risultato alla variabile espress;

- y=lista[2]|espress

sostituisce nella seconda equazione parametrica la variabile espress ottenendo l'equazione cartesiana della retta.

Ecco per esempio il calcolo delle equazioni cartesiane delle rette passanti per i punti  e  :

4. Realizzazione di un programma per la determinazione delle coordinate del punto di intersezione di due rette

Il problema non è di difficile soluzione, tuttavia le cose sono complicate dal caso delle rette parallele. Si può procedere nel modo seguente:

- scriviamo la funzione coefret che, acquisita in input un'equazione lineare in x ed y, la rende implicita e fornisce in output i coefficienti a, b, c:

coefret(rr)
Func
Local a,b,c
left(rr)-right(rr)=0  rr - rende implicita l'espressione rr
left(rr)  rr - elimina la parte destra dell'espressione
rr|x=0 and y=0  c - determina c
rr-c  rr
rr|x=1 and y=0  a - determina a
rr|x=0 and y=1  b - determina b
Return {a,b,c}
EndFunc

Nella funzione si è fatto un intenso uso dell'operatore | (with) che consente di assegnare temporaneamente un valore ad una variabile;

- scriviamo poi la funzione intersez che restituisce una lista contenente le coordinate del punto di intersezione delle due rette o un messaggio nel caso in cui queste siano parallele:

intersez(rr1,rr2) 
 	Func 
 	Local stringa,cf1,cf2,soluz 
 "rette parallele"  stringa 
        	
 coefret(rr1)  cf1 
 	coefret(rr2)  cf2 
 If cf1[1]*cf2[2]  cf1[2]*cf2[1] Then simult([[cf1[1],cf1[2]][cf2[1],cf2[2]]],[[ªcf1[3]][ªcf2[3]]])  soluz 
 	matÐlist(soluz)  soluz 
 	Else 
 	stringa 
 	EndIf 
 	EndFunc 

Nella funzione si utilizza il comando SIMULT(coeff,costanti) che restituisce il vettore colonna delle soluzioni del sistema lineare avente coeff come matrice dei coefficienti e costanti come vettore colonna dei termini noti. Ecco qualche esempio:

5. Realizzazione di un programma per la determinazione dell'altezza di un triangolo note le coordinate dei suoi vertici.

Si può procedere scrivendo le funzioni seguenti:

- rettapp, che fornisce l'equazione di una retta di assegnata pendenza passante per un punto;

rettapp(pend,a) 
 	Func 
 	y=expand(pend*(x-a[1])+a[2]) 
 	EndFunc 

- pendenza, che calcola la pendenza della retta passante per due punti;

pendenza (a,b) 
 	Func 
 	(b[2]-a[2])/(b[1]-a[1]) 
 	EndFunc 

- altezza, che fornisce infine l'equazione della retta sostegno all'altezza condotta da un punto del triangolo al lato opposto:

altezza(a,b,c) 
 	Func 
 	If b[1]=c[1] Then 
 	y=a[2] 
 	ElseIf b[2]=c[2] Then 
 	x=a[1] 
 	Else 
 	rettapp(ª1/(pendenza(b,c)),a) 
 	EndIf 
 	EndFunc 

Ecco alcuni esempi :

6. Realizzazione di un programma per la determinazione dell'asse di un lato di un triangolo, noti i vertici.

Il programma è molto semplice e non necessita di spiegazioni:

asse(a,b) 
 	Func 
 	If a[1]=b[1] Then 
 	y=(a[2]+b[2])/2 
 	ElseIf a[2]=b[2] Then 
 	x=(a[1]+b[1])/2 
 	Else 
 	retta(ª1/(pendenza(a,b)),(a+b)/2) 
 	EndIf 
 	EndFunc 

Ecco gli esempi relativi:

7. Realizzazione di un programma per la determinazione della distanza punto-punto e punto-retta.

La realizzazione di questo programma è un tantino complessa in quanto occorre prima di tutto individuare se i parametri sono due punti o un punto e una retta. Allo scopo si utilizza l'istruzione della calcolatrice GetType(variabile), che restituisce un'espressione che specifica il tipo di dato contenuto in variabile (per un elenco completo dei tipi di variabile fare riferimento al manuale d'istruzioni della Ti 89 o 92).
Per il resto, il procedimento non è molto diverso da quello solitamente utilizzato nelle risoluzioni con carta e penna (con il vantaggio che occorre farlo una volta sola):

distanza(expr1,expr2) 
 	Func 
 	Local punto,retta,x0,y0,a,b,c 
 	If getType(expr1)="LIST" and getType(expr2)="LIST" Then 
 	Return §((expr1[1]-expr2[1])^2+(expr1[2]-expr2[2])^2) 
 	EndIf 
 	If getType(expr1)="LIST" Then 
 	expr1  punto 
 	expr2  retta 
 	Else 
 	expr2  punto 
 	expr1  retta 
 	EndIf 
 	punto[1]  x0 
 	punto[2]  y0 
 	coefret(retta)[1]  a 
 	coefret(retta)[2]  b 
 	coefret(retta)[3]  c 
 	Return abs(a*x0+b*y0+c)/(§(a^2+b^2)) 
 	EndFunc 

L'istruzione RETURN permette di uscire dal programma restituendo eventualmente l'espressione che lo segue.

L'immagine mostra vari esempi di calcolo:

8. Realizzazione di una funzione per la determinazione dell'area di un triangolo di cui sono note le coordinate dei vertici.

È sufficiente mettere insieme una parte di ciò che è stato fatto finora:

areatri(a,b,c) 
 	Func 
 	Local stringa,espress 
 "punti allineati"  stringa 
 	rettac2p(a,b)  espress 
 	If (espress|x=c[1] and y=c[2]=true) Then 
 	Return stringa 
 	Else 
 	distanza(b,rettac2p(a,c))*distanza(a,c)/2 
 	EndIf 
 	EndFunc 

Ecco le schermate relative:

Icona
Commenti sull'argomento

Se sei un iscritto a Cartesio puoi lasciare il tuo commento su questo argomento. Per iscriverti, clicca qui.

Al momento non ci sono commenti.



Questo sito Credits