Integrate(), Interpolate() e SplineEval()
Combinate Integrate con Interpolate o SplineEval per ottenere l'area sotto la curva.
@seligman ha scritto Utilizzo di JMP per trovare l'area sotto una curva ; ecco qualche informazione in più su alcune funzioni integrate.
La funzione Interpola utilizza un elenco ordinato di coordinate X e un corrispondente elenco di coordinate Y e risponde alla domanda "se X fosse 42, quale sarebbe Y?" utilizzando l'interpolazione lineare tra le due coordinate X più vicine nell'elenco ordinato. L'interpolazione lineare produce segmenti di linea retta con punti dati sugli angoli della curva.
La funzione SplineEval fa la stessa cosa (con l'aiuto della funzione Spline Coef) usando un'interpolazione spline. Una spline è un filo metallico flessibile ed elastico che passa vicino ai punti dati, a seconda della sua rigidità. Di solito i punti dati non cadono sulla curva spline.
Entrambe queste funzioni producono tutti i punti dati in una curva dalla prima X all'ultima X.
La funzione Integrate risponde a una domanda diversa: "quanta area c'è sotto questa curva in questo intervallo?" Interpolate ha quattro argomenti; i primi due descrivono una funzione af(x) che genera una curva e gli ultimi due descrivono un intervallo di valori x. Il risultato di Integrate( f(x), x, low, high ) è l'area sotto la curva mentre x va dal basso verso l'alto. Le prime due variabili sembrano ripetere x perché f(x) potrebbe essere un'espressione come a+2*be la seconda variabile dice se a o b è la variabile tra basso e alto.
Il JSL per questo post riguarda l'utilizzo di Interpolate o SplineEval come valore f(x) di Interpolate.Costruisce un grafico interattivo per aiutare a capire come trovare l'area sotto una curva definita da alcuni punti dati rumorosi potrebbe funzionare con l'interpolazione lineare o spline. Mostra anche la risposta esatta (rosso) prima che il rumore (punti dati neri) fosse aggiunto ai dati. La curva blu è la spline adattata ai punti dati neri. Il grafico a barre al centro mostra i tre calcoli dell'area affiancati; solo la barra blu centrale si sposta quando cambia la tensione della spline. Con i giusti dati casuali, qualsiasi barra può essere più alta o più corta delle altre.
JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL makes a graph like this; the lambda slider changes the blue spline's tension.JSL fa un grafico come questo; il cursore lambda cambia la tensione della spline blu.
JMP 16 richiesto... per ogni...
New Window( "Integrate Area Under Curve",
// make a function, in the window: namespace, that returns a sine wave
window:f = Function( {t},
50 + Sin( t / 10 ) * 40
);
// create the x dimension of the graph
window:xmin = 20; // integrate over this range
window:xmax = 80;
window:xcoarse = window:xmin :: window:xmax :: 4; // the coarse data is used to make random data from sin function
window:xfine = window:xmin :: window:xmax :: 0.125; // the fine data is used for outlining smooth polygons
// create the y dimension of the graph from x and function f(x) and some randomness
window:random = 10; // random variation, slider below
// this function called here, and from slider below
window:generatedata = Function( {}, // regenerate the points with new random error
window:ycoarse = window:f( window:xcoarse ) + J( 1, N Col( window:xcoarse ), Random Normal( 0, window:random ) );
// ycoarse is the y data for the points; limit it to stay on the y axis...
window:ycoarse[Loc( window:ycoarse > 99 )] = 99;
window:ycoarse[Loc( window:ycoarse < 1 )] = 1;
);
window:generatedata(); // prepare the initial data in the graph
// lambda is the tension on the spline interpolation, slider below
window:loglambda = 2;// spline tension, a nice middle value
// random patterns for filled areas. the exponents are artistically adjusted for blending the colors
// with gray drawn first, and dark, and yellow drawn last, medium, and blue between, but light.
// there are 7 overlaps with different shades.
window:patternsize = 299; // big square patch for a pattern
window:pat01 = J( window:patternsize, window:patternsize, (Random Integer( 0, 255 ) / 255) ^ 0.5 );//gray
window:pat02 = J( window:patternsize, window:patternsize, (Random Integer( 0, 255 ) / 255) ^ 3 );//blue
window:pat03 = J( window:patternsize, window:patternsize, (Random Integer( 0, 255 ) / 255) ^ 2 );//yellow
window:bar01 = 38;
window:bar02 = 44;// bar x-locations, in graph coordinates; they look good here, for this sine wave
window:bar03 = 50;
window:show = [1 1 1];
window:barwide = 5;
window:barbottom = 50;// bottom of chopped off bar
window:bartop = window:barbottom + 5;
// map values of the AUC onto the graph
window:aucMin = 1500;
window:aucMax = 4000;
window:aucToGraph = Function( {y}, // convert auc to graph Y to make bar heights; 0 is for a label
Interpolate( y, 0, window:barbottom - window:bartop, window:aucMin, 7, window:aucMax, 97 - window:bartop )
);
// draw a broken bar; x in graph units, y in auc units
window:drawAucBar = Function( {x, y},
y = window:aucToGraph( y );
Polygon(// ragged edge bottom poly below the break
x || x || x + .1 * window:barwide || x + .3 * window:barwide || x + .5 * window:barwide || x + .8 * window:barwide || x + window:barwide
|| x + window:barwide,
window:barbottom || window:barbottom + 5 || window:barbottom + 6 || window:barbottom + 4 || window:barbottom + 7 || window:barbottom + 3
|| window:barbottom + 5 || window:barbottom
);
If( y >= 0, // the bar is below the break, don't draw
Polygon(
x || x || x + .1 * window:barwide || x + .3 * window:barwide || x + .5 * window:barwide || x + .8 * window:barwide || x + window
:barwide || x + window:barwide,
window:bartop + y || window:bartop + 5 || window:bartop + 6 || window:bartop + 4 || window:bartop + 7 || window:bartop + 3 || window
:bartop + 5 || window:bartop + y
)
);
);
// make the GUI
window:g = Graph Box(
// this script runs when the graph needs to reshow, either the first time, or because a slider script uses <<RESHOW framesize=""></RESHOW>

Combinate Integrate con Interpolate o SplineEval per ottenere l'area sotto la curva.
Oggetto: Integrate(), Interpolate() e SplineEval()Grazie! Ho scoperto che anche un quadrato casuale 99x99 produceva un bordo piastrellato visibile se lo stavo cercando. A 299x299 non lo vedo più.
Alla fine ho aggiunto fillpattern() senza argomenti, sperando che cancellasse il modello. Sembra che. Senza di esso, i punti dati rotondi vengono riempiti, cosa che davvero non mi aspettavo. Con modelli di tratteggio incrociato sparsi, i punti dati per lo più non venivano visualizzati. Immagino sia una caratteristica.
Big filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersBig filled diamond and filled circle markersGrande diamante pieno e pennarelli a cerchio pieno
p = J( 128, 128, . );
Parallel Assign( {}, p[r( -20, 20 ), c( -20, 20 )] = (Sin( r ) * Sin( c ) + 1) / 2 );
New Window( "bumps",
Graph Box(
<<MARKER size=""></MARKER>Oggetto: Integrate(), Interpolate() e SplineEval()
Fill Pattern()
Carino!
New Window( "window",
Graph Box(
framesize( 1000, 900 ),
Y Scale( 0, 900 ),
X Scale( 0, 1000 ),
for (i=1,i<=89,i++,
pattSize = i;
pen color(black);
pen size (2);
y1 = floor(i/10)*100;
x1 = mod(i,10)*100;
Rect( mod(i,10)*100, (floor(i/10))*100+i, (mod(i,10))*100+i, floor(i/10)*100);
Fill Color( "dark blue" );
Fill Pattern( J( pattsize, pattsize, (Random Integer( 0, 255 ) / 255) ) );
Rect( mod(i,10)*100, (floor(i/10)+1)*100-10, (mod(i,10)+1)*100-10, floor(i/10)*100, 1 );
)
)
);

Oggetto: Integrate(), Interpolate() e SplineEval()Nuova versione con un solo motivo e una barra di scorrimento per regolare le dimensioni del motivo.
NB: un modo semplice per rigenerare continuamente nuove versioni del pattern: ridimensiona la finestra 
Interessante:
La griglia della finestra del grafico sembra essere appena visibile in modalità "live" - come una griglia statica rispetto al rumore casuale dei modelli che cambiano.
Se blocco lo schermo (non ridimensiono la finestra), la griglia "scompare".
Anche per te?

Names default to here(1);
New Window( "window",
V List Box(
window:i = 1;
Slider Box( 1,300, window:i, window:gb << reshow ),
window:gb = Graph Box(
framesize( 600, 600 ),
Y Scale( 0, 600 ),
X Scale( 0, 600 ),
window:pattSize = i;
Fill Color( "dark blue" );
mat= J( window:pattsize, window:pattsize, (Random Integer( 0, 255 ) / 255) );
//mat=J( pattsize, pattsize, 0 );
Fill Pattern( mat );
Rect( 0, 600, 600, 300, 1 );
mat[0,window:pattsize]=J(window:pattsize,1,1);
mat[window:pattsize,0]=J(1,window:pattsize,1);
Fill Pattern( mat );
Rect( 0, 300, 600, 0, 1 );
Text Size( 50 );
Text( {270, 270}, Char(floor(i) ) );
);
)
);