Isınmak ve zaman ayırmak için okul sorunu - sayfa 5

 
Aleksey Nikolayev :

1) Alanı maksimum olan bir kümenin köşelerinin aynı çember üzerinde olması gerektiğini kanıtlamanın zorluğu (Cramer teoremi). Bunu nasıl kanıtlayacağımı veya belgeleri nerede okuyacağımı bilmiyorum.

2) Bir dairenin maksimum alanı veya yarıçapı için analitik bir formülün varlığına gerçekten inanmıyorum.

3) Dizi öğelerinin toplamı MathSum() işlevi kullanılarak hesaplanabilir.

1) Bunun bariz bir gerçek olduğunu düşünüyorum. Ve verilen bir A köşesine, bir orta çizgiye h ve belirli bir karşı kenarı a olan bir üçgenin maksimum alanının, belirli bir tepe noktasındaki açı olduğunda bir ikizkenar üçgenin alanı olduğu anlayışıyla kanıtlamak kolaydır. maksimum. Ve böyle bir üçgenin alanı h * a / 2'ye eşittir

Çokgenlerin verilen kenarları arasındaki tüm düğümlerin esnek olduğunu (mıknatıslar üzerinde bir çocuk yapıcısında olduğu gibi) ve kenarların, tüm köşelerin ortak bir eşit uzaklık merkezine sahip olacağı şekilde düzenlenebileceğini hayal edin. en büyük kenar, diğer kenarların toplamından küçüktür, aksi takdirde birleşmezler), yani. daire içine yazılmıştır. Ve bu maksimum alan olacaktır, çünkü. bir kenarı bu dairenin yarıçapına eşit olan ikizkenar üçgenlerin alanlarının toplamından oluşur.

2) inanıyorum

3) MQL4 veya MQL5'te böyle bir formül bulamadım

 
Nikolai Semko :

1) Bunun bariz bir gerçek olduğunu düşünüyorum.

sezgisel olarak, evet, ancak kesin olmayan bir kanıt için bile, bu herhangi bir uzatma ile çekmez.

2) inanıyorum

öyle olsaydı, bulunabilirdi, sadece bir denklem sistemi var

Aleksey Nikolaev :

1) Alanı maksimum olan bir kümenin köşelerinin aynı çember üzerinde olması gerektiğini kanıtlamanın zorluğu (Cramer teoremi). Bunu nasıl kanıtlayacağımı veya belgeleri nerede okuyacağımı bilmiyorum.

hiç böyle bir teorem bulamadı, sadece bu özellikten bahsetti.

her zaman olduğu gibi, işe yaramaz bağlantılar ve dava hakkında bir kelime değil.

 
Andrei Trukhanovich :


her zaman olduğu gibi, işe yaramaz bağlantılar ve dava hakkında bir kelime değil.

senin için gerçekten işe yaramaz

 
Nikolai Semko :

1) Bunun bariz bir gerçek olduğunu düşünüyorum. Ve verilen bir A köşesine, bir orta çizgiye h ve belirli bir karşı kenarı a olan bir üçgenin maksimum alanının, belirli bir tepe noktasındaki açı olduğunda bir ikizkenar üçgenin alanı olduğu anlayışıyla kanıtlamak kolaydır. maksimum. Ve böyle bir üçgenin alanı h * a / 2'ye eşittir

Çokgenlerin verilen kenarları arasındaki tüm düğümlerin esnek olduğunu (mıknatıslar üzerinde bir çocuk yapıcısında olduğu gibi) ve kenarların, tüm köşelerin ortak bir eşit uzaklık merkezine sahip olacağı şekilde düzenlenebileceğini hayal edin. en büyük kenar, diğer kenarların toplamından küçüktür, aksi takdirde birleşmezler), yani. daire içine yazılmıştır. Ve bu maksimum alan olacaktır, çünkü. bir kenarı bu dairenin yarıçapına eşit olan ikizkenar üçgenlerin alanlarının toplamından oluşur.

2) inanıyorum

3) MQL4 veya MQL5'te böyle bir formül bulamadım

1) Muhtemelen, bu bir şekilde, aynı daire üzerinde uzandıklarında köşelerin koordinatları açısından kat alanının varyasyonunun (türevinin) sıfıra eşitlik şeklinde resmileştirilebilir. Sadece bu bir yerel ekstremite durumudur ve 1) bunun bir maksimum olduğunu ve 2) global olduğunu kanıtlamamız gerekiyor.

3) Matematik Toplamı()

 #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



 

Diğer polinomların köklerinden bir polinom çıkıyor ve tüm bu kanolardan üç türev alıyor. Kilometre formülleri. Ve kim bilir, sonunda bir sürpriz olabilir. Bir çeşit hile kullanmalısın.

 
Andrei Trukhanovich :

sezgisel olarak, evet, ancak kesin olmayan bir kanıt için bile, bu herhangi bir uzatma ile çekmez.

öyle olsaydı, bulunabilirdi, sadece bir denklem sistemi var

hiç böyle bir teorem bulamadı, sadece bu özellikten bahsetti.

her zaman olduğu gibi, işe yaramaz bağlantılar ve dava hakkında bir kelime değil.

googled "kenarlara verilen maksimum alan poligonu", sadece bu sonucu "iyi biliniyor") ve Nikolai tarafından verilen türün sayısal çözümleri.

Görünüşe göre, geometri üzerine bazı eski kitapları karıştırmanız gerekiyor - şimdi böyle şeyleri ifade etmekten hoşlanmıyorlar.

 

Yukarıdaki çözüm, yalnızca çevrelenmiş daire merkezi çevrenin içinde yer alan çokgenler için geçerlidir. {2,2,3.9} üçgenini deneyin

Genel anlamda (çift kesinlikte yaklaşıklık) aşağıdaki gibi çözülür:

 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 :

Yukarıdaki çözüm, yalnızca çevrelenmiş daire merkezi çevrenin içinde yer alan çokgenler için geçerlidir. {2,2,3.9} üçgenini deneyin

...

Ve görev, verilen kenar boyutları için maksimum alana sahip bir çokgen bulmaksa, üçgenin bununla ne ilgisi var?

 

Hata. Ben kendim doğru olarak değerlendirdiğim seçeneklerden sadece birine sahibim)))

UPD: Düzeltildi

 
Dmitry Fedoseev :

Diğer polinomların köklerinden bir polinom çıkıyor ve tüm bu kanolardan üç türev alıyor. Kilometre formülleri. Ve kim bilir, sonunda bir sürpriz olabilir. Bir çeşit hile kullanmalısın.

burada yarıçapa karşı tüm açıların toplamının bir fonksiyonudur. Çözüm alanı 2pi yeşil renkle vurgulanmıştır.

yardımcı olabilir.
Özellikle kulede güçlü olmadığım için beynimi zorlayacak kadar tembelim.

Dosyalar:
Zadacha2.mq5  4 kb
Neden: