fncentr6.gms : 작은 입력에 대한 센트로피 내장 테스트

설명

함수 값과 도함수를 테스트합니다.
   centropy(x,y,delta) = x * log((x+delta)/(y+delta))
매우 작은 입력의 경우 :
  x [0,1e2]
  [1e-298,1e2]의 y
  d [0,1e2]

기여자: Steve Dirkse

소형 모델 유형 :메가 슬롯


카테고리 : 메가 슬롯 테스트 라이브러리


메인 파일 : fncentr6.gms 포함: fnset_xy.inc[htmlfntest_xy.inc[html]

$title '작은 입력에 대한 센트로피 내장 테스트' (FNCENTR6,SEQ=362)

$onText
함수 값과 도함수를 테스트합니다.
   centropy(x,y,delta) = x * log((x+delta)/(y+delta))
매우 작은 입력의 경우 :
  x [0,1e2]
  [1e-298,1e2]의 y
  d [0,1e2]

기여자: Steve Dirkse
$offText

$include fnset_xy.inc

$gdxIn fncentr6
$load aeps 담당자 T 데이터
$gdxIn
relToInput = 0;
aeps = 5e-13;

루프 T,
  data(T, 'f') = centropy.value( data(T,'x'),data(T,'y'),data(T,'d'));
  data(T, 'fx') = centropy.grad(1: data(T,'x'),data(T,'y'),data(T,'d'));
  data(T, 'fy') = centropy.grad(2: data(T,'x'),data(T,'y'),data(T,'d'));
  data(T,'fxx') = centropy.hess(1:1:data(T,'x'),data(T,'y'),data(T,'d'));
  data(T,'fxy') = centropy.hess(1:2:data(T,'x'),data(T,'y'),data(T,'d'));
  data(T,'fyx') = centropy.hess(2:1:data(T,'x'),data(T,'y'),data(T,'d'));
  data(T,'fyy') = centropy.hess(2:2:data(T,'x'),data(T,'y'),data(T,'d'));
  data(T, 'rc') = mathlastrc;
  data(T, 'ec') = mathlastec;
;

* 평가 오류가 발생할 수 있습니다. 이로 인해 테스트가 실패해서는 안 됩니다.
실행 오류 = 0;

relToInput을 표시;
$include fntest_xy.inc