<< pagina principale < ······················ << articoli < ······················

(Dis)Equazioni

di Roberto Ricci

Liceo Scientifico "A.Righi", Bologna

Premessa

Preliminari

(Dis) equazioni di I grado

(Dis) equazioni di II grado

(Dis) equazioni di grado superiore al II

(Dis)equazioni razionali fratte

(Dis) equazioni irrazionali

Appendice

Per una lettura corretta del testo occorre avere installato i font di caratteri TI-92 symbols e TI92PC

 

 

 

Premessa

I progressi tecnologici avvenuti negli ultimi 10 anni mettono a disposizione degli insegnanti di matematica alcuni SW didattici che promettono di, e a mio avviso possono, migliorare la professionalità docente senza quelle forzature o inevitabili ampliamenti di contenuti che avevano già segnato la prima fase, non ancora matura, di introduzione delle tecnologie nella didattica. E’ così possibile estendere un approccio “sperimentale” anche a argomenti tradizionali, o affrontare problemi con più attenzione ai “saper fare” piuttosto che ai “fare”, differenziando le due attività. E’ così possibile per il docente migliorare la qualità dell’esposizione, non solo migliorando la qualità dei disegni - non sempre necessaria, dato che la matematica può anche essere ancora considerata come l’abilità di formarsi immagini mentali precise da raffigurazioni imprecise o incomplete -, ma soprattutto aumentando la capacità di produrre esempi numerosi per illustrare fatti o concetti anche in tempi ristretti. Inoltre una calcolatrice inserita nell’attività didattica amplia l’ambito dei numeri oltre il ridotto repertorio di numeri semplici, né troppo grandi né troppo piccoli, caratteristici degli esercizi tradizionali concepiti per non complicare il calcolo numerico. Quello che si vuole mostrare in questo quaderno/articolo è anche la possibilità di resistere alla tentazione di arrendersi di fronte alle difficoltà incontrate - da sempre, oggi forse più drammatiche nel momento in cui si chiede alla matematica e alle materie scientifiche in genere di essere accessibile a tutti - da molti studenti nella acquisizione degli automatismi di calcolo algebrico necessari anche solo per controlli minimi dei risultati prodotti dalle macchine. Non si può evitare di fare i conti con gli effetti della pigrizia mentale già riscontrati a seguito dell’uso delle calcolatrici numeriche. L’obiettivo, assolutamente “tradizionale” dell’apprendimento di tecniche di calcolo algebrico, per la risoluzione di equazioni e disequazioni algebriche viene qui perseguito attraverso attività di “insegnamento” a una calcolatrice simbolica, del docente insieme agli studenti, per potenziare le attuali limitate capacità di manipolazione simbolica della macchina. Qui lo strumento informatico non consente tanto di accorciare i tempi; richiede invece di concentrarsi anche su una conoscenza tecnica del linguaggio specifico della macchina, oltre che sui “saper fare” caratteristici dell’argomento matematico. Per una classe di 3 liceo scientifico, quale quella a cui è stata concepita tale attività, la prima parte contiene qualche novità e richiede impegno soltanto per il “saper fare” e il “fare” con la calcolatrice: conoscenza di function predefinite per la manipolazione simbolica e tipi di dati, struttura di una function e sintassi per esprimere le strutture fondamentali del linguaggio di programmazione procedurale. Potremmo dire che una tale attività permette di alleggerire la fatica del fare algebra per apprendere il saper fare algebra spostando la fatica come quella di saper come fare -strutture linguistiche per la programmazione procedurale, strutture dati, function predefinite- e di fare -distrazioni di battitura, interpretazione e altri accidenti vari -. Possono ciononostante verificarsi problemi di sovrapposizione tra obiettivi legati al saper fare algebra, saper come fare con lo strumento informatico. Il vantaggio di sostituire la fatica di fare algebra con la fatica di saper come fare e farlo bene con uno strumento informatico, dovrebbe essere ampiamente ripagato dalla versatilità della nuova abilità informatica, più ricca di potenzialità del solo saper fare algebra, spendibile su altri argomenti di matematica. Ricordiamo che la fatica si può misurare con l’incidenza di errori di distrazione, frequenti anche nell’uso di una calcolatrice. Interessante considerare anche questo fatto:una volta creata una nuova function, questa va messa alla prova. Lo si fa anche sulla base di casi particolari, oltre che alla convinzione raggiunta anche per fattori come la semplicità del programma, ciò che non va confuso con la dimostrazione. Ci si rende conto che possono essere imprevedibili i controesempi - casi per cui la function non funziona come si vorrebbe! Anche solo per i limiti delle function predefinite della macchina stessa; quindi c’è lavoro di adeguamenti successivi

Preliminari

Assicurati innanzitutto che 3 Exact/Approx sia posto in Auto, poi elimina dalla memoria le assegnazioni di valore alle variabili rappresentate con una singola lettera con ˆ Clear a-z.

Come primo approccio alla calcolatrice grafica TI-92, opera in ambiente " . Scrivi la seguente espressione

