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의 두 번째 레이어를 래핑하면 원하는 동작이 생성되지만 Expr이 호출에 전달될 때 실제로 첫 번째 레이어가 벗겨집니다.
Re: JSL 파생 상품을 사용하는 올바른 방법수식에 추가 Expr을 추가해 보십시오.
formula = Expr(Expr((-211374703.282551) + 30.8532207444449 * :X1));
JSL 파생물을 사용하는 올바른 방법저는 한동안 JSL을 사용하여 응답 표면 모델의 파생물을 만들려고 시도했습니다. 수동 파생 상품 생성을 가리키는 문서 및 포럼 게시물이 부족하여 내 문제가 해결되지 않았습니다. 저는 이미 Fit이 있고 예측 공식이 데이터 테이블의 열에 저장되어 있습니다. 내가 하고 싶은 것은 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 = .;
일반적으로 수식은 저장된 예측 수식을 포함하는 열에서 추출되며 이 경우 인쇄물에 수식이 성공적으로 표시됩니다.
내가 여기서 무엇을 놓치고 있습니까? 나는 이것이 간단한 과정이라고 생각했습니다.
당신이 줄 수 있는 도움에 감사드립니다!
데이터 탐색 및 시각화