Re: JSL派生の正しい使い方返信してくれてありがとう!
これをさらに一歩進めることはできますか?
多変量関数があり、導関数を作成するために事前に知っている入力のリストをループしたいとしましょう。
代わりに、セットアップは次のようになります
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 );
);
このループで変数を参照しようとすると、Derivative 関数が失敗します。 何かご意見は?
Re: JSL派生の正しい使い方formula = Expr((-211374703.282551) + 30.8532207444449 * :X1);
Show( formula );
// Make derivative
derivative = Derivative(name expr(formula), X1);
show(derivative);
重要なのは、数式が Derivative に渡されるときに数式が評価されないようにすることです。 Expr の 2 番目のレイヤーをラップすると、望ましい動作が作成されますが、実際には、Expr の最初のレイヤーが呼び出しに渡されるときに剥がれます。
Re: JSL派生の正しい使い方数式に Expr を追加してみてください。
formula = Expr(Expr((-211374703.282551) + 30.8532207444449 * :X1));
JSL デリバティブの適切な使用方法私はしばらくの間、JSL を使用して応答曲面モデルの導関数を作成しようと試みてきました。 ここにはドキュメントが不足しており、派生製品の手動作成のみを指摘しているフォーラム投稿もあり、私の問題は解決されていません。 すでにフィットと予測式がデータ テーブルの列に保存されています。 私がやりたいのは、JSL を使用して数式のシンボリック導関数を作成し、それを別の列に適用することです。 これまでのところ、次のコードはすべて、この問題を解決するために私が試みたさまざまな方法ですが、無駄でした。
// 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);
そして、私が得る出力は
formula = (-211374703.282551) + 30.8532207444449 * :X;
derivative = 0;
derivative = 0;
derivative = .;
derivative = .;
derivative = .;
derivative = 0;
derivative = .;
derivative = .;
derivative = 0;
derivative = .;
derivative = .;
通常、式は保存された予測式を保持する列から抽出され、この場合、印刷出力には式が正常に表示されます。
ここで何が欠けているのでしょうか? これは簡単なプロセスだと思いました。
ご協力いただけると幸いです。
データの探索と視覚化