a* x- b+x ¸

La calcolatrice rielabora e visualizza …………………

Esamina ora l’operatore ANS[1], per richiamare una precedente espressione, premendo insieme i tasti,

2 ±

La calcolatrice visualizza …………………

Esamina ora l’operatore per effettuare sostituzioni premendo insieme i tasti 2 Í .

2 ± 2 Í a =ë 2

La calcolatrice rielabora e visualizza …………………

Attenzione alla differenza tra il tasto · per indicare l’opposto e il tasto | per indicare l’operatore di differenza.

Se inoltre digiti

2 ± 2 Í x = t + 1

la calcolatrice rielabora e visualizza …………………

Attenzione: la calcolatrice TI-92 non accetta sostituzioni tipo x=x+1 in cui a una variabile è sostituita un'espressione nella stessa variabile.

Calcola inoltre le seguenti espressioni per una introduzione agli operatori logici not, and e or e al loro impiego in eguaglianze algebriche :

not x = ë 1

La calcolatrice rielabora e visualizza …………………

not x > 1

La calcolatrice rielabora e visualizza …………………

x <ë 1 and x >1

La calcolatrice rielabora e visualizza …………………

x <1 and x >1

La calcolatrice rielabora e visualizza …………………

not (x ³ ë 1 and x < 2)

Per ottenere il simbolo ³ oppure £ oppure ¹ digitare contemporaneamente ¥ > oppure ¥ < oppure ¥ =

La calcolatrice rielabora e visualizza …………………

 

 

 

(Dis) equazioni di I grado

In ambiente " trascrivi la seguente equazione di I grado: x – (3 – 2·x) = 4 – 3·x.

Premendo ¸ la calcolatrice visualizza ……………………………………………….

Evidentemente ha applicato le note proprietà …………………………………………….

Ricorda: risolvere l’equazione significa trasformarla, ma in modo tale da non cambiare l’insieme delle soluzioni, fino a ottenere la forma x = numero oppure numero1 = numero2. Nel primo caso {numero} è l’insieme delle soluzioni, nel secondo caso: se l’uguaglianza è vera l’insieme delle soluzioni è ………………, altrimenti l’insieme delle soluzioni è ………………

Digita dunque 2 ± +3 per aggiungere 3 a entrambi i membri dell’equazione in modo da ottenere …………….

Digita dunque 2 ± …… in modo da ottenere 6·x = 7.

Digita infine 2 ± …….. per ottenere x = ……

