GraFun.bas

   HELP     ESEMPI     NOMI     DEFINIZIONI

SUB HELP............
'
' ##  Definisci la FUNZIONE a 1 input nel SUB DefFx, assegnando a y l'output
' di x; puoi usare anche piu' righe di comandi. Se vuoi puoi farti una banca
' di funzioni da incollare nel Sub. Oppure puoi scriverle nel Sub e man mano
' disattivare quelle che non ti servono facendo precedere le righe da un "'".
' Ecco cosa mettere se              SUB DefFx (x, y)
' si vuole definire la     ====>    y = 3*x+1
' la funzione  x -> 3*x+1           END SUB
' In modo analogo puoi definire le funzioni a due input (DefFxy), le curve
' P=P(t) (DefPt), le trasformazioni geometriche (DefTrasf...).
' All'avvio del programma sono provvisoriamente inserite alcune definizioni.
' Vedi il Sub ESEMPI per qualche esempio.
'
' ##  Se nelle definizioni delle funzioni vuoi usare PI GRECA, il numero di
' Nepero o ° (ossia PiGreca/180 - in modo da poter usare sin(30°) o ..)
' indicali:  pi  ne  grado. Ad es. sin(2), sin(2*pi) e sin(2*grado) indicano
' rispettivamente il seno di 2 (radianti), di 2PiGreca (rad) e di 2 gradi.
'
' ##  Il comando 5-max puo' essere impiegato per trovare punti di MASSIMO o di
' MINIMO. Puo' essere usato per risolvere equazioni f(x)=k nel caso in cui il
' grafico tocchi senza attraversare y=k.
'
' ##  I GRAFICI sono registrati in formato apribile col programma Poligon, con
' i NOMI (e i percorsi) indicati nel SUB DefNomiFile. (In Poligon devi mettere
' percorso+nome nell'apposito box e cliccare su [Imp]; per adattare la scala
' potrai fare un doppio clic su [o]; per unire una figura alla precedente fai
' un doppio clic su [P]). Puoi aprire contemporaneamente piu' sessioni di
' Poligon, in cui visualizzare su scale diverse diverse figure.
' Se dal menu 13-IMP segli di numerare automaticamente i nomi dei file, ai
' nomi scelti sono aggiunti automaticamente 01, 02, 03,.., 99 con incrementi
' man mano che fai grafici dello stesso tipo. Al riavvio si riparte da 01.
' Ad es. se il percorso e' c:/ e il nome e' FUN.gfu, via via vengono registrati
' FUN01.gfu, FUN02.gfu, ... Se da Poligon importi c:/FUN01.gfu, via via viene
' predisposta l'importazione del "FUN" successivo (FUN02.gfu,..)
'
' ##  La SCALA viene impostata introducendo gli estremi degli intervalli
' che definiscono il rettangolo cartesiano [x1,x2]*[y1,y2] da associare alla
' finestra-grafici.  Nel caso del grafico di una funzione, se alla richiesta
' di y1 batti "auto" la SCALA verticale viene scelta automaticamente.   Lo
' stesso accade per le curve P=P(t).
' Se, avendo gia' tracciato grafici, alla richiesta di x1 batti "=", viene
' mantenuta la scala precedente. Questa opzione e' comoda se vuoi ottenere
' una successione di curve realizzate come P=P(t) da visualizzare una dopo
' l'altra con Poligon senza che venga cambiata la scala, avendo scelto la
' numerazione automatica dei nomi dei file.
'
' ## Se non selezioni un COLORE e premi solo Invio viene scelto il colore 14
' (giallo). Se rispondi SI' (ossia 1) alla domanda di CONGIUNGERE i punti,
' da Poligon il grafico verra' rappresentato mediante una poligonale, se no
' mediante una successione di punti. Nel caso delle curve definite come
' f(x,y)=k non e' prevista l'opzione di congiungimento, per evitare il con-
' giungimento tra punti di rami di curve diversi; in questo caso puo' essere
' utile tener aperto contemporaneamente Poligon e, via via che si chiedono
' ALTRI PUNTI, da esso riazionare [Imp] (con lo stesso nome nel box) per
' controllare se si e' raggiunto un numero sufficiente di punti; l'aziona-
' mento di [:] permette di ingrandire i punti.
'
' ##  Per assegnare durante l'esecuzione ad a, b, x, y o t numeri come 1/7,
' SQR(3)/2, ... puoi calcolarne i valori con la calcolatrice (di Windows o
' quella presente in MaCoSa) e incollarli (usando Modifica - Incolla dal menu
' che si apre cliccando in alto a sinistra); oppure puoi inserili nei sub
' DefValA, ... DefValT e battere come input invece che il valore solo la
' lettera (ad es. se come x per tabulare f volglio introdurre la radice di 2/7
' metto in DefValX x=SQR(2/7) e alla richiesta "x?" batto "x"). I Copia/Incolla
' dal menu File sono invece "interni" alla applicazione, diversi da quelli
' azionabili nel modo detto sopra.
'
' ##  Battendo 0 (end) il programma viene sospeso. Puoi cosi' modificare i
' vari sub  Def... Per proseguire l'esecuzione premi F5 o aziona Continua dal
' menu Run; per riavviarla premi Shift+F5 o aziona Start.
'
' ##  Nelle USCITE NUMERICHE r(2) e 2pi, ad es., indicano la radice quadrata
' di 2 e 2*PiGreca.   Se scegliendo un comando ad OUTPUT NUMERICI (1-fx 4-int
' 5-max 8:Sf 9:Pt 11-fxy) faccio seguire il numero del comando da N, F o P
' impongo che le uscite siano rispettivamente in FORMATO  solo numerico,
' numerico e frazionario,  numerico e frazionario o 'irrazionale' o usando
' PiGreca (a seconda dei casi). In assenza di suffissi, viene usata la forma
' numerica seguita (se semplice) da una eventuale forma frazionaria o
' 'irrazionale'. Ad es. se in DefFx metto y=atn(x), seleziono il comando fx
' battendo 1 e do' come input -1 ottengo come uscita -0.7853981..;  se batto
' 1F ottengo -5132749/6535219; se batto 1P ottengo -1/4pi.
'
' ##  Se vuoi TRASFORMARE una curva realizzata come P=P(t) o come f(x,y)=k
' definisci la trasformaz. in DefTrasformazione come  x1 = f1(x,y),
' y1 = f2(x,y). Ad es. per la simmetria rispetto a (0,0) metti x1=-x e y1=-y.
' Per attivare la trasformazione aziona il comando 13-IMP. In questo modo i
' comandi P=Pt e fxyk tracciano i trasformati. Per disattivare riusa 13-IMP.
'
' ##  Se vuoi tracciare un FASCIO di curve, puoi usare in DefPt il parametro
' Param. Ad es. se metti in DefPt  x=t  y=t^2+Param*t puoi ottenere un fascio
' di parabole  y = x^2 + Param*x  al variare di Param.
' I valori di Param possono essere specificati azionando il comando 13-IMP.
' Battendo 0 si annulla l'eventuale precedente definizione di parametri.
' Battendo ad es. 8 si specifica che Param viene fatto variare tra 8 valori.
' I valori possono essere battuti uno ad uno. Oppure, battuto il primo, si
' puo' battere come secondo "+0.5": automaticamente come 2^, 3^,.., 8^ valore
' vengono presi quelli ottenuti a partire dal primo valore introdotto mediante
' successive addizioni di 0.5. Analogamente, al posto di +, si possono usare
' *,-,/ e ^: i valori vengono man mano moltiplicati, diminuiti, divisi o ele-
' vati al numero scritto dopo il simbolo dell'operazione.
' I grafici vengono regsitrati in colori diversi (colore 15, 14, 13, ...).
'
' ##  Se si sono definiti dei parametri, la loro memorizzazione si mantiene
' fino a che non si chiude o riavvia il programma. Se lo si sospende col
' comando 0 e lo si fa riprendere con F5 o Continue, non si perdono.
' I parametri sono comodi anche per tabulare funzioni. Se voglio tabulare
' x -> x^2 per x=0,0.1,0.2,..,2 posso mettere x=param y=param^2 in DefPt,
' azionare il comando 13, scegliere 21 valori, battere 0 come primo valore,
' +0.1 invece del secondo valore. Poi aziono 9-Pt e ottengo (battendo Enter
' alla richiesta "t?2) la tabulazione voluta.
'
END SUB

SUB ESEMPI........
'----------
'def. di x -> f(x) usando variabile di appoggio (per DefFx)
w = SQR(x - 3.5)
y = w + 6 / w
'----------
'ellisse di semiassi 3 e 2 con t in gradi (per DefPt)
a = 3: b = 2
x = a * COS(t * grado): y = b * SIN(t * grado)
'----------
' curva in coord. polari (per DefPt) [ e' la cardioide  ro = 1 - cos(teta) ]
ro = 1 - COS(t)
x = ro * COS(t): y = ro * SIN(t)
'----------
'def di (x,y) -> f(x,y) che usa cicli (qui per input interi: e' coeff.bin.:
' (x,y) -> num. sottoinsiemi di y elem. da un insieme di x elementi)
IF y > x / 2 THEN y = x - y
z = 1: n = x: D = y
WHILE D > 0
z = z * n / D
D = D - 1: n = n - 1
WEND
'----------
' def di x -> f(x) (per DefFx) che usa (x,y) -> g(x,y) definita in DefFxy
' in questo caso (distrib. binomiale) DefFxy e' come nell'es. precedente
n = 50: p = 20 / 100  ' Parametri della distrib. binomiale
K = FIX(x + 1 / 2)   ' arrotondo agli interi
DefFxy n, K, C   ' Calcolo z=CBin(N,x)
y = C * p ^ K * (1 - p) ^ (n - K)
'----------
'def di fascio di iperboli  (per DefPt)
x = t: y = param / t
'----------
'def. di trasform. geometrica (per DefTrasformazione)
' rotaz. 30 gradi attorno (0,0)
x1 = COS(30 * grado) * x - SIN(30 * grado) * y
y1 = SIN(30 * grado) * x + COS(30 * grado) * y
'----------
' f(x,y)=-1 e' parte interna del cerchio, = 1 parte esterna (DefFxy)
z = SGN(x * x + y * y - 1)
'----------
' f(x,y)=1 e' il rettangolo [x1,x2]*[y1,y2] che seleziono (DefFxy)
' se uso una trasformazione geometrica ottengo il trasformato del rettangolo
z = 1
'----------
END SUB

