QuizWit

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ QuizWit ] in KIDS
글 쓴 이(By): parsec ( 먼 소 류 )
날 짜 (Date): 2002년 6월  4일 화요일 오후 06시 26분 27초
제 목(Title): Re: [문제] 세 양치기


> 첫번째 양치기는 가능하면 원에 가까운 모양을, 그 다음 양치기는 가능하면
> 반원에 가까운 모양을 그리는게 최적해군요.

> 그렇다면 말뚝이 무한하다면 어떤 모양으로 붙을까요?
> 첫번째는 원이겠지만, 두번째는 어디 쯤 붙고, 세번째는 또 어디에 붙고...
> 누가 예쁘게 CAD나 mathematica로 그려주세요. :)

두번째 양치기까지는 그럭저럭 해봤는데 세번째부터는 꽤 골치아파지네요.

다음은 매쓰매티카 입력입니다. 선으로 나눈 공식들을 차례로 매쓰매티카에

넣어보세요. (첫번째 양치기가 두른 울타리의 지름을 1로 놓고 품)

(면적 비율은 1:1.38612)

-----------------------8<-------------8<--------------------------

peri[a_,r_]:=2 Pi r 
/; (a>1 && a-1>=r) || r>=a+1;
peri[a_,r_]:=0 
/; a<=1 && r<=1-a;
peri[a_,r_]:=Module[{x,y},sol={y -> Sqrt[2 - a^(-2) - a^2 + 2*r^2 + 
      (2*r^2)/a^2 - r^4/a^2]/2, 
  x -> (1 + a^2 - r^2)/(2*a)};Return[2 r ArcCos[(x-a)/r]/.sol]]/;  
    Abs[a-1]<r && r<a+1;
---------------------------------------------------------------------------
area[a_,r_]:=Pi (r^2-1) 
/; r>=a+1;
area[a_,r_]:=Pi r^2 
/; a>1 && a-1>=r ;
area[a_,r_]:=0 
/; a<=1 && r<=1-a;
area[a_,r_]:=Module[{x,y},sol={y -> Sqrt[2 - a^(-2) - a^2 + 2*r^2 + 
      (2*r^2)/a^2 - r^4/a^2]/2, 
  x -> (1 + a^2 - r^2)/(2*a)};
t1=ArcCos[x]/.sol;
t2=ArcCos[(x-a)/r]/.sol;
Return[(t2 r^2-(x-a) y+x y-t1)/.sol]]/;  Abs[a-1]<r && r<a+1;
---------------------------------------------------------------------------
getr[a_]:=
  Module[{r,t},r=t/.FindRoot[{peri[a,t]==2 Pi},{t,0,1}];Return[r]]/;a<=1;
getr[a_]:=
  Module[{r,t},r=t/.FindRoot[{peri[a,t]==2 Pi},{t,a,a+0.1}];Return[r]]/;a>1;
---------------------------------------------------------------------------
Plot[getr[x],{x,0,3},PlotRange->{0,1.5}]
---------------------------------------------------------------------------
a1=Plot3D[peri[x,y],{x,0,3},{y,0,3},PlotPoints->50,Mesh->False];
---------------------------------------------------------------------------
a2=Plot3D[2 Pi,{x,0,3},{y,0,3},PlotPoints->50,Mesh->False];
---------------------------------------------------------------------------
Show[{a1,a2}]
---------------------------------------------------------------------------
Plot[area[a,getr[a]],{a,0,3},PlotRange->{0,5}]
---------------------------------------------------------------------------
sx=x/.FindMinimum[-area[x,getr[x]],{x,1.5,1.8}][[2]]
---------------------------------------------------------------------------
sr=getr[sx]
---------------------------------------------------------------------------
area[sx,sr]/Pi
---------------------------------------------------------------------------
Show[Graphics[{{RGBColor[1,.5,0],Disk[{sx,0},sr]},{RGBColor[0,0,0],
        Circle[{sx,0},sr]},{RGBColor[1,.9,0],Disk[{0,0},1]},{RGBColor[0,0,0],
        Circle[{0,0},1]}}],AspectRatio->Automatic]
---------------------------------------------------------------------------
             ◇    ~~~_ _
            ∴      ~|~| |     _/__,         SEP. 11. 2001
         _ ∴∴ _    ~ | |      \ `         Armorica under a tat
      ,-| `,-,_| |__ | | |   A
______|_|__|_|___|__|| | |__|_|_____________________________________
[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.