두 변수 (P와 T)를 반복적으로 (SAS 코드에서 JSL로) 어떻게 풀 수 있습니까?좋은 날.
나는 JMP와 JSL에 익숙하지 않다. 필자는 SAS를 사용하여 SAS에서 수행 한 작업 중 일부를 JMP로 통합하려고합니다.
이 경우, 아래의 방정식을 반복적으로 사용하여 P (압력)와 T (온도)의 두 변수를 해결하는 SAS 코드 (아래 포함)가 있습니다.
이 JMP (및 JSL)를 수행하는 가장 쉬운 방법은 무엇입니까?
미리 감사드립니다.
Rob Preston (JMP 사용자에게 감사하는 초심자)
########################## ########################## ########
** SAS의 코드 (v9.1)
* P, T를 반복적으로 풀다. LOG는 LN (excl K)이다.
P_est = 0.0;
TK = 0.0;
T = 400;
T_est = T + 273;
TDIFF = 10.0;
IT = 0;
DO UNTIL (TDIFF
.0);
IT = IT + 1;
P_est = ((- T_est / 126.9) * log (aCrCaTs)) + (15.483 * (log (Crno / T_est))) + (T_est / 71.38) +107.8;
TK = (23166 + 39.28 * P_est) / (13.25 + 15.35 * Ti + 4.5 * Fe-1.55 * (Al + Cr-Na) + (LOG (aEn)) ** 2);
* 융합을 보장합니다 (3C 이내 설정).
TDIFF = ABS (TK-T_EST);
TDIFF> 0이면 T_est = TK + 1;
그렇지 않으면 TDIFF <0이면 T_est = TK-1;
else T_est = TK;
종료;
########################## ########################## ########
Re : 두 변수 (P와 T)를 반복적으로 (SAS 코드에서 JSL로) 어떻게 풀 수 있습니까?대단히 감사합니다.
나는 두 가지 방법을 시도 할 것이다. 이것은 나를위한 훌륭한 학습 운동입니다!
Re : 두 변수 (P와 T)를 반복적으로 (SAS 코드에서 JSL로) 어떻게 풀 수 있습니까?나는 짐보다 당신의 문제를 다른 방식으로 생각했다. 독립 변수가 같은 행에 있다는 것을 알지 못했고 모든 행에 대해 P와 T를 결정하려고합니다. 그렇다면 그의 솔루션 (SAS 코드의 번역)이 도움이 될 것입니다.
필자가 취한 것은 독립 변수 (예 : aCrCaTs)가 P와 T를 결정하기 전에 코드에서 결정되었다는 것입니다. 이러한 값이 없으므로 테스트 할 수 없지만 Minimize () 이전에 언급 한 기능. (실제로 변수 집합에 대해 작동하는 경우 For Each Row () 함수를 통해 행별로 적용 할 수 있습니다. 다음은 P 및 T를 찾는 내 (투기 적) 솔루션입니다.
// initialize variables
T = 400;
T_est = T + 273;
aCrCaTs = ?;
Cmo = ?;
Ti = ?;
Fe = ?;
Al = ?;
Cr = ?;
Na = ?;
aEn = ?;
// estimate P and T
Minimize(
P_est = ((-T_est/1269)*Log(aCrCaTs)) + (15.483*(Log(Cmo/T_est))) + (T_est/71.38)+107.8;
TK = (23166+39.28*P_est) / (13.25+15.35*Ti+4.5*Fe-1.55*(Al+Cr+Na)+Log(aEn)^2);
Abs( TK - T_est),
{ P_est, TK },
<< Max Iter( 100 ),
<< Tolerance( 3.0 )
);
첫 번째 인수는 최소화 할 표현식입니다. 이 경우 접착제 연산자는 절대 차이를 반환합니다. 절대 차이는 최소화하려는 수량입니다. 두 번째 인수는 결정할 매개 변수의 목록입니다. 선택적 메시지는 숫자 검색에 대한 추가 제어를 수행하는 데 사용될 수 있습니다.
이제 JMP에서 작업을 수행하는 데 최소한 두 가지 방법이 있습니다.
Re : 두 변수 (P와 T)를 반복적으로 (SAS 코드에서 JSL로) 어떻게 풀 수 있습니까?안녕하세요 짐.
예, 가정은 정확합니다. 방정식에서 언급 한 변수에 대한 모든 계산을 스크립팅했습니다. 그래서 모든 것이 정렬됩니다.
도와 주셔서 대단히 감사합니다. 대단히 감사합니다!Re : 두 변수 (P와 T)를 반복적으로 (SAS 코드에서 JSL로) 어떻게 풀 수 있습니까?다음은 SAS 코드를 JMP로 변환 한 것입니다. 당신이 제공 한 것은 데이터 테이블 뒤에 데이터 테이블이 있고, 제공 한 코드가 데이터 테이블의 각 행에 대해 처리된다는 것입니다. 또한 언급 된 cariables, aCrCaTs, Crno, Fe 등 데이터 테이블의 열입니다.
Names Default To Here( 1 );
dt = Current Data Table();
For Each Row(
P_est = 0.0;
TK = 0.0;
T = 400;
T_est = T + 273;
TDIFF = 10.0;
IT = 0;
While( TDIFF >= 3.0,
IT = IT + 1;
P_est = ((-T_est / 126.9) * Log( :aCrCaTs )) + (15.483 * (Log( :Crno / T_est ))) + (T_est / 71.38) + 107.8;
TK = (23166 + 39.28 * P_est) / (13.25 + 15.35 * Ti + 4.5 * :Fe - 1.55 * (:Al + :Cr - :Na) + (Log( :aEn )) ^ 2);
//to ensure convergence (set at within 3C);
TDIFF = Abs( TK - T_EST );
If(
TDIFF > 0, T_est = TK + 1,
TDIFF < 0, T_est = TK - 1,
T_est = TK
);
);
);
Re : 두 변수 (P와 T)를 반복적으로 (SAS 코드에서 JSL로) 어떻게 풀 수 있습니까?Mark 감사합니다.
나는 그것을 시도 할 것이다.
Re : 두 변수 (P와 T)를 반복적으로 (SAS 코드에서 JSL로) 어떻게 풀 수 있습니까?아마 당신은 최대화 () 또는 최소화 () 기능. 만나다 도움 > 스크립팅 인덱스 > 기능들 만큼 잘 도움 > 책 > 스크립팅 가이드 이 두 함수에 대한 정보는
그래도 코드 솔루션이 필요하다고 확신하지 못합니다. 대신, 비선형 플랫폼. 우리는 일반적으로 이것을 비선형 모델에 적합한 방법으로 인식하지만 실제로는 일반적인 최대화 솔루션이기도합니다. 만나다 도움 > 서적 > 예측 및 전문 모델링 , 제 13 장 "비선형 회귀 분석"을 참조하십시오.
물론 필요한 경우이 플랫폼을 스크립팅 할 수도 있지만 훌륭한 해결 방법입니다.