Ora digita , seleziona Solve( e digita ¸ .

Completa la linea di edizione con Solve(x – (3 – 2* x) = 4 – 3* x, x). Il primo argomento di Solve(equazione, variabile) puoi inserirlo muovendoti con il cursore @ fino a raggiungere la linea di " nella quale è rimasto il testo dell’equazione. Il secondo argomento rappresenta la variabile nella quale va risolta l’equazione. Digita ¸ e confronta il risultato con quello precedentemente calcolato.

Utilizza ora Solve(equazione, variabile) per risolvere a·x + b = 0 prendendo come incognita la variabile x.

La calcolatrice rielabora e visualizza …………………

Correggi il risultato visualizzato: ………………………………

Puoi utilizzare Solve(equazione, variabile) anche per risolvere a·x + b = 0 prendendo come incognita la lettera a oppure la lettera b, che di solito sono considerati parametri, cioè variabili che saranno fissate prima di pensare x come variabile.

Utilizza ora Solve(equazione, variabile) per risolvere x – (3 – 2·x) = 4 – a·x

La calcolatrice rielabora e visualizza …………………

Correggi il risultato visualizzato: ………………………………

Possiamo migliorare le prestazioni di Solve definendo una nuova function.

In ambiente O Program Editor/New seleziona tra Program e Function questa seconda opzione. Attribuisci poi il nome Soll alla funzione inserendolo a fianco di Variable: Infine premi ¸ ¸ .

La struttura di una function è

:NomeFunction(argomento1, argomento2, …)

:Func

:EndFunc

I due punti sono un segnale di inizio riga inserite dalla macchina.

Inserisci a questo punto le righe seguenti:

Soll(equaz,xx)

Func

Local aa, bb, binomio

left(equaz)- right(equaz) ! binomio

binomio | xx=0 ! bb

(binomio – bb) /xx ! aa

Return aa¹ 0 and Solve(xx=ë bb/aa,xx) or aa=0 and bb=0

EndFunc

La prima riga definisce le variabili locali, quelle che nascono in fase di esecuzione della function, automaticamente eliminate al termine.

Il segno ! , che si ottiene digitando il tasto § , significa che alla variabile a destra viene assegnato il risultato dell’espressione a sinistra.

Le function predefinite left(dis/equazione) e right(dis/equazione) restituiscono rispettivamente l’espressione a destra e l’espressione a sinistra del segno di uguale o diseguale.

Il comando Return precede l’espressione risultato della function.

Al posto di Solve(xx=ë bb/aa,xx) si potrebbe usare anche solo xx=ë bb/aa; tuttavia in quest’ultimo caso la calcolatrice visualizza nella forma aa* xx+bb=0

Torna in ambiente " e calcola Soll(a* x=b+x,x).

La calcolatrice rielabora e visualizza …………………

Calcola poi Soll(a* x=b+a* x,x).

La calcolatrice rielabora e visualizza …………………

Calcola ora Soll(1=1,x).

La calcolatrice visualizza …………………………………………

Con una function come quella definita occorre che l’argomento equaz non sia già del tipo numero1=numero2; altrimenti le function predefinite left(equaz) e right(equaz) non producono alcun valore ma in fase di esecuzione viene segnalato un errore. Infatti la TI-92 semplifica un'uguaglianza numerica in true o false. Per rimediare al problema inseriremo un controllo preliminare della condizione

string(equaz)="true" or string(equaz)="false"

dove string(argomento) è una function predefinita che ha per valore il contenuto della variabile argomento trasformato in formato stringa.

Soll(equaz,xx)

Func

Local aa, bb, binomio

If string(equaz)="true" or string(equaz)="false" Then

Return equaz

Else

left(equaz)-right(equaz) ! binomio

binomio| xx=0 ! bb

(binomio – bb) /xx ! aa

Return aa¹ 0 and Solve(xx=ë bb/aa,xx) or aa=0 and bb=0

EndIf

EndFunc

 

In ambiente " scrivi la seguente disequazione di I grado: x – (3 + 8·x) > 4 – 3·x.

RiSolverla significa trasformarla via via in modo da ottenere infine una disequazione equivalente del tipo x > numero oppure x < numero oppure numero1 > numero2. ( In quest’ultimo caso l’insieme delle soluzioni è tutto  quando la disuguaglianza è …… oppure l’insieme vuoto Æ quando la disuguaglianza è ……). Registra dunque la sequenza dei passaggi:

utilizza 2 ± + ……… sommando così la stessa espressione a entrambi i membri della disequazione in modo da eliminare il termine contenente la variabile dal II membro, visualizzando ë 5xì 3>4;

utilizza 2 ± + …….. sommando così la stessa espressione a entrambi i membri della disequazione appena ottenuta in modo da eliminare il termine di grado 0 dal I membro, visualizzando ………….;

utilizza 2 ± / …….. dividendo così entrambi i membri della disequazione appena ottenuta in modo da ottenere solo x al I membro visualizzando …………..

La sequenza delle disequazioni visualizzate, tutte equivalenti tra loro in fatto di soluzioni, conduce a una disequazione particolarmente semplificata dalla quale risulta evidente l’insieme delle soluzioni.

Utilizza ora Solve(disquazione, variabile) per risolvere x – (3 + 8·x) > 4 – 2·x.

Cosa ottieni ? ………………….

Puoi ottenere questo risultato passo passo: …………………………………………..

…………………………………………………………………………………………

Utilizza ora Solve(disequazione, variabile) per risolvere a·x + b > 0 nella variabile x.

La calcolatrice rielabora e visualizza …………………………...

Il risultato dovrebbe essere invece: ………………………………

Si può utilizzare la function predefinita Solve anche per risolvere a·x + b > 0 nella lettera a o nella lettera b che di solito si considerano parametri. Utilizzala dunque per risolvere a·x + b > 0 nella variabile b.

La calcolatrice rielabora e visualizza …………………………...

Ora ripeti passo passo con la calcolatrice la risoluzione della disequazione a·x + b > 0 nella variabile x.

Inserisci la disequazione. Utilizza 2 ± e sottrai b a entrambi i membri.

Se a=0 la disequazione ha soluzione Æ quando …………. e ha soluzione Ñ quando ………….

Se invece a ¹ 0, utilizzando 2 ± / a viene visualizzato ……………..

Quella ottenuta non è una disequazione equivalente a quella iniziale.

Correggi il risultato visualizzato: ………………………………

Possiamo migliorare le prestazioni definendo una nuova function.

posPol(binomio,xx)

Func

Local aa, bb, binomio

binomio| xx=0 ! bb

(binomio – bb) /xx ! aa

Return aa>0 and xx>ë bb/aa or

aa=0 and bb>0 or

aa<0 and xx<ë bb/aa

EndFunc

Le due righe dopo Return, così organizzate per una migliore lettura, dovranno invece essere scritte su un’unica riga.

Risolvi ora le disequazioni da 6 a 8 a pag 648 del libro di testo.

Risolvi inoltre i sistemi da 127 a 130 a pag 651 del libro di testo. Ricordando che risolvere un sistema di (dis)equazioni significa trovare i valori della variabile che risolvono contemporaneamente tutte le (dis)equazioni, la soluzione del 127 si può ottenere con il calcolo:

PosPol(ë (x- 3),x) and not posPol(ë (x- 4), x).

 

 

 

 

(Dis) equazioni di II grado

Utilizza ora Solve(equazione, variabile) per risolvere -x2 + 2·x + 1 = 0.

La calcolatrice rielabora e visualizza …………………

Utilizza Solve(equazione, variabile) per risolvere -x2 + 2·x - 4 = 0.

La calcolatrice rielabora e visualizza …………………

Utilizza Solve(equazione, variabile) per risolvere x2 + 2·x + 1 = 0.

La calcolatrice rielabora e visualizza …………………

Utilizza Solve(equazione, variabile) per risolvere x2 + a = 0.

La calcolatrice rielabora e visualizza …………………

Utilizza ora Solve(equazione, variabile) per risolvere a·x2 + b·x + c = 0.

La calcolatrice rielabora e visualizza …………………

Correggi il risultato visualizzato:

se a = 0

allora ……………………………

altrimenti

se b2- 4ac > 0

allora …………………………..

altrimenti

se b2- 4ac = 0

allora ………………………

altrimenti …………………………

 

Possiamo migliorare le prestazioni definendo due nuove function. La prima calcola il grado di un polinomio:

gradoPol(pp,xx)

Func

Local nn

0! nn

(pp- (pp|xx=0))/xx ! pp

While string(pp) ¹ "0"

(pp - ( pp|xx=0) ) /xx ! pp

nn+1! nn

EndWhile

Return nn

EndFunc

La seconda intende migliorare le prestazioni miglior della function predefinita Solve.

Soll(equaz,xx)

Func

Local aa, bb, cc, delta, pp

If string(equaz)="true" or string(equaz)="false" Then

Return equaz

Else

left(equaz)- right(equaz) ! pp

If gradoPol(pp,xx) =0 Then

Return pp=0

ElseIf gradoPol(pp) =1 Then

pp| xx=0 ! bb

(pp – bb) /xx ! aa

Return aa¹ 0 and xx=ë bb/aa or aa=0 and bb=0

ElseIf gradoPol(pp) =2 Then

pp| xx=0 ! cc

( pp – cc) /xx = 0 ! bb

bb| xx = 0 ! bb

( pp – bb*xx - cc) /xx^2 ! aa

bb^2- 4*aa*cc ! delta

Return aa=0 and Soll(bb*x+cc=0,xx) or

aa¹ 0 and

(

delta= 0 and Solve(xx=ë bb /(2*aa),xx) or

delta> 0

and Solve(xx=(ë bb-Ö delta)/(2*aa),xx)

and Solve(xx=(ë bb+Ö delta)/(2*aa),xx)

)

Else

Return pp=0

EndIf

EndIf

EndFunc

L’espressione nella istruzione Return, scritta indentata per maggior chiarezza di lettura, va tuttavia scritta su una stessa riga.

Osserva che la function Soll(equaz,var) è ricorsiva: dal suo interno richiama se stessa. Nel caso della ricorsione questa circolarità non è viziosa poiché a ogni richiamo la function si avvia a verificare una condizione che ne interrompe il regresso all'infinito. E' quel che avviene nella riga:

Return aa=0 and Soll(bb* x+cc=0,xx) or …

ove la function è applicata a un equazione di grado inferiore.

Applica Soll(equazione, variabile) per risolvere l'equazione a·x2 + b·x + c = 0.

Adesso esamina un’altra function, analoga a Solve, per trovare gli zeri di un polinomio, cioè Zeros(polinomio,variabile):

Zeros(ë x2 + 2·x + 1, x)

La calcolatrice rielabora e visualizza …………………

Dim(ans(1))

La calcolatrice rielabora e visualizza …………………

Zeros(ë x2 + x ì 2, x)

La calcolatrice rielabora e visualizza …………………

Dim(ans(1))

La calcolatrice rielabora e visualizza …………………

Zeros(x2 + 2·x + 1, x)

La calcolatrice rielabora e visualizza …………………

Dim(ans(1))

La calcolatrice rielabora e visualizza …………………

L'oggetto matematico visualizzato, come qualunque elenco tra parentesi graffe, si chiama lista.

Attenzione: ci serviamo solitamente della parentesi graffe per descrivere insiemi; una lista è un insieme "ordinato": ad esempio la lista {1,2,3} è diversa dalla lista {1,3,2} mentre l'insieme {1,2,3} è lo stesso di {1,3,2}. Il numero di elementi di una lista si ottiene attraverso la function dim(lista).

È possibile richiamare un elemento di una lista indicando tra parentesi quadra la posizione dell’elemento. Ad esempio {1,3,2}[2] è l'elemento 3.

Osserva allora a questo punto che

ë 1*(x – ans(1)[1])(xì ans(1)[2])

restituisce una fattorizzazione del trinomio dato, cioè …………….

Poi

expand(± )

restituisce il trinomio.

Ricorderai infatti che in generale se x1 e x2 sono gli zeri del polinomio ax2+bx+c allora

ax2+bx+c= a(x - x1)(x - x2).

Applica ora Zeros per determinare gli zeri del polinomio letterale x2+a.

La calcolatrice visualizza ………………………………………………

Nota la diversa scrittura rispetto agli stessi valori ottenuti con la function Solve.

L'operatore predefinito

when(condizione, valore per condizione vera, eventuale valore altrimenti)

permette di specificare valori sotto opportune condizioni.

Per le disequazioni di II grado il comando Solve(dis-quazione, variabile) serve ben poco, come puoi renderti conto facendo calcolare ad esempio Solve(ë x2 + 2x + 1 >0, x).

La calcolatrice visualizza …………………

Dovremo quindi modificare la function posPol(polinomio,variabile) precedentemente realizzata per le disequazioni di I grado adattandola a questa nuova esigenza.

posPol(pp,xx)

Func

Local aa, bb, cc, delta, zeri, za, zb

If gradpol(pp,xx)=0 Then

Return pp>0

ElseIf gradpol(pp,xx)=1 Then

pp| xx=0 ! bb

(pp – bb) /xx ! aa

Return (aa>0 and Solve(xx>ë bb/aa,xx) ) or

(aa =0 and bb>0) or

(aa<0 and Solve(xx<ë bb/aa,xx) )

ElseIf gradpol(pp,xx)=2 Then

pp| xx=0 ! cc

(pp – cc) /xx ! bb

bb| xx = 0 ! bb

(pp – bb*xx - cc) /xx^2 ! aa

bb^2- 4*aa*cc ! delta

Return aa=0 and posPol(bb*x+cc,xx) or

aa>0 and (

delta<0 or

delta=0 and Solve(xx¹ ë bb/(2*aa),xx) or

delta> 0 and (

Solve(xx<ë bb- Ö delta)/(2*aa),xx) or Solve(xx>(ë bb+Ö delta)/(2*aa),xx) ) ) or

aa<0 and delta>0 and

Solve(xx>(ë bb+Ö delta)/(2*aa),xx) and

Solve(xx<(ë bb-Ö delta)/ (2*aa),xx)

Else

Return pp>0

EndIf

EndFunc

Per rendere più agevole il calcolo puoi definire eventualmente anche le funzioni negPol, noPosPol, noNegPol servendoti di posPol e del not. Ad esempio si può porre direttamente in ambiente "

Not posPol(ë pp,xx) ! noNegPol(pp,xx).

Tuttavia quando le soluzioni di posPol sono complicate la calcolatrice TI-92 si blocca nel costruire la negazione. Perciò è opportuno definire nel modo seguente, con una veloce operazione di taglia/incolla ( ¤ @ per selezionare, ƒ Copy per fare una copia della selezione, ƒ Paste per inserire il testo di cui si è fatta una copia ) a partire dal listato della funzione posPol.

noNegPol(pp,xx)

Func

Local aa, bb, cc, delta, zeri, za, zb

If gradpol(pp,xx)=0 Then

Return pp³ 0

ElseIf gradpol(pp,xx)=1 Then

pp| xx=0 ! bb

(pp – bb) /xx ! aa

Return (aa>0 and xx³ -bb/aa) or (aa =0 and bb³ 0)

or (aa<0 and xx£ ë bb/aa)

ElseIf gradpol(pp,xx)=2 Then

pp| xx=0 ! cc

(pp – cc) /xx ! bb

bb| xx = 0 ! bb

(pp – bb*xx - cc) /xx^2 ! aa

bb^2- 4*aa*cc ! delta

Return aa=0 and noNegPol(bb*x+cc,xx) or

aa>0 and (

delta£ 0 or

delta> 0 and (

Solve(xx£ ë bb-Ö delta)/(2*aa),xx) or

Solve(xx³ (ë bb+Ö delta)/ (2*aa),xx)

)

) or

aa<0 and delta> 0 and

Solve(xx³ (ë bb+Ö delta)/(2*aa),xx) and

Solve(xx£ (ë bb-Ö delta)/ (2*aa),xx)

Else

Return pp³ 0

EndIf

EndFunc

 

Per visualizzare sulla retta un insieme di soluzioni numeriche in x, come quello che si ottiene dall’applicazione della precedente funzione a disequazioni in x senza parametri, può essere utile la funzione seguente:

grafSoll (Soll)

Prgm

ClrDraw

DrawFunc when(Soll,1,0)

EndPrgm

Le istruzioni predefinite ClrDraw e DrawFunc consentono rispettivamente di ripulire la finestra grafica e di disegnare il grafico di una funzione nella variabile x.

Delimita, eventualmente, la finestra grafica in ambiente O Window Editor cambiando opportunamente in particolare i valori di xmin e xmax, di ymin e ymax.

Ad esempio:

grafSoll ( not posPol(5x^2-x,x) )

oppure, equivalentemente

not posPol(5x^2-x)

grafSoll (± ,x).

La calcolatrice rielabora e visualizza (disegna il grafico)…………………

Risolvi ora le disequazioni da 9 a 33 a pag 648 del libro di testo.

Risolvi inoltre le disequazioni da 60 a 70 a pag 649 del libro di testo.

Ad es. per il n°61 calcola

nonPosPol(x-1,x) and nonPosPol(4-x^2,x) or nonNegPol( x-1,x) and nonNegPol(4-x^2,x)

Risolvi infine i sistemi da 131 a 140 a pag 651 del libro di testo.

 

 

