워밍업과 시간이 걸리는 학교 문제 - 페이지 5

 
Aleksey Nikolayev :

1) 최대 면적을 갖는 집합의 꼭짓점이 같은 원 위에 있어야 한다는 사실을 증명하기 어렵다(Cramer의 정리). 나는 그것을 증명하는 방법이나 문서를 읽을 곳을 모릅니다.

2) 나는 최대 면적이나 원의 반지름에 대한 분석 공식의 존재를 정말로 믿지 않습니다.

3) MathSum() 함수를 사용하여 배열 요소의 합을 계산할 수 있습니다.

1) 이것은 명백한 사실이라고 생각합니다. 그리고 주어진 꼭짓점 A, 정중선 h 및 주어진 대향 a를 갖는 삼각형의 최대 면적이 주어진 꼭짓점에서의 각도가 다음과 같을 때 이등변 삼각형의 면적이라는 이해를 통해 쉽게 증명 최고. 그리고 그러한 삼각형의 면적은 h*a/2와 같습니다.

다각형의 주어진 변 사이의 모든 노드가 유연하고(자석의 어린이 생성자에서와 같이) 모든 정점이 공통 등거리 중심을 갖도록 변을 배열할 수 있다는 것이 분명하다고 상상해 보십시오(단, 가장 큰 변은 다른 변의 합보다 작습니다. 그렇지 않으면 연결되지 않습니다. 동그라미에 새겨져 있습니다. 그리고 이것은 최대 면적이 될 것입니다. 왜냐하면. 그것은 이등변 삼각형의 면적의 합으로 구성되며 한 변은 이 원의 반지름과 같습니다.

2) 나는 믿는다

3) MQL4 또는 MQL5에서 이러한 공식을 찾지 못했습니다.

 
Nikolai Semko :

1) 이것은 명백한 사실이라고 생각합니다.

직관적으로 그렇습니다. 그러나 엄격하지 않은 증명의 경우에도 이것은 스트레칭으로 당기지 않습니다.

2) 나는 믿는다

만약 그렇다면, 그것은 발견될 수 있으며, 방정식 시스템만 있을 뿐입니다.

알렉세이 니콜라예프 :

1) 최대 면적을 갖는 집합의 꼭짓점이 같은 원 위에 있어야 한다는 사실을 증명하기 어렵다(Cramer의 정리). 나는 그것을 증명하는 방법이나 문서를 읽을 곳을 모릅니다.

그런 정리를 전혀 찾지 못하고 이 속성에 대한 언급만 했습니다.

항상 그렇듯이, 사례에 대한 단어가 아닌 쓸모없는 링크.

 
Andrei Trukhanovich :


항상 그렇듯이, 사례에 대한 단어가 아닌 쓸모없는 링크.

그것은 당신에게 정말 쓸모가 없습니다

 
Nikolai Semko :

1) 이것은 명백한 사실이라고 생각합니다. 그리고 주어진 꼭짓점 A, 정중선 h 및 주어진 대향 a를 갖는 삼각형의 최대 면적이 주어진 꼭짓점에서의 각도가 다음과 같을 때 이등변 삼각형의 면적이라는 이해를 통해 쉽게 증명 최고. 그리고 그러한 삼각형의 면적은 h * a / 2와 같습니다.

다각형의 주어진 변 사이의 모든 노드가 유연하고(자석의 어린이 생성자에서와 같이) 모든 정점이 공통 등거리 중심을 갖도록 변을 배열할 수 있다는 것이 분명하다고 상상해 보십시오(단, 가장 큰 변은 다른 변의 합보다 작습니다. 그렇지 않으면 연결되지 않습니다. 동그라미에 새겨져 있습니다. 그리고 이것은 최대 면적이 될 것입니다. 왜냐하면. 그것은 이등변 삼각형의 면적의 합으로 구성되며 한 변은 이 원의 반지름과 같습니다.

2) 나는 믿는다

3) MQL4 또는 MQL5에서 이러한 공식을 찾지 못했습니다.

1) 아마도 이것은 꼭짓점이 같은 원에 놓여있을 때 꼭짓점의 좌표에서 배수 영역의 변이(도함수)가 0과 같음의 형태로 어떻게든 형식화될 수 있습니다. 이것은 단지 국부적인 조건이며 우리는 이것이 1) 최대값이고 2) 전역적임을 증명해야 합니다.

3) 수학합()

 #include <Math\Stat\Math.mqh>
void OnStart ()
{
   double a[] = { 1.0 , 2.0 , 3.0 }, s;
  s = MathSum(a);
   Print ( "s=" , s);
}

s=6.0



 

다른 다항식의 근에서 다항식이 밝혀지고 이 모든 것에서 세 개의 도함수를 취합니다. 킬로미터 공식. 그리고 마지막에 놀라움이 있을지도 모릅니다. 일종의 트릭을 사용해야 합니다.

 
Andrei Trukhanovich :

직관적으로 그렇습니다. 그러나 엄격하지 않은 증명의 경우에도 이것은 스트레칭으로 당기지 않습니다.

만약 그렇다면, 그것은 발견될 수 있으며, 방정식 시스템만 있을 뿐입니다.

그런 정리를 전혀 찾지 못하고 이 속성에 대한 언급만 했습니다.

항상 그렇듯이, 사례에 대한 단어가 아닌 쓸모없는 링크.

"최대 면적 다각형이 주어진 측면"을 검색한 결과 "잘 알려진" 결과와 Nikolai가 제공한 유형의 수치 솔루션을 찾았습니다.

분명히 기하학에 관한 고대 책을 뒤져야 합니다. 이제 그들은 그런 것을 말하는 것을 좋아하지 않습니다.

 

위의 솔루션은 외접 원 중심이 둘레 내부에 있는 다각형에만 유효합니다. 삼각형 {2,2,3.9}를 사용해 보세요.

일반적으로(배정밀도 근사)는 다음과 같이 풀립니다.

 enum EEqual {LESS=- 1 ,EQUALY,MORE};
//-------------------------------------------------------
struct SRes{
   double s;
   double r;
   double degDelta;
   SRes(){ ZeroMemory ( this );}
   SRes( double _s, double _r, double _degDelta):s(_s),r(_r),degDelta(_degDelta){}
   SRes( const SRes &other) { this =other;}
   bool operator !() { return !s;}
};
//-------------------------------------------------------
const double _2PI= 2 * M_PI ;
//-------------------------------------------------------
EEqual Check( double &array[], int size){
   int ii= 0 ;
   double max= 0.0 ,
          tmp= 0.0 ,
          sum= 0.0 ;
   for ( int i= 0 ;i<size;++i){
       if (array[i]<= 0.0 ) return false ;
      max= MathMax (max,array[i]);
       if (max!=tmp){
         ii=i;
         tmp=max;}
      sum+=array[i];}
   EEqual ret=max<sum/ 2 ?MORE:LESS;
   if (ret==MORE){
      tmp=array[ii];
      array[ii]=array[--size];
      array[size]=tmp;}
   return ret;}
//---------------------------------------------------
SRes ComputeCenterOut( const double &array[], double deg){
   int size= ArraySize (array)- 1 ;
   double r=array[size]/ 2.0 / sin ((deg- M_PI )/ 2.0 );
   double sum= 0.0 ,
          square=-r* cos (deg/ 2.0 )*array[size]/ 2.0 ;
   for ( int i= 0 ;i<size;++i){
       double _deg= 2.0 * MathArcsin (array[i]/ 2.0 /r);
      sum+=_deg;
      square+=r* cos (_deg/ 2.0 )*array[i];}
   return SRes(square,r,deg-M_PI-sum);
}
//---------------------------------------------------
SRes ComputeCenterIn( const double &array[], double deg){
   int size= ArraySize (array)- 1 ;
   double r=array[size]/ 2.0 / sin (deg/ 2.0 );
   double sum=deg,
          square=r* cos (deg/ 2.0 )*array[size]/ 2.0 ;
   for ( int i= 0 ;i<size;++i){
       double _deg= 2.0 * MathArcsin (array[i]/ 2.0 /r);
      sum+=_deg;
      square+=r* cos (_deg/ 2.0 )*array[i]/ 2.0 ;}
   return SRes(square,r,_2PI-sum);
}
//---------------------------------------------------
SRes ComputeSquare( const double &array[], double min, double max,SRes &prev){
   double a=(min+max)/ 2.0 ;
   if (a==min||a==max) return prev;
   SRes res=a> M_PI ?ComputeCenterOut(array,a):ComputeCenterIn(array,a);
   if (res.degDelta== 0.0 ||res.s==prev.s) return res;
   if (res.degDelta> 0.0 ) min=a;
   else max=a;
   return ComputeSquare(array,min,max,res);}
//---------------------------------------------------
SRes Square( const double &in[]){
   double tmp[];
   int size= ArrayCopy (tmp,in);
   if (Check(tmp,size)!=MORE) return SRes();
   double aMax=_2PI,
          a=aMax/size;
   return ComputeSquare(tmp,a,aMax,SRes());
}

void OnStart ( void )
{
   double arr[]={ 2 , 3.9 , 2 };
   ulong time= GetMicrosecondCount ();
   SRes res=Square(arr);
   time= GetMicrosecondCount ()-time;
   if (!res) Print ( "Многоугольника с заданными сторонами не существует" );
   else PrintFormat ( "Time=%lli %ss\n"
                     "Square=%f\n"
                     "Radii=%f" ,time, "\xB5" ,res.s,res.r);
}
 
Vladimir Simakov :

위의 솔루션은 외접 원 중심이 둘레 내부에 있는 다각형에만 유효합니다. 삼각형 {2,2,3.9}를 사용해 보세요.

...

주어진 측면 크기에 대해 최대 면적의 다각형을 찾는 작업이 삼각형과 관련이 있는 경우 삼각형은 무엇과 관련이 있습니까?

 

죄송합니다. 나 자신은 올바르게 고려하는 옵션 중 하나만 가지고 있습니다)))

UPD: 수정됨

 
Dmitry Fedoseev :

다른 다항식의 근에서 다항식이 밝혀지고 이 모든 것에서 세 개의 도함수를 취합니다. 킬로미터 공식. 그리고 마지막에 놀라움이 있을지도 모릅니다. 일종의 트릭을 사용해야 합니다.

여기에 모든 각도 대 반지름의 합 함수가 있습니다. 솔루션 영역 2pi는 녹색으로 강조 표시됩니다.

도움이 될 수 있습니다.
나는 특히 타워에서 강하지 않기 때문에 어떻게든 내 두뇌를 긴장시키기에는 너무 게으르다.

파일:
Zadacha2.mq5  4 kb