mingamma.gms : GAMMA(x)의 최소 y

설명

x > 0에 대해 y = gamma(x) 및 y = loggamma(x)의 최소값 찾기

소형 모델 유형 :DNLP


카테고리 : 무료 슬롯 사이트 모델 라이브러리


메인 파일 : mingamma.gms

$title GAMMA(x)의 최소 y (MINGAMMA,SEQ=299)

$onText
x > 0에 대해 y = gamma(x) 및 y = loggamma(x)의 최소값을 구합니다.

Sloane, NJA, 정수 시퀀스의 온라인 백과사전; 순서
A030169. https://oeis.org/A030169

키워드: 비선형 계획법, 불연속 도함수, 통계
$offText

변수 y1, y2, x1, x2;

방정식 y1def, y2def;

x1.lo = 0.01;
x2.lo = 0.01;

y1def.. y1 =e= 감마(x1);

y2def.. y2 =e= loggamma(x2);

모델
   m1 / y1def /
   m2 / y2def /;

nlp를 사용하여 y1을 최소화하는 m1을 해결합니다.

nlp를 사용하여 y2를 최소화하는 m2를 해결합니다.

스칼라
   x1opt / 1.46163214496836 /
   x1델타
   x2델타
   y1opt / 0.8856031944108887 /
   y1델타
   y2delta
   y2opt;

y2opt = 로그(y1opt);

옵션 소수 = 8;

x1델타 = x1.l - x1opt;
y1delta = y1.l - y1opt;
x2delta = x2.l - x1opt;
y2delta = y2.l - y2opt;

x1.l, x2.l, y1.l, y2.l, x1opt, y1opt, y2opt, x1delta, x2delta, y1delta, y2delta를 표시합니다.

* 솔버는 x 값보다 y 값에 대해 훨씬 더 정확할 수 있습니다.
* 최소값을 찾을 때 다른 공차가 필요합니다.
스칼라
  xtol / 5e-5 /
  이톨 / 1e-6 /
  ;
if(m1.solveStat <> %solveStat.capabilityProblems%,
   abort$[abs(x1delta) > xtol 또는 abs(y1delta) > ytol] "감마와 일치하지 않는 결과";
);
if(m2.solveStat <> %solveStat.capabilityProblems%,
   abort$[abs(x2delta) > xtol 또는 abs(y2delta) > ytol] "loggamma와 일치하지 않는 결과";
);