Ri: Modo corretto di utilizzare il derivato JSLGrazie per la risposta!
Possiamo fare un ulteriore passo avanti?
Diciamo che ho una funzione multivariata e voglio scorrere un elenco di input che conosco in anticipo per creare derivati.
Quindi invece l'installazione sarebbe
formula = Expr((-211374703.282551) + 30.8532207444449 * :MyVar1 - 0.42 * :AnotherVar2);<BR />factors = List(MyVar1, AnotherVar2);
// Clone formula n times into columns
dt << Clone Formula Column(
"Pred Formula",
N Items(factors),
);
For(i = 1, i < N Items(factors), i++,
col = Column( dt, "Pred Formula " || char(eval(i+1)) );
col << Set Name( "doptval d" || factors[i]);
// Get Formula
formula = col << Get Formula;
// Make derivative
derivative = Derivative(name expr(formula), factors[i]);
// Apply derivative to new column
col << Set Formula( derivative );
);
Ora il tentativo di fare riferimento alla variabile in questo ciclo sta causando il fallimento della funzione Derivata. qualche idea?
Ri: Modo corretto di utilizzare il derivato JSLformula = Expr((-211374703.282551) + 30.8532207444449 * :X1);
Show( formula );
// Make derivative
derivative = Derivative(name expr(formula), X1);
show(derivative);
La chiave è evitare che la formula venga valutata quando viene passata in Derivata. Il wrapping di un secondo livello di Expr crea il comportamento desiderato ma in realtà rimuove il primo livello di Expr quando viene passato alla chiamata.
Ri: Modo corretto di utilizzare il derivato JSLProva ad aggiungere Expr extra alla tua formula:
formula = Expr(Expr((-211374703.282551) + 30.8532207444449 * :X1));
Modo corretto di utilizzare il derivato JSLDa qualche tempo sto tentando di creare derivati di un modello di superficie di risposta con JSL. La mancanza di documentazione e i post sul forum qui che puntano solo alla creazione manuale di derivati non hanno risolto il mio problema. Ho già un adattamento e la formula di previsione salvata in una colonna della tabella dati. Quello che mi piacerebbe fare è usare JSL per creare la derivata simbolica della formula e applicarla a un'altra colonna. Finora il codice seguente sono tutti i diversi modi in cui ho tentato di risolvere questo problema senza alcun risultato.
// Get Formula
//formula = col << Get Formula;
formula = Expr((-211374703.282551) + 30.8532207444449 * :X1);
Show( formula );
// Make derivative
derivative = Derivative(formula, X1);
Show(derivative);
derivative = Derivative(formula, :X1);
Show(derivative);
derivative = Derivative(formula, "X1");
Show(derivative);
derivative = Derivative(formula, ":X1");
Show(derivative);
derivative = Derivative(formula, Column(:X1));
Show(derivative);
derivative = Derivative(Eval(formula), X1);
Show(derivative);
derivative = Derivative(formula, Eval(X1));
Show(derivative);
derivative = Derivative(Eval(formula), Eval(X1));
Show(derivative);
derivative = Derivative(Expr(formula), X1);
Show(derivative);
derivative = Derivative(formula, Expr(X1));
Show(derivative);
derivative = Derivative(Expr(formula), Expr(X1));
Show(derivative);
E l'output che ottengo è
formula = (-211374703.282551) + 30.8532207444449 * :X;
derivative = 0;
derivative = 0;
derivative = .;
derivative = .;
derivative = .;
derivative = 0;
derivative = .;
derivative = .;
derivative = 0;
derivative = .;
derivative = .;
In genere la formula viene estratta dalla colonna che contiene la formula di previsione salvata e in questo caso la stampa mostra correttamente la formula.
Cosa mi manca qui? Ho pensato che sarebbe stato un processo semplice.
Grazie per qualsiasi aiuto che potresti essere in grado di dare!
Esplorazione e visualizzazione dei dati