FUNZIONI E GRAFICI Definizione di funzione In Maple si possono utilizzare molte funzioni predefinite facendo riferimento semplicemente al loro nome. > restart:ln(1);sqrt(3);arcsin(sqrt(2)/2);exp(0); > sqrt(24); > sin(Pi/4); > evalf(%); > arctan(1); > evalf(%); > Re(3+I*5); > Im(3+I*5); Per creare altre funzioni che permettano di utilizzare la notazione funzionale f( x ), si utilizza l'operatore -> . > restart: > h(x):=2*x+1; > h(1); > f:=x->x^2; #definizione di funzione > f(0),f(1),f(2),f(3); > g:=(x,y,z)->x+y+z; > g(0,0,0),g(1,0,0),g(0,2,0); Tabulazione di funzioni Per tabulare una funzione su un insieme di valori si usa il comando map In generale, l'istruzione map applica una funzione simultaneamente a tutti gli elementi di qualsiasi lista. > restart: > f:=x->x^2; > vals:=[1,2,3,4]; > map(f,vals); > > vals1:=[seq(1/i,i=1..5)]; > map(f,vals1); > > a:=1:b:=5:n:=6: > vet:=[seq(a+i*(b-a)/n,i=0..3)]; > map(f,vet); > seq(f(i),i=vet); Plot di funzioni Creare il grafico di una funzione equivale a costruire una rappresentazione grafica di una tabulazione. I grafici bidimensionali, o 2D, sono creati con il comando plot, la cui sintassi è 1 plot(f,h,v,o) dove -f è un'espressione oppure il nome di una funzione; - h è un intervallo sull'asse x, espresso nella forma name= low...high; - v (opzionale) è un intervallo sull'asse y, espresso nella forma name=low...high; - o è un'opzione espressa come una sequenza opt1=value,opt2=value,.... L'intervallo h può essere anche illimitato e in tal caso, per definirlo, si usano le costanti -infinity e infinity. Quando il grafico appare troppo compresso o dilatato, è conveniente definire un intervallo v anche per l'asse verticale . Normalmente plot sceglie scale diverse per gli assi, per avere scale uguali si può selezionare l'icona 1:1, nella barra dei menu, o immettere l'opzione scaling=constrained . Per default scaling=unconstrained. > restart; > f:=x->cos(2*x)-sin(x); > plot(f(x),x=-Pi..Pi); > plot(f(x),x=-Pi..Pi,y=0..1); > (x − 1) Modi equivalenti per produrre il grafico di f( x ) = e ( 2 x − 1 ) in [ −2, 2 ]: > restart: Si plotta una espressione > plot(exp(x-1)*(2*x-1), x=-2..2); Si plotta una espressione assegnata > y:=exp(x-1)*(2*x-1); > plot(y,x=-2..2); Si plotta una funzione > f:=x->exp(x-1)*(2*x-1); > plot(f(x),x=-2..2); Tutte le opzioni previste dal comando plot possono essere visualizzate digitando ?plot,options. > plot(sin(x)^2,x=0..2*Pi,axes=FRAME,color=magenta,labels=[x,y] , title="PROVA GRAFICA",titlefont=[HELVETICA,OBLIQUE,15],style=point,symbol= cross,legend="funzione sin(x)^2"); Esercizio (Definizione e uso di funzione) Definire una funzione che rappresenta la distanza tra due punti (x1, y1) e (x2, y2) e usarla per calcolare la distanza tra (2,3) e (8,11). Soluzione > restart; > dist2:=(x1,y1,x2,y2)->sqrt((x1-x2)^2+(y1-y2)^2); > dist2(2,3,8,11); Esercizio (Definizione di funzione e grafico) 2 Definire in Maple la funzione dis( x ) = x3 + x2 + x + 1 e valutarla in x = 1 e x = −1. Tracciarne il grafico nell'intervallo [-1,1]. Soluzione > restart; > dis:=x->x^3+x^2+x+1; > dis(-1);dis(1); > plot(dis(x),x=-1..1); Esercizio (Definizione di funzione e grafico) a) Rappresentare la funzione y = 1 (Sugg: utilizzare l'opzione discont per plot, dal x momento che la curva è discontinua). 2 ( −x ) b) Rappresentare la funzione f( x ) = e per −∞ < x < ∞ . Soluzione a) > restart:plot(1/x,x,y=-10..10,discont=true); b) > g:=exp(-x^2); > plot(g(x),x=-infinity..infinity); > Funzioni con discontinuità I grafici di funzioni non continue richiedono maggiore attenzione, perchè Maple disegna delle linee verticali vicino ai punti di discontinuità. Per ovviare a ciò si inserisce, nell'istruzione plot, l'opzione discont=true. La funzione che proviamo a disegnare ha una singolarità ed assume valori che tendono ad infinito. Per tale funzione è opportuno inserire nel plot un range di variazione anche sull'asse y. > restart; > y:=x->(x^5-4*x^2+1)/(x-1/2); > plot(y(x),x=-3..3); > plot(y(x),x=-10..10); # l'asintoto sembra essere sparito > plot(y(x),x=-3..3,y=-50..50); > plot(y(x),x=-3..3,y=-50..50,discont=true); Esempio La funzione tangente ha infinite singolarità in x=Pi/2+k*Pi. > plot(tan(x),x=-2*Pi..2*Pi); > plot(tan(x),x=-2*Pi..2*Pi,y=-4..4); > plot(tan(x),x=-2*Pi..2*Pi,y=-4..4, discont=true); Funzioni definite a tratti 3 Spesso in matematica si incontrano funzioni definite da espressioni analitiche non uguali in sottointervalli diversi dell'asse reale. Per tali funzioni si usa il comando piecewise, la cui sintassi è piecewise(cond_1,f_1,cond_2,f_2,...,cond_n,f_n,f_otherwise) dove - cond_1,cond_2,...,cond_n sono le condizioni per le quali sono definite rispettivamente le funzioni f_1,f_2,...,f_n; - f_otherwise è la definizione della funzione se le condizioni cond_1,cond_2,...,cond_n non sono verificate. Se f_otherwise non è specificato dall'utente, per default Maple assegna alla funzione valore 0. > restart: > f:=piecewise(x<0,1+x,x>0,1-x); > simplify(%); > f(1); > plot(f(x),x=-3..3); Per poter valutare la funzione in un punto > f1:=x->piecewise(x<=0,1+x,x>0,1-x); > plot(f1,-3..3); > > g:=piecewise(x<=-1,1,x>=-1 and x<=1,1-x^2,2); > plot(g(x),x=-5..10); > plot(g(x),x=-5..10,discont=true); Grafici multipli Per plottare più di una funzione nello stesso grafico, basta plottare una lista di funzioni. Esempio > > > > restart; y1:=sin(x); y2:=x-x^3/3!+x^5/5!; plot([y1,y2],x=0..2*Pi,title="Grafici Multipli",color=[blue,red],style=[line,point],legend=["fun zione seno","polinomio di Taylor di grado 3"]); Per visualizzare più grafici contemporaneamente nello stesso sistema di riferimento, bisogna assegnare un nome ad ogni singolo grafico, realizzato mediante una istruzione plot. Il comando per visualizzare i grafici è display che fa parte della libreria plots e la cui sintassi è display(L,insequence=true,opts) Esempio > > > > > restart:with(plots): p1:=plot(x,x=-10..10): p2:=plot(exp(x)+3,x=-5..5): display(p1,p2); restart; 4 > z1:=sin(x):z2:=cos(x): > plot({z1,z2}, x=-Pi..Pi,style=[point,line]); ________________________________________________________________________ __________________________________ > restart; > p1 := plot(sin(x), x=-Pi..Pi, style=point): p2 := plot(cos(x), x=-Pi..Pi, style=line): plots[display]({p1,p2}); ________________________________________________________________________ __________________________________ > y1:=sin(x): > y2:=x-x^3/3!+x^5/5!: > p1:=plot(y1,x=0..2*Pi,y=-1..1): > with(plots): # In alternativa a plots[display] > display(p1,title="sin(x)"): > p2:=plot(y2,x=0..2*Pi,y=-1..1): > display({p1,p2},title="display grafici multipli"); > 4.9 Inserimento di testo in un grafico Per inserire un testo in un grafico si utilizza il comando textplot, la cui sintassi è textplot([x-coord, y-coord, "text"]) Esempio > restart:with(plots): > p1:=plot(sin(x)^2,x=0..2*Pi,axes=FRAME, color=magenta, labels=[ascisse,ordinate],title="PROVA GRAFICA",titlefont=[HELVETICA,OBLIQUE,15]): > p2:=textplot([Pi/2,1.1,"massimo"]): > p3:=textplot([Pi,0.1,"minimo"]): > display([p1,p2,p3]); Esercizio Plottare il grafico di y = x2 nell'intervallo [−4, 4] e il grafico di y = sin( x ) nell'intervallo [0, 2 π ], nello stesso sistema di riferimento. Soluzione > restart;with(plots): > gr1:=plot(x^2,x=-4..4,color=magenta,thickness=4,style=poin t,symbol=box,legend="parabola"): > gr2:=plot(sin(x),x=0..2*Pi,color=blue,thickness=2,style=po int,symbol=cross,legend="seno"): > display(gr1,gr2,title="Parabola e seno",titlefont=[COURIER,BOLD,12],axes=NORMAL); Esercizio Plottare nello stesso sistema di riferimento in colori diversi le funzioni 5 y = sin( x ), y = sin( 2 x ), y = sin( 3 x ), nell'intervallo [−π, π]. Soluzione > restart; > plot([sin(x),sin(2*x),sin(3*x)],x=-Pi..Pi,color=[green,blu e,red],legend=["sin(x)","sin(2x)","sin(3x)"]); Funzioni parametriche Per disegnare una curva parametrica si usa il comando plot([fh,fv,t=range],opts) dove - fh,fv definiscono le equazioni parametriche, rispettivamente rispetto all'asse orizzontale e a quello verticale, della funzione; - t è il parametro; - range è l'intervallo di variazione del parametro; - opts sono le opzioni di plot. Esempio Equazione parametrica della circonferenza con centro nell'origine e raggio 1. > restart; > x:=cos(t); y:=sin(t); > plot([x,y,t=0..Pi/2]); > plot([x,y,t=0..Pi]); > plot([x,y,t=0..2*Pi]); > Equazione parametrica della circonferenza con centro in (3,5) e raggio 0.5. > restart; > x:=3+0.5*cos(t): y:=5+0.5*sin(t): > plot([x,y,t=0..2*Pi], scaling=CONSTRAINED); Esempio Equazione parametrica della retta passante per (1, −1) e direzione data dal vettore v=(3, 2). > restart; > x:=1+3*t; y:=-1+2*t; > plot([x,y,t=-2..2]); Esercizio (Funzioni parametriche) a) Rappresentare la funzione parametrica x = cos( t ), y = sin( t ) per t ∈ [ 0, 2 π ]. Che forma ha il grafico? b) Rappresentare le funzioni y = cos( t ) e y = sin( t ), per t ∈ [ 0, 2 π ], nello stesso grafico. Qual è la differenza tra questo grafico e quello precedente? Soluzione a) > x:=cos(t):y:=sin(t): > plot([x,y,t=0..2*Pi],scaling=CONSTRAINED,title="Eq.para metrica della circonferenza"); 6 b) > f:=t->cos(t):g:=t->sin(t): > plot({f(t),g(t)},t=0..2*Pi,title="funzioni seno e coseno"); Esercizio (Funzioni parametriche) La curva tracciata da un punto su un cerchio, quando questo si muove lungo una retta, è chiamata cicloide. Le equazioni parametriche della cicloide sono x = r ( θ − sin θ ) y = r ( 1 − cos θ ) essendo r il raggio del cerchio. Disegnare la cicloide determinata da un cerchio di raggio 1 che compie 4 giri completi. Soluzione > x:=r*(t-sin(t)):y:=r*(1-cos(t)):r:=1: > plot([x,y,t=0..8*Pi],scaling=CONSTRAINED); 4.11 Grafici di funzioni implicite L'equazione di una curva piana si presenta spesso nella forma F( x, y ) = 0 con F funzione reale in un sottoinsieme di R2 . Ad esempio y − ax2 = 0 definisce l'equazione di una parabola con l'asse di simmetria parallelo all'asse delle y, mentre x − ay2 = 0 definisce l'equazione di una parabola con l'asse di simmetria parallelo all'asse delle x. Però mentre nel primo caso ad ogni x corrisponde un unico y e ciò vuol dire che l'equazione definisce implicitamente una funzione, nel secondo caso l'equazione x − ay2 = 0 non determina univocamente y in funzione di x. In entrambi i casi Maple permette di disegnare la curva definita implicitamente. Il comando utilizzato per il grafico di funzioni implicite è implicitplot, della libreria plots, la cui sintassi è implicitplot(f,x=a..b,y=c..d,opts) dove - f è l'equazione che definisce la curva; - a,b definiscono il range di variazione della variabile x; - c,d sono gli estremi di variazione della variabile y; - opts sono le opzioni del comando plot. > restart:with(plots): > implicitplot(y^3+x*y=1,x=-10..10,y=-3..3,numpoints=1000); > implicitplot(x^2+y^2=1,x=-1..1,y=-1..1,scaling=constrained); > implicitplot(x^2/4+y^2/2=3,x=-10..10,y=-3..3); > implicitplot(x^2/4-y^2/2=3,x=-10..10,y=-3..3); A volte è necessario intervenire sulla qualità del grafico > implicitplot(cos(x)^2=sin(y)^2,x=-2*Pi..2*Pi,y=-2*Pi..2*Pi,nu mpoints=300); 7 > implicitplot(cos(x)^2=sin(y)^2,x=-2*Pi..2*Pi,y=-2*Pi..2*Pi,nu mpoints=500); > implicitplot(cos(x)^2=sin(y)^2,x=-2*Pi..2*Pi,y=-2*Pi..2*Pi,nu mpoints=1000); > implicitplot(cos(x)^2=sin(y)^2,x=-2*Pi..2*Pi,y=-2*Pi..2*Pi,nu mpoints=5000); ____________________________________________________________________________ ________________________ > implicitplot(cos(x^2)=sin(y^2),x=-2*Pi..2*Pi,y=-2*Pi..2*Pi,nu mpoints=100); > implicitplot(cos(x^2)=sin(y^2),x=-2*Pi..2*Pi,y=-2*Pi..2*Pi,nu mpoints=500); > implicitplot(cos(x^2)=sin(y^2),x=-2*Pi..2*Pi,y=-2*Pi..2*Pi,nu mpoints=1000); > implicitplot(cos(x^2)=sin(y^2),x=-2*Pi..2*Pi,y=-2*Pi..2*Pi,nu mpoints=5000); > implicitplot(cos(x^2)=sin(y^2),x=-2*Pi..2*Pi,y=-2*Pi..2*Pi,nu mpoints=10000); 4.12 Rappresentazione di dati discreti Per rappresentare dati discreti bisogna creare una lista di liste, ciascuna delle quali contiene le coordinate di un punto. Esempio > restart; > l:=[[1,2],[2,1],[5,1],[0,0]]; > plot(l,style=point); Per scegliere lo stile e la dimensione dei punti > plot(l,style=point,symbol=circle,symbolsize=25); Omettendo l'opzione style=point e di conseguenza anche le altre opzioni, i punti vengono uniti da una linea retta, nell'ordine in cui compaiono nella lista. > plot(l); Per plottare un poligono chiuso > l2:=[[1,2],[2,1],[5,1],[0,0],[1,2]]: > plot(l2); Si può anche utilizzare il comando pointplot(L,opts) della libreria plots, dove > restart; with(plots): > l:=[[1,2],[2,1],[5,1],[1,-2]]; > pointplot(l,symbol=CROSS,symbolsize=20); In questo caso è superflua l'opzione style=point, e si può aggiungere style=line se si vogliono unire i punti con una linea retta. > Esercizio (Plot di dati discreti) 8 Plottare la lista dei quadrati degli interi positivi da 1 a 20. Soluzione > punti:=[seq([k,k^2],k=1..20)]; > plot(punti,style=point,symbol=box,title="Quadrati interi positivi 1-20"); oppure usando la libreria plots > with(plots): > punti:=[seq([k,k^2],k=1..20)]; > pointplot(punti,symbol=box,symbolsize=20); > > 9
© Copyright 2024 ExpyDoc