SUB DefNomiFile
' In percorso$ metti l'indirizzo della cartella in cui vuoi registrare i file
' I nomi sono dei file in cui sono registrati, in ordine, il grafico della
' funzione, quello della curva P=P(t), quello della curva f(x,y)=k, quello
' della derivata (o pendenza) di f, quello dell'integrale tra x1 e x, quello
' della trasformazione di P=P(t), quello della trasformazione di f(x,y)=k.
percorso$ = "C:/"
nomefunz$ = percorso$ + "fun.gfu"
nomederiv$ = percorso$ + "der.gfu"
nomeintegr$ = percorso$ + "int.gfu"
nomecurv$ = percorso$ + "cur.gfu"
nomecurvtrasf$ = percorso$ + "curt.gfu"
nomefxy$ = percorso$ + "fxy.gfu"
nomefxytrasf$ = percorso$ + "fxyt.gfu"
' C:/DOCUME~1/PIPPO/DOCUME~1/  questo (o con \ al posto di /) e' il possibile
' percorso per arrivare alla cartella Documenti contenuta nella cartella dell'
' utente Pippo contenuta nella cartella Documents and Settings.
' percorso+nome devi usarlo nel box per importare file del programma Poligon.
' Per individuare un percorso puoi usare File-Open e poi copiarlo dalla fine-
' stra di dialogo usando Modifica-Segna dal menu che si apre cliccando in alto
' a sinistra.
END SUB

SUB DefFx (x, y)
y = x ^ 2 / 5 - 1
END SUB

SUB DefFxy (x, y, z)
z = y ^ 2 - x
END SUB

SUB DefPt (t, x, y)
' Volendo puoi inserire la variabile Param. Vedi il Sub HELP
'
x = COS(t * grado): y = SIN(t * grado)
END SUB

SUB DefTrasformazione (x, y)
' Metti in (x1,y1) le nuove coordinate
x1 = -2 * y
y1 = 2 * x + 1
' Non cancellare la riga seguente
x = x1: y = y1   ' ho aggiornato le coordinate
END SUB