Studio di funzioni
Yorick è un linguaggio interpretato creato al Lawrence Livermore National Laboratory nel 1994 per essere utilizzato nello studio e rappresentazione grafica di funzioni.
La struttura sintattica di Yorick è simile a quella del C, ma senza la necessità di dichiarare le variabili. I tipi di dato sono numeri interi, reali e complessi, caratteri, puntatori e strutture composte di dati elementari. Yorick è fornito con un vasto corredo di esempi-funzioni, sia per algoritmi di integrazione, derivazione, interpolazione, che per la realizzazione di grafica in 3D ed animazione.
Il linguaggio si avvale di istruzioni per generare e trattare vettori ed array, questi possono essere inizializzati con un certo valore (array(valore,dimensioni)), con valori ad incremento costante o logaritmico (span(minimo,massimo,numero_punti), indgen() e spanl()) o con valori casuali (random()).
>
a=indgen(13:97:4) // da 13 a 97 con
passo 4
> a
[13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93,97]
>
a(3:13:4)
[21,37,53]
>
a(11:)
[53,57,61,65,69,73,77,81,85,89,93,97]
>
a(where(a % 5 == 0)) // where fornisce una lista di indici
[25,45,65,85]
Le funzioni primitive di disegno permettono di ottenere, dai vettori contenenti le coordinate dei punti, il grafico di una funzione in modo efficace ed intuitivo: se la funzione è y=f(x), ed il vettore x contiene le coordinate (in ordine) di un dato intervallo, il grafico si ottiene con il comando plg, f(x),x; se invece la curva è in forma parametrica, x=g(p) e y=h(p), e si ha a disposizione un vettore dei valori del parametro, il comando è plg, h(p),g(p). L’esempio sottostante mostra le istruzioni per generare un cerchio tramite la funzione analitica e quella parametrica.
p=span(0,2*pi,200)
// fra 0 e 2 pigreco
plg,
2*sin(p),2*cos(p) // cerchio di raggio 2
x = span(-2,2,200);
// fra -2 e 2
plg, sqrt(4-x^2),x
// semicerchio superiore
plg,
-sqrt(4-x^2),x // semicerchio
inferiore
Si
possono realizzare grafici di funzioni tridimensionali (superfici) e, tramite
l’utilizzo di librerie peraltro con qualche problema di robustezza, si possono
ottenere grafici colorati, a filo di ferro e con l’effetto di uno o più
sorgenti luminose. Sempre tramite librerie si ottengono grafici in movimento.
La
presentazione del grafico è controllabile tramite degli script di stile; in dotazione
ce ne sono una decina e se ne possono costruire per particolari esigenze; ad
esempio “axes.gs”
fornisce un sistema di assi cartesiani. La documentazione è discreta ed
accessibile anche dall’ambiente dell’interprete, grazie ad un opportuno utilizzo
dei commenti. Sono presenti funzioni per leggere e scrivere alcuni formati
grafici e per produrre grafici in formato PostScript.
Il programma che segue disegna alcune funzioni.
//
Copyright (c) 1996. The Regents of
the University of California. //
Yorick 1.5.12 func
ellisse(a,b,cx,cy,ang,colore=) /* DOCUMENT
ellisse(a,b,cx,cy,ang,colore=) disegna un'ellisse centrata in cx,cy, con assi a,b, ruotati di ang radianti */ {lim = a*b*10.0; // 10.0 forza
lim reale if (colore == nil) colore = "black"; vect = array(0.0,int(lim*2*pi),2); for (i=0; i < int(lim*2*pi);i++) {vect(i,1) = a*cos(i/lim); vect(i,2) = b*sin(i/lim); } plg,
cy+vect(,1)*sin(ang)+vect(,2)*cos(ang),
cx+vect(,1)*cos(ang)-vect(,2)*sin(ang),color=colore; } require,
"graph.i" window,
style="axes.gs" hcp_file, "graf2D.ps" limits,
-10.0,10.0,-10.0,10.0; // ampiezza
finestra grafica pldefault,
color = "green" theta = span(0, 2*pi, 100) plg,2*cos(theta)-3,2*sin(theta)+4,legend="A:
Circolo raggio 3, centro (4,-3)" vect
= span(-10,10,100) pldefault,
color = "red" // funzione somma di quadrica e
trigonometrica plg,
0.1*vect^2-2*sin(vect),vect,legend="B: Somma di funzioni" plt,
"Prova grafici",
-8.5,9.3,tosys=1,font="courier",height=14,color = "blue"; ellisse(4,2,-2,6,pi/6,colore =
"magenta"); // ellissi
inclinata di 30 gradi hcp; hcp_finish; |
Copyright (c) 1996. The Regents of the University of
California. All rights reserved. Yorick 1.5.12 ready. For help type 'help' >
include,"graf2D.i" [] > help, ellisse /* DOCUMENT ellisse(a,b,cx,cy,ang,colore=) disegna un'ellisse centrata in cx,cy, con assi a,b, ruotati di ang radianti */ defined at: LINE: 3
FILE: C:/YORICK-1.5-12/i/graf2D.i > |
|
Figura 1