설명
내접 사각형 문제는 사각 말뚝 문제라고도 알려져 있습니다. 테플리츠의 추측은 기하학에서 풀리지 않은 문제이다: 모든 평면의 단순 폐곡선은 4개의 꼭지점을 모두 포함합니까? 약간의 정사각형?
소형 모델 유형 :DNLP
카테고리 : 슬롯 머신 모델 라이브러리
메인 파일 : inscribedsquare.gms
$title 내접사각형 문제(INSCRIBEDSQUARE,SEQ=425)
$onText
내접제곱 문제는 사각못 문제라고도 알려져 있습니다.
테플리츠의 추측은 기하학에서 풀리지 않은 문제이다:
모든 평면의 단순 폐곡선은 4개의 꼭지점을 모두 포함합니까?
약간 정사각형?
이는 곡선이 볼록하거나 부분적으로 매끄러우며 다른 경우에도 마찬가지입니다.
특별한 경우. 이 문제는 1911년 Otto Toeplitz가 제안했습니다.
https://en.wikipedia.org/wiki/Inscribed_square_problem도 참조하세요.
이 모델은 주어진 곡선에 대한 최대 면적의 제곱을 계산합니다.
--fx 및 --fy 옵션을 사용하여 닫힌 개체의 x 및 y 좌표를 지정합니다.
변수 t의 함수인 곡선. 여기서 t의 범위는 -pi에서 pi까지입니다.
--gnuplot 1 옵션을 사용하여 곡선 및 계산된 제곱 플롯을 활성화합니다.
gnuplot 사용(사용 가능하고 실행 가능한 솔루션을 찾은 경우)
기여자: Benjamin Mueller 및 Felipe Serrano
$offText
*$set fx 죄(t)*cos(t)
*$set fy sin(t)*t
*$set fx cos(t-t*t)*sin(t)-t*t*sin(2*t+3*abs(t))
*$set fy sin(t)*t+0.5*t*t*cos(t)
$fx를 설정하지 않은 경우 $set fx sin(t) * cos(t-t*t)
$설정되지 않은 경우 fy $set fy t * sin(t)
$매크로 FX(t) %fx%
$매크로 fy(t) %fy%
$gnuplot이 설정되지 않은 경우 $set gnuplot 0
"사각형의 모서리 점" / 1*4 / 설정;
변수
z "최대화할 사각형 영역",
t(i) "곡선의 정사각형 모서리 점 위치",
x "정사각형의 왼쪽 하단 모서리의 x 좌표 (=fx(t('1')))",
y "정사각형의 왼쪽 하단 모서리의 y 좌표 (=fy(t('1')))";
양수 변수
"정사각형의 왼쪽 아래 모서리와 오른쪽 아래 모서리 사이의 수평 거리",
b "사각형의 왼쪽 아래 모서리와 오른쪽 아래 모서리 사이의 수직 거리";
t.lo(i) = -pi;
t.up(i) = 파이;
방정식
obj "정사각형의 면적, 제곱"
e1x "왼쪽 하단 모서리의 x 좌표를 정의합니다",
e1y "왼쪽 하단 모서리의 y 좌표를 정의합니다",
e2x "오른쪽 아래 모서리의 x 좌표를 정의합니다",
e2y "오른쪽 아래 모서리의 y 좌표를 정의합니다",
e3x "왼쪽 위 모서리의 x 좌표를 정의합니다",
e3y "왼쪽 위 모서리의 y 좌표를 정의합니다",
e4x "오른쪽 상단 모서리의 x 좌표를 정의합니다",
e4y "오른쪽 상단 모서리의 y 좌표를 정의합니다";
obj..z =E= sqr(a) + sqr(b);
e1x..fx(t('1')) =E= x;
e1y..fy(t('1')) =E= y;
e2x.. fx(t('2')) =E= x + a;
e2y..fy(t('2')) =E= y + b;
e3x.. fx(t('3')) =E= x - b;
e3y.. fy(t('3')) =E= y + a;
e4x.. fx(t('4')) =E= x + a - b;
e4y.. fy(t('4')) =E= y + a + b;
모델 m / 모두 /;
* (a,b)=0 해에서 벗어나기 위한 시작점
t.l(i) = -pi + (ord(i)-1) * 2*pi/카드(i);
x.l = fx(t.l('1'));
y.l = fy(t.l('1'));
a.l = 1;
b.l = 1;
DNLP를 사용하여 m max z를 해결합니다.
파일 f / '%슬롯 머신scrdir%gnuplot.in' /;
if( %gnuplot% 및
(m.modelstat = %modelStat.optimal% 또는
m.modelstat = %modelStat.locallyOptimal% 또는
m.modelstat = %modelStat.feasibleSolution%),
f.nd=6;
f.nw=0;
f를 넣어;
'설정된 크기 비율 -1'을 입력하세요. /;
'샘플 1000개 설정'을 입력하세요. /;
'x.l',' y.l에서 '객체 1 다각형 설정'을 넣습니다.
'(x.l+a.l) ','(y.l+b.l)에 '를 넣습니다.
'(x.l+a.l-b.l) ','(y.l+a.l+b.l)에 '를 넣습니다.
'(x.l-b.l) ','(y.l+a.l)에 '를 넣습니다.
'x.l'에 '를 넣고,'y.l/;
'객체 설정 1 fc rgb "파란색" 채우기 스타일 단색 0.1 테두리 lt -1' /;
'파라메트릭 설정'을 입력하세요. /;
put '범위 설정 [-pi:pi]' /;
put 'plot %fx%, %fy%' /;
'일시 중지 -1'을 입력하세요. /;
닫다 f;
'gnuplot %슬롯 머신scrdir%gnuplot.in'을 실행합니다.
'rm %슬롯 머신scrdir%gnuplot.in'을 실행합니다.
);