설명
센트로피 함수를 테스트하여 실제 도함수를 비교합니다. 수치적으로 계산된 것들로요. 이 테스트는 대략적인 테스트입니다. 정확성(어떤 잘못된 신호도 받지 않았는지 확인하기 위해) 오버플로가 불가능한 쉬운 범위에 입력을 유지하십시오. [1e0,1e100]의 x,y d [0,1e-8]
소형 모델 유형 :메가 슬롯
카테고리 : 메가 슬롯 테스트 라이브러리
메인 파일 : fncentr4.gms 포함: fnset_xy.inc[html] fntest_xy.inc[html]
$title '센트로피 내재의 정확성 테스트' (FNCENTR4,SEQ=360)
$onText
실제 도함수를 비교하여 중심 함수를 테스트합니다.
수치적으로 계산된 것들로요. 이 테스트는 대략적인 테스트입니다.
정확성(어떤 잘못된 신호도 받지 않았는지 확인하기 위해)
오버플로가 불가능한 쉬운 범위에 입력을 유지하십시오.
[1e0,1e100]의 x,y
[0,1e-8]의 d
$offText
$include fnset_xy.inc
T / 1 * 4000 / 설정;
TT(T)를 설정하고;
매개변수 pdata(T);
옵션 시드 = 2008;
pdata(T) = 균일(0,100);
data(T,'x') = 10**pdata(T);
pdata(T) = 균일(0,100);
data(T,'y') = 10**pdata(T);
pdata(T) = 균일(-20,-6);
TT(T) = pdata(T) < -8;
data(TT,'d') = 10**pdata(TT);
aeps = 1e-4;
담당자 = 1e-5;
relToInput = 0;
* 유한 차분을 사용하여 미분 값을 계산합니다.
* 참고: CMEX는 가능한 경우 gradn 및 hessn에 대해 중심차를 사용합니다.
* grad(x) = (f(x+h) - f(x-h)) / 2h
* 헤스(x) = grad(x+h) - grad(x-h) / 2h
* FDDelta를 설정하면 h가 기본값인 1e-5에서 감소합니다.
옵션 FDDelta = 1e-3;
루프 T,
data(T, 'f_') = centropy.value( data(T,'y'),data(T,'x'),data(T,'d'));
data(T, 'fy_') = centropy.gradn(1: data(T,'y'),data(T,'x'),data(T,'d'));
data(T, 'fx_') = centropy.gradn(2: data(T,'y'),data(T,'x'),data(T,'d'));
data(T,'fyy_') = centropy.hessn(1:1:data(T,'y'),data(T,'x'),data(T,'d'));
data(T,'fyx_') = centropy.hessn(1:2:data(T,'y'),data(T,'x'),data(T,'d'));
data(T,'fxy_') = centropy.hessn(2:1:data(T,'y'),data(T,'x'),data(T,'d'));
data(T,'fxx_') = centropy.hessn(2:2:data(T,'y'),data(T,'x'),data(T,'d'));
데이터(T, 'rc') = 0;
데이터(T, 'ec') = 0;
;
루프 T,
data(T, 'f') = centropy.value( data(T,'y'),data(T,'x'),data(T,'d'));
data(T, 'fy') = centropy.grad(1: data(T,'y'),data(T,'x'),data(T,'d'));
data(T, 'fx') = centropy.grad(2: data(T,'y'),data(T,'x'),data(T,'d'));
data(T,'fyy') = centropy.hess(1:1:data(T,'y'),data(T,'x'),data(T,'d'));
data(T,'fyx') = centropy.hess(1:2:data(T,'y'),data(T,'x'),data(T,'d'));
data(T,'fxy') = centropy.hess(2:1:data(T,'y'),data(T,'x'),data(T,'d'));
data(T,'fxx') = centropy.hess(2:2:data(T,'y'),data(T,'x'),data(T,'d'));
data(T, 'rc') = mathlastrc;
data(T, 'ec') = mathlastec;
;
relToInput을 표시;
$include fntest_xy.inc