(Dis) equazioni di grado superiore al II

Per risolvere equazioni di grado superiore al secondo non conosci formule generali. Ce ne sono, comunque, solo per le equazioni di III e IV grado. Alternativamente si cerca in genere di fattorizzare il polinomio dato in prodotti di polinomi di I e II grado: raccoglimenti a fattor comune, ricerca per tentativi di uno zero sono i metodi più seguiti.

Si può usare la function predefinita Factor(polinomio,variabile) per scomporre in fattori. Accedere a ciascuno dei fattori, però, non è immediato.

Ci si può attrezzare anche in questo caso con un'opportuna function, come la seguente, che fa uso della function predefinita String(espressione) per trasformare una espressione in formato stringa in modo che sia poi possibile analizzarla per individuare ad esempio la presenza di caratteri particolari, ciò che si ottiene con la function predefinita inString(stringa, carattere), o per estrarre la parte a destra o quella a sinistra a partire da un certo punto, ciò che si ottiene con Right(stringa,posizione), Left(stringa,posizione) (consultare il manuale per le specifiche):

Fattori(ff)

Func

Local nn,ll

{}! ll

string(ff)! ff

inString(ff,"* (")! nn

While ff¹ "" and nn>0

augment(ll,{expr(left(ff,nn-1))})! ll

right(ff,dim(ff)-nn)! ff

inString(ff,"* (")! nn

EndWhile

augment(ll,{expr(ff)})! ll

Return ll

EndFunc

Sebbene si tratti di un analizzatore sintattico piuttosto rozzo, è sufficiente per aumentare la potenza della function Soll.

Soll(equaz,xx)

Func

Local aa, bb, cc, delta, pp, lstFatt, ss, ii

If string(equaz)="true" or string(equaz)="false" Then

Return equaz

Else

left(equaz)-right(equaz) ! pp

If gradoPol(pp,xx) =0 Then

Return pp=0

ElseIf gradoPol(pp,xx) =1 Then

pp| xx=0 ! bb

(pp – bb) /xx ! aa

Return aa¹ 0 and xx=-bb/aa or aa=0 and bb=0

ElseIf gradoPol(pp,xx) =2 Then

pp| xx=0 ! cc

(pp – cc) /xx = 0 ! bb

bb| xx = 0 ! bb

(pp – bb*xx - cc) /xx^2 ! aa

bb^2- 4*aa*cc ! delta

Return aa=0 and Soll(bb*xx+cc=0,xx) or aa¹ 0 and

(delta = 0 and Solve(xx=ë bb/(2*aa),xx) or

delta > 0 and

Solve(xx=(ë bb-Ö delta)/(2*aa),xx) and Solve(xx=(ë bb+Ö delta)/(2*aa),xx) )

Else

Fattori(Factor(pp,xx))! lstFatt

Soll(lstFatt[1]=0,xx) ! ss

For ii,2,dim(lstFatt)

ss or Soll(lstFatt[ii]=0,xx)! ss

EndFor

Return ss

EndIf

EndIf

EndFunc

 

Nello studio della positività di un polinomio di grado superiore al II potenzieremo la function posPol già realizzata.

 

posPol(pp,xx)

Func

Local aa, bb, cc, delta, lstFatt, ii

If gradopol(pp,xx)=0 Then

Return pp>0

ElseIf gradpol(pp,xx)=1 Then

pp| xx=0 ! bb

(pp – bb) /xx ! aa

Return (aa>0 and xx>ë bb/aa) or (aa =0 and bb>0) or (aa<0 and Solve(xx<ë bb/aa,xx) )

ElseIf gradopol(pp,xx)=2 Then

pp| xx=0 ! cc

(pp – cc) /xx ! bb

bb| xx = 0 ! bb

(pp – bb*xx - cc) /xx^2 ! aa

bb^2- 4*aa*cc ! delta

Return aa=0 and posPol(bb*x+cc,xx) or

aa>0 and (delta<0 or delta=0 and Solve(xx¹ ë bb/(2*aa),xx) or

delta> 0 and (Solve(xx<ë bb- Ö delta)/(2*aa),xx) or

Solve(xx>(ë bb+Ö delta)/(2*aa),xx))) or

aa<0 and delta> 0 and Solve(xx>(ë bb+Ö delta)/(2*aa),xx) and Solve(xx<(ë bb- Ö delta)/(2*aa),xx)

Else

fattori(Factor(pp,xx))! lstFatt

If dim(lstFatt)>1 Then

pp/lstFatt[1] ! pp

Return posPol(lstFatt[1],xx) and posPol(pp,xx) or

posPol(ë lstFatt[1],xx) and posPol(ë pp,xx)

Else

Return pp>0

EndIf

EndIf

EndFunc

Osserva che anche queste function sono ricorsive

Infatti ad esempio nella riga: ………………………………………… la function Soll richiama se stessa.

Infatti ad esempio nella riga: ………………………………………… la function posPol richiama se stessa.

 

