L'HELP di quanto caricato in R con:
source("http://macosa.dima.unige.it/R/r1.R")
Non usare c come nome di funzione.
Se vuoi l'elenco alfabetico delle definizioni introdotte in R usa:
ls.str() Se vuoi rimuovere vecchie definizioni usa rm(list=ls())
(e poi ricarica r1.R).
frazio(7/20+1/6) calcola 7/20+1/6 come frazione.
box(-5,8, 0,7) Apre una finestra (box) con x da -5 a 8, y da 0 a 7.
boxm(-5,8, -1,12) Apre un box con scala monometrica, cioè con uguale
unità grafica sugli assi. I box puoi ridimensionarli.
(box_ e boxm_ aprono box più piccoli)
grafico(F,-2,4, 3) Traccia il grafico di F tra -2 e 4 nel colore 3;
[ prova ad es. con: g <- function(x) (x+1)^2 ]
graficob(F,-2,4, 3) traccia il grafico di F scegliendo da solo il box;
grafic(..) grafi(..) graficb(..) grafib(..) usano uno spessore minore
soluz(F,7, 1,3) risolve F(x)=7 se tra 1 e 3 F scavalca il valore 7;
minmax(F,2,5) trova dove F ha min o max se tra 2 e 5 ha una gobba;
punto(1,3/2, 3) il punto (1,3/2) nel colore 3 (il col. 0 lo cancella);
punto(c(-4,1,6),c(2,6,0), 2) i punti (-4,2),(1,6),(6,0) nel colore 2;
punt(..) pun(..) pu(..) come punto ma di dimensioni minori;
segmento(-2,5, 3,0.5, 4) il segmento da (-2,5) a (3,0.5) nel colore 4;
segment(..) segmen(..) usano uno spessore minore
raggio(2,4, 5,20, 6) il segm. da (2,4) lungo 5 con dir. 20° nel col.6;
cerchio(2,4, 3, 1) il cerchio di centro (2,4) e raggio 3 nel colore 1;
poligono(2,4, 3, 5,30, 2) il polig. regolare di 5 lati inscritto nel
cerchio precedente con un vertice a 30° nel colore 2;
curva(K,5) la curva K(x,y)=0 nel col.5 [es. h <- function(x,y) x+y^2-1]
curv(..) cur(..) come curva ma di spessore minore
Col col. 0 la fig. (grafico,..) è tratteggiata, con 'white' cancellata
P() Traccia il punto che 'clicco' e ne visualizza le coordinate.
Esempi - 1
I colori possono essere indicati con numeri naturali (solo 8 colori) o
indicandone il nome. Esempi: white yellow yellow3 yellow4
green green4 violet magenta magenta4 purple pink coral red red3
orange chocolate brown cyan cyan4 blue blue4 grey grey50 black
Puoi tracciare curve in forma parametrica battendo:
param(X,Y, a,b, col) se hai già definito 2 funz. X e Y di un parametro
che varia tra a e b, o in forma polare con:
polar(R, a,b, col) se hai def. R funz. dell'angolo tra a e b.
Es. param(f,g,0,2*pi,'red') con f <- function(t) 2*cos(t),
g <- function(t) sin(t) è un'ellisse;
polar(r,0,20,'blue') con r <- function(a) sqrt(a) è una spirale.
Con para() par1() pola() pol1() si ha uno spessore minore
paramb, polarb,
, pol1b scelgono anche il box, monometrico
Per rototraslare la curva K(x,y)=0 di un angolo di A gradi e un vettore
(h,k) e dilatarla orizzontalmente e verticalm. dei fattori mx e my usa:
rotramol(K, A, h,k, mx,my, col)
rotramo(..) rotram(..) come rotramol di spessore minore
rotra(K, A, h,k, col) si limita a rototraslarla.
Esempi - 2
Se metti ad es. in x e y due interi con som(x,y) e pro(x,y) ne hai
somma e prodotto. Se z è un altro intero ottieni ad es. (x*y)*(x+z) con
pro( pro(x,y), som(x,z) )
dif(x,y) calcola la differenza non negativa: x-y se x>=y, 0 altrimenti,
app(x) trasforma la stringa di numeri in un numero approssimato
[se un numero ha più di 17 cifre devi metterlo tra "]
Esempi - 3
Puoi tracciare curve introducendo punti che ne guidino l'andamento
(metodo di Bezier). Messe le coordinate in X e Y, scelta una scala, usa
bezier(X,Y,N) dove N è 0 o un codice colore. Prova con
bezier(a,b,1) bezier(a,b,0) bezier(a,b,8) dopo aver introdotto:
a <- c(-3,2,2,-1); b <- c(2,2,-2,1); box(-3,3, -3,3)
Esempi - 4
diseq(F,G, a,b, colore) punteggia lo spazio tra i grafici di F
di G e le rette verticali di ascisse a e b nel colore scelto.
Ripeti eventualmente il comando per avere più punti.
Esempi - 5
Definisci una funz. f (o g, h1, ...). Se dai il comando seguente hai
il grafico di f per input tra a e b, output tra c e d, con evidenziato
il punto (x0,f(x0)). Se clicchi in un punto hai il grafico della retta
che passa per i punti del grafico di ascissa x0 e di quella cliccata.
Se clicchi l'ascissa x0 hai la retta tangente. Premi ESC per finire.
Comando: pend(f, a,b, c,d, x0)
Prova con: h <- function(x) x^2; pend(h, -1,1.5, 0,3, 1)
Esempi - 6
------------------------------------------------------------------
Esempi - 1
frazio(7/20+1/6) # ottengo 31/60
areaQuad <- function(lato) lato^2
boxm(-2,3, -0.5,4.5); grafico(areaQuad,-1.5,3, 2)
# invece di 2 posso usare "red"
raggio(0,3, 1,0, 3); raggio(0,3, 1,120, 4); raggio(0,3, 1,240, 5)
# posso usare i nomi dei colori al posto di 3, 4, 5
punto(0,3, 1); poligono(2,1, 1, 3,90, 6); cerchio(2,1, 1, 0)
punt(c(-1,0,3),c(0,2,4),4)
r <- function(x,y) x-2; curva(r,1)
s <- function(x,y) x+y-5; curva(s,7)
# NOTA:
# curva(h,...) trova dove h cambia segno; se ovunque h(x,y)≥0 o
# h(x,y)≤0 prova a tracciare abs(h(x,y))-eps con eps piccolo.
# Un esempio facile, per capire:
g <- function(x,y) x^2+4*y^2-4*x*y; curva(g,"green")
# non ottengo nulla (ma so che la curva è x-2*y = 0)
k <- function(x,y) abs(g(x,y)) - 1e-4; curva(k,"blue")
# ALTRO esempio:
boxm(-8,8, -8,8); for(i in 1:8) cerchio(0,0, i, i)
# Vedi i grafici ottenuti qui
Esempi - 2
boxm(-60,60, -60,60)
ro1 <- function(a) a^1.5
polar(ro1,0,5*pi, "red")
ro2 <- function(a) 30/(2+sin(a)-cos(a))
polar(ro2,0,5*pi, "green")
asc1 <- function(t) 2*t^2-3*t
ord1 <- function(t) t^3-t+1
param(asc1, ord1, -10,10, "blue")
asc2 <- function(t) -30+20*cos(t)
ord2 <- function(t) 10+30*sin(t)
param(asc2, ord2, 0,2*pi, "magenta")
H <- function(x,y) x*y-100
curva(H, "grey")
rotramo(H, 45, 0,0, 1.5,1, "black")
# Vedi i grafici ottenuti qui
Esempi - 3
# Il calcolo di x*(10+x)+5*x^3 per x=123456789012345
x <- "123456789012345"
som( pro(x, som(10,x)), pro(5, pro(x, pro(x,x))))
# 40! 171!
n <- 40; y <- 0;z <- 1;j <- 1; while(j<=n){y<- som(y,1); z<- pro(z,y); j<-j+1}; z
n <- 171; y <- 0;z <- 1;j <- 1; while(j<=n){y<- som(y,1); z<- pro(z,y); j<-j+1}; z
# 2^1024, non calcolabile direttamente
2^1023; 2^1024
# Col programma:
y <- 1; for(i in 1:1024) y <- pro(y,2); y
# Quanti caratteri sono
nchar(y)
# Approssimazione in notazione scientifica
x <- "12345678901234567890"; app(x)
# 1000^20-999^20
y <- 1; for(i in 1:20) y <- pro(y,999)
z <- 1; for(i in 1:20) z <- pro(z,1000)
dif(z,y)
app(z); app(y); app(dif(z,y))
# Vedi gli esiti qui
Esempi - 4
xx <- c(-1,-1,0,0,1,1)
yy <- c(0,1,1,-1,-1,0)
boxm(-1,1,-1,1)
bezier(xx,yy,0); bezier(xx,-yy,0)
boxm(-1,1,-1,1)
bezier(xx,yy,"red"); bezier(xx,-yy,"black")
# Vedi i grafici ottenuti qui
Esempi - 5
F <- function(x) x*(x-2); G <- function(x) x/2
graficob(F,-1,3, "blue")
grafico(G,-1,3, "red")
diseq(F,G,-1,3,"black")
diseq(F,G,-1,3,"black")
diseq(G,F,-1,3,"orange")
diseq(G,F,-1,3,"orange")
# Vedi i grafici ottenuti qui
Esempi - 6
f <- function(x) cos(x)
pend(f, -3.2,0, -1.6,1.6, -pi/2)
# Vedi i grafici ottenuti qui