回复:使用 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 函數失敗。 有什麼想法嗎?
回复:使用 JSL 導數的正確方法formula = Expr((-211374703.282551) + 30.8532207444449 * :X1);
Show( formula );
// Make derivative
derivative = Derivative(name expr(formula), X1);
show(derivative);
關鍵是要避免在將公式傳遞給 Derivative 時對其求值。 包裝第二層 Expr 會創建所需的行為,但實際上會在傳遞給調用時剝離第一層 Expr。
回复:使用 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 = .;
通常,公式是從保存預測公式的列中提取的,在這種情況下,打印輸出確實成功顯示了該公式。
我在這裡缺少什麼? 我認為這將是一個簡單的過程。
感謝您能夠提供的任何幫助!
數據探索和可視化