Adegua opportunamente anche la funzione per valutare quando il polinomio è non negativo.

noNegPol(pp,xx)

Func

Local aa, bb, cc, delta, lstFatt, ii

If gradopol(pp,xx)=0 Then

Return pp³ 0

ElseIf gradpol(pp,xx)=1 Then

pp| xx=0 ! bb

(pp – bb) /xx ! aa

Return (aa>0 and xx³ ë bb/aa) or (aa =0 and bb³ 0) or

(aa<0 and Solve(xx£ ë bb/aa,xx) )

ElseIf gradopol(pp,xx)=2 Then

pp| xx=0 ! cc

(pp – cc) /xx ! bb

bb| xx = 0 ! bb

(pp – bb*xx - cc) /xx^2 ! aa

bb^2- 4*aa*cc ! delta

Return aa=0 and noNegPol(bb*x+cc,xx) or

aa>0 and (delta£ 0 or

delta> 0 and (Solve(xx£ ë bb- Ö delta)/(2*aa),xx) or Solve(xx³ (ë bb+Ö delta)/(2*aa),xx))) or

aa<0 and delta> 0 and Solve(xx³ (ë bb+Ö delta)/(2*aa),xx)

and Solve(xx£ (ë bb- Ö delta)/(2*aa),xx)

Else

fattori(Factor(pp,xx))! lstFatt

If dim(lstFatt)>1 Then

pp/lstFatt[1] ! pp

Return noNegPol(lstFatt[1],xx) and noNegPol(pp,xx)

or noNegPol(ë lstFatt[1],xx) and noNegPol(ë pp,xx)

Else

Return pp³ 0

EndIf

EndIf

EndFunc

 

Risolvi ora le disequazioni da 70 a 90 a pag 649-50 del libro di testo e i sistemi 141-2-5-6 a 149 a pag 651.

 

 

 

 

(Dis)equazioni razionali fratte

 

Usa Solve per risolvere l'equazione razionale fratta .

La risposta fornita dalla calcolatrice ……… è errata. Infatti …………………………….

Ciò dipende dal fatto che l’espressione viene semplificata senza tener conto del suo campo di esistenza. Così, digitando ad esempio x2/x la calcolatrice visualizza immediatamente x; dovrebbe visualizzare invece x and x¹ 0.

Usa Solve anche per risolvere l'equazione razionale fratta : nota l'uso dei simboli ¥ e -¥ per indicare un "numero infinitamente grande" e un "numero negativo di valore assoluto infinitamente grande".

Puoi mettere Solve alla prova anche di altre equazioni o disequazioni di questo tipo e otterrai risposte insoddisfacenti o nessuna risposta.

Cercheremo perciò di realizzare una funzione utile al caso.

Ricordando che un’equazione come equivale a , ecco una funzione per risolvere equazioni di questo tipo:

SollFraz(equaz,xx)

Func

Local fraz

left(equaz) – right(equaz) ! fraz

not Soll(getDenom(fraz)=0,xx) and Soll(getNum(fraz)=0, xx)

EndFunc

Le funzioni getNum(espressione) e getDenom(espressione) sono predefinite e s'incaricano di isolare numeratore e denominatore di una espressione.

Osservando che il segno di una espressione fratta come A(x)/B(x) è lo stesso del prodotto A(x)·B(x) tra numeratore e denominatore, puoi costruire una funzione come la seguente:

posFraz(espressione,xx)

Func

posPol(getNum(espressione)* getDenom(espressione),xx)

EndFunc

Risolvi ora le disequazioni da 91 a 126 a pag 650-1 del libro di testo e i sistemi 142–3-4-7-8-9 a pag 651.

posFraz(espressione,xx)

Func

Local Num, Den

getNum(espressione)! Num

getDenom(espressione)! Den

Return posPol(Num,xx) and posPol(Den,xx) or posPol(ë Num,xx) and posPol(ë Den,xx)

EndFunc

 

Costruisci un’unica funzione posFunz(espressione, variabile) che valuti la positività sia di una espressione polinomiale sia di un’espressione razionale fratta.

 

 

(Dis) equazioni irrazionali

 

Determina attraverso Solve le soluzioni delle seguenti equazioni:

La calcolatrice visualizza ……..

La calcolatrice visualizza ……..

La calcolatrice visualizza ……..

La calcolatrice visualizza ……..

Prova poi a verificare la soluzione con x+Ö (x+1)=0|2 ± . Ottieni ……

Cercheremo anche in questo caso di costruire una funzione seguendo un metodo e le funzioni precedentemente realizzate.

Ricorda che un’equazione irrazionale come equivale al sistema: .

Traduci il sistema nel linguaggio della TI-92 nel modo seguente:

noNegPol(B,x) and Soll(A=B^2,x)

Ricorda che una disequazione irrazionale come equivale al sistema: .

Traduci il sistema nel linguaggio della TI-92 ad esempio nel modo seguente:

noNegPol(A,x) and noNegPol(B,x) and posPol(B^2 - A,x)

Ricorda che una disequazione irrazionale come equivale a una disgiunzione tra un sistema e una disequazione: vel .

