Beyni ticaretle ilgili bir şekilde eğitmek için görevler. Theorver, oyun teorisi vb. - sayfa 22

 
new-rena :
Normalde uyuyor. Kodu zaten gönderdim. Şimdi doğru cevaba podshaman yapacağım ve hepsi bu

Sonucu paylaşır mısınız?... :-)
 
new-rena :
Merak ediyorum - neye benziyor - geometrik bir ilerlemede sinüs dalgası değil mi?
 
avtomat :

Pekala, çok iyi. Onlar. sonraki her adımın - piplerdeki her adımın çok fazla açılmasının bir trendin tersine çevrilmesine daha da yaklaştığını söylüyoruz, bu yüzden siparişin boyutunu daha fazla artırmayacağız, ancak her ihtimale karşı açacağız, aniden bir şeyler yanlış olur) ))
 

Renat , peki neye ihtiyacın var - denklemi çöz ya da başka bir şey?

eğer denklem

MiniLot^(x^0)+MiniLot^(x^1)+MiniLot^(x^2) ... + MiniLot^(x^(N-1))=VolMax

x için karar vermelisin, o zaman buğulanmış şalgamdan daha kolay - Newton'un yöntemi veya sekants. Ancak MiniLot, VolMax ve N'yi ayarlamanız gerekir.

 
new-rena :
Pekala, çok iyi. Onlar. sonraki her adımın - piplerdeki her adımın çok fazla açılmasının bir trendin tersine çevrilmesine daha da yaklaştığını söylüyoruz, bu yüzden siparişin boyutunu daha fazla artırmayacağız, ancak her ihtimale karşı açacağız, aniden bir şeyler yanlış olur) ))

Şey, bilmiyorum .... Ben sadece bir problem çözüyordum ... ama geri dönüşlerden, trendlerden ve diğer zevklerden söz edilmedi.

Evet, bu konuda kendi düşüncelerim var.

 
Mathemat :
Renat , peki neye ihtiyacın var - denklemi çöz ya da başka bir şey?

Şimdi çözümünü bir formül şeklinde yazmak istiyorum. Ben zaten formülü türetiyorum.

Çok teşekkürler

 
new-rena : Şimdi onun çözümünü formül olarak yazmak istiyorum. Ben zaten formülü türetiyorum.
Formülü çıkaramazsın, kanser olursun. Yaklaşık olarak çözen bir fonksiyon yazılabilir. Ama bu, tabii ki x'e karar vermeniz gerekiyorsa.
 
Mathemat :
Formülü çıkaramazsın, kanser olursun. Yaklaşık olarak çözen bir fonksiyon yazılabilir. Ama bu, tabii ki x'e karar vermeniz gerekiyorsa.
akım gerçekten işe yaradı mı
 
new-rena : Bitti, akım gerçekten bir işlevdir

Göster bana.

PS My Moscow, böyle garip, yabancı bir görevi çözmeyi reddediyor. Birinci türevin monotonluğu gözlenmez. Bu da, x denklemini sekant/Newton yöntemini kullanarak kolayca ve basit bir şekilde çözmeyi zorlaştırır. Künt numaralandırma ile (yüksek düzeyde optimize edilmiş) ve oldukça hızlı bir şekilde çözülmesine rağmen.

Şimdi, iki katlı bir güce yükseltme değil, sadece çarpma olsaydı, her şey daha kolay ve net olurdu.

İşte en aptal algoritma. Ancak, hızlı bir şekilde sayar. 10^(-8) doğruluk elde etmek için yaklaşık 50 yineleme yeterlidir.

Yeni başlayanlar için - önceki sayfadan avtomat 'a'nın bir resmi.

Ve şimdi - benim (parametreler aynı):

Ve kod:

 #property show_inputs

extern double _MiniLot = 0.01 ;
extern double _N = 77 ;
extern double _VolMax = 5.96 ;
extern double _err = 0.0000000001 ;
extern double _parts = 7 ;


double resolve( double err, int & count )
{
   double currErr = 10 ;
   double xLeft = 0.00000001 ;
   double xRight;
   double valLeft, valRight;
   double step = _VolMax / _parts;
   count = 0 ;
   while ( step > err )
   {
      count ++;
      xRight = xLeft + step;
      valLeft = funct( xLeft );
      valRight = funct( xRight );
       if ( valLeft * valRight > 0 )     
      { 
         xLeft += step; 
         continue ; 
      }
       else                              step /= _parts;
   }
   return ( xLeft );
} //+------------------------------------------------------------------+


       double funct( double x )
      {
         double sum = 0 ;
         for ( int i = 0 ; i < _N; i ++ )
         {
             double xPowered = MathPow ( x, i );
            sum += MathPow ( _MiniLot, xPowered );
         }   
         return ( sum - _VolMax );
      } //+------------------------------------------------------------------+




int start( )
{
   int st = GetTickCount ( );
   int count;
   double x = resolve( _err, count );
   double gone = ( GetTickCount ( ) - st ) / 1000 .;
   Print ( "Root is x = " + x + "; funct is f = " + funct( x ) + "; gone " + gone + " sec.; count = " + count  + " steps" );
   return ( 0 );
} //+------------------------------------------------------------------+

Not: Bu algoritmanın yalnızca bu işlev için çalıştığını hatırlamakta fayda var. Monotondur ve bu nedenle tek bir kökü vardır. Ne yazık ki, birinci türevin monoton olmaması, tanjant yöntemini uygulamamıza izin vermiyor. Doğru, kayıp hiç hissedilmez: GetTickCount() kullanılarak alınan hesaplama süresi algılanmaz bile.

 

çözüme bir ek daha var

bu tamlık uğruna;)