설명
arctan2 함수를 테스트하여 실제 도함수를 비교하세요 수치적으로 계산된 것들로요. 이 테스트는 대략적인 테스트입니다. 정확성(어떤 잘못된 신호도 받지 않았는지 확인하기 위해) 입력을 쉬운 범위 [1,5]에 유지하십시오.
소형 모델 유형 :슬롯 사이트 추천
카테고리 : 슬롯 사이트 추천 테스트 라이브러리
메인 파일 : fnatan2n.gms 포함: fnset_xy.inc[html] fntest_xy.inc[html]
$title 'arctan2 내장의 정확성 테스트' (FNATAN2N,SEQ=275)
$onText
실제 도함수를 비교하여 arctan2 함수를 테스트합니다.
수치적으로 계산된 것들로요. 이 테스트는 대략적인 테스트입니다.
정확성(어떤 잘못된 신호도 받지 않았는지 확인하기 위해)
입력을 쉬운 범위 [1,5]에 유지하십시오.
$offText
$include fnset_xy.inc
T / 1 * 4000 / 설정;
TT(T) / 1 * 1000 / 설정;
스칼라 n;
n = 카드(tt);
abort$(n*4 <> 카드(t)) 'T & P 불일치';
매개변수 pdata(T,V);
옵션 시드 = 1001;
pdata(TT,'x') = 균일(1,5);
pdata(TT,'y') = 균일(1,5);
데이터(T, V) = pdata(T, V);
data(T+n ,'x') = pdata(T,'x');
data(T+n ,'y') = -pdata(T,'y');
data(T+(2*n),'x') = -pdata(T,'x');
data(T+(2*n),'y') = pdata(T,'y');
데이터(T+(3*n), V) = -pdata(T, V);
* 데이터 표시;
aeps = 1e-7;
담당자 = 1e-6;
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 = 5e-5;
루프 T,
data(T, 'f_') = arctan2.value( data(T,'y'),data(T,'x'));
data(T, 'fy_') = arctan2.gradn(1: data(T,'y'),data(T,'x'));
data(T, 'fx_') = arctan2.gradn(2: data(T,'y'),data(T,'x'));
data(T,'fyy_') = arctan2.hessn(1:1:data(T,'y'),data(T,'x'));
data(T,'fyx_') = arctan2.hessn(1:2:data(T,'y'),data(T,'x'));
data(T,'fxy_') = arctan2.hessn(2:1:data(T,'y'),data(T,'x'));
data(T,'fxx_') = arctan2.hessn(2:2:data(T,'y'),data(T,'x'));
데이터(T, 'rc') = 0;
데이터(T, 'ec') = 0;
;
루프 T,
data(T, 'f') = arctan2.value( data(T,'y'),data(T,'x'));
data(T, 'fy') = arctan2.grad(1: data(T,'y'),data(T,'x'));
data(T, 'fx') = arctan2.grad(2: data(T,'y'),data(T,'x'));
data(T,'fyy') = arctan2.hess(1:1:data(T,'y'),data(T,'x'));
data(T,'fyx') = arctan2.hess(1:2:data(T,'y'),data(T,'x'));
data(T,'fxy') = arctan2.hess(2:1:data(T,'y'),data(T,'x'));
data(T,'fxx') = arctan2.hess(2:2:data(T,'y'),data(T,'x'));
data(T, 'rc') = mathlastrc;
data(T, 'ec') = mathlastec;
;
relToInput을 표시;
$include fntest_xy.inc