Re : Manière appropriée d'utiliser le dérivé JSLMerci pour la réponse!
Pouvons-nous aller plus loin?
Disons que j'ai une fonction multivariée et que je veux boucler sur une liste d'entrées que je connais à l'avance pour faire des dérivées.
Donc, à la place, la configuration serait
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 );
);
Maintenant, essayer de référencer la variable dans cette boucle provoque l'échec de la fonction Derivative. Des pensées?
Re : Manière appropriée d'utiliser le dérivé JSLformula = Expr((-211374703.282551) + 30.8532207444449 * :X1);
Show( formula );
// Make derivative
derivative = Derivative(name expr(formula), X1);
show(derivative);
La clé est d'éviter que la formule ne soit évaluée lorsqu'elle est passée dans Derivative. L'enveloppement d'une deuxième couche d'Expr crée le comportement souhaité, mais en fait supprime la première couche d'Expr lorsqu'elle est transmise à l'appel.
Re : Manière appropriée d'utiliser le dérivé JSLEssayez d'ajouter Expr supplémentaire à votre formule :
formula = Expr(Expr((-211374703.282551) + 30.8532207444449 * :X1));
Bonne façon d'utiliser le dérivé JSLJ'essaie de créer des dérivés d'un modèle de surface de réponse avec JSL depuis un certain temps maintenant. Le manque de documentation et les messages du forum ici pointant uniquement vers la création manuelle de dérivés n'ont pas résolu mon problème. J'ai déjà un ajustement et la formule de prédiction enregistrée dans une colonne de la table de données. Ce que j'aimerais faire, c'est utiliser JSL pour créer la dérivée symbolique de la formule et l'appliquer à une autre colonne. Jusqu'à présent, le code suivant représente toutes les différentes façons dont j'ai tenté de résoudre ce problème en vain.
// 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);
Et la sortie que j'obtiens est
formula = (-211374703.282551) + 30.8532207444449 * :X;
derivative = 0;
derivative = 0;
derivative = .;
derivative = .;
derivative = .;
derivative = 0;
derivative = .;
derivative = .;
derivative = 0;
derivative = .;
derivative = .;
Généralement, la formule est extraite de la colonne contenant la formule de prédiction enregistrée et, dans ce cas, l'impression affiche correctement la formule.
Qu'est-ce que j'oublie ici? Je pensais que ce serait un processus simple.
Merci pour toute aide que vous pourriez être en mesure de donner!
Exploration et visualisation des données