Traduci il sistema nel linguaggio della TI-92 ad esempio nel modo seguente:

noNegPol(A,x) and posPol(ë B,x) or posPol(A- B^2,x) and noNegPol(B,x)

Definisci infine, concentrando i casi, la seguente funzione in cui A è sempre il radicando e B la parte intera:

disEqIrr ( A, segno, B, xx)

Func

If segno = "=" Then

Return noNegPol(B,xx) and Soll(A=B^2,xx)

ElseIf segno ="<" Then

Return noNegPol(A,xx) and noNegPol(B,xx) and

posPol(B^2 - A,xx)

ElseIf segno ="£ " Then

Return noNegPol(A,xx) and noNegPol(B,xx) and

noNegPol(A- B^2,xx)

ElseIf segno =">" Then

Return noNegPol(A,xx) and

posPol(ë B,xx) or posPol(A- B^2,xx) and noNegPol(B,xx)

ElseIf segno ="³ " Then

Return noNegPol(A,xx) and posPol(ë B,xx) or

noNegPol(B^2 - A,xx) and noNegPol(B,xx)

EndIf

EndFunc

Il parametro segno dovrà essere di tipo stringa cioè nel formato "=", "<", ">" ecc….

Risolvi ora le disequazioni da 173 a 191 a pag 653 del libro di testo.

Risolvi inoltre le disequazioni da 199 a 218 a pag 649 del libro di testo.

 

 

 

 

Appendice

Possiamo scrivere una funzione che estenda la funzione Solve(Espressione, varaibile), predefinita nell’ambiente simbolico della TI-92, per risolvere equazioni e disequazioni razionali:

Soll(diseq,xx)

Func

Local aa, bb, cc, delta, pp, segno, lstfatt,ii,ss

If string(diseq)="true" or string(diseq)="false" Then

Return diseq

Else

left(diseq) – right(diseq) ! pp

string(diseq)! diseq

If GetDenom(pp)=1 Then

If InString(diseq,"=") Then

If gradoPol(pp,xx) =0 Then

Return pp=0

ElseIf gradoPol(pp,xx) =1 Then

pp| xx=0 ! bb

(pp – bb) /xx ! aa

Return aa¹ 0 and xx=-bb/aa or aa=0 and bb=0

ElseIf gradoPol(pp,xx) =2 Then

pp| xx=0 ! cc

( pp – cc) /xx = 0 ! bb

bb| xx = 0 ! bb

( pp – bb*xx - cc) /xx^2 ! aa

bb^2- 4*aa*cc ! delta

Return aa=0 and Soll(bb*xx+cc=0,xx) or

aa¹ 0 and (

delta= 0 and Solve(xx=ë bb /(2*aa),xx) or

delta> 0

and Solve(xx=(ë bb-Ö delta)/(2*aa),xx)

and Solve(xx=(ë bb+Ö delta)/(2*aa),xx)

Else

Fattori(Factor(pp,xx))! lstFatt

If dim(lstFatt)>1 Then

Soll(lstFatt[1]=0,xx) ! ss

For ii,2,dim(lstFatt)

ss or Soll(lstFatt[ii]=0,xx)! ss

EndFor

Return ss

Else

Return Solve(pp=0,xx)

EndIf

ElseIf InString(diseq,"¹ ") Then

Return not soll(pp=0)

ElseIf InString(diseq,">") Then

PosPol(pp,xx)

ElseIf InString(diseq,"<") Then

PosPol(ë pp,xx)

ElseIf InString(diseq,"³ ") Then

NoNegPol(pp,xx)

ElseIf InString(diseq,"£ ") Then

NoNegPol(ë pp,xx)

EndIf

Else

If InString(diseq,"=") Then

Soll(getNum(pp)=0,xx) and not Soll(getDenom(pp)=0,xx)

If InString(diseq,"¹ ") Then

not (Soll(getNum(pp)=0,xx) or Soll(getDenom(pp)=0,xx))

ElseIf InString(diseq,">") Then

posPol(getNum(pp)·getDenom(pp),xx)

ElseIf InString(diseq,"<") Then

posPol(ë getNum(pp)·getDenom(pp),xx)

ElseIf InString(diseq,"³ ") Then

NoNegPol(getNum(pp)·getDenom(pp),xx) and not Soll(getDenom(pp)=0,xx)

ElseIf InString(diseq,"£ ") Then

NoNegPol(ë getNum(pp)·getDenom(pp),xx) and not Soll(getDenom(pp)=0,xx)

EndIf

EndIf

EndIf

EndFunc

 

 

Potrebbe essere utile per altri scopi la seguente funzione che determina la lista dei coefficienti di un polinomio pp che è funzione di una sola variabile xx:

coeffPol(pp,xx)

Func

Local c,listc

pp|xx=0! c

{c}! listc

(pp – c)/x! pp

While string(pp) ¹ "0"

pp|xx=0! c

augment({c},listc)! listc

(pp – c)/x! pp

EndWhile

Return listc

EndFunc