[Matematica pura, fisica, chimica, ecc.: problemi di allenamento del cervello non legati in alcun modo al commercio - pagina 538

 

Chiaramente, non ci sarà quasi sempre una soluzione esatta, poiché il numero di equazioni sarà maggiore del numero di incognite.

Beh, è a questo che serve il MOC. E il problema nella formulazione di Yusuf è esattamente questo metodo: tracciare una linea attraverso una nuvola di punti, e in modo ottimale dal punto di vista del MNA. Non parla solo di equazioni normali.

 
Capisco.
 
Neutron:

Allora qual è la soluzione a questo schema?


È ovvio.
 
Solo che le condizioni del problema non dicono che ognuno ha solo sei conoscenti:) Forse qualcosa del genere: (X-1)^6 = Tutta la popolazione del globo. x è il numero di conoscenti che ogni persona ha. Un valore molto reale dovrebbe essere X.
 

qualcuno sa dove trovare una soluzione generale dell'equazione?

x^0+x^1+x^2+x^3+.........x^n=A

^ è un segno di potenza ;A è una costante

 

Niente da fare, solo metodi numerici. Si può semplificare sommando la progressione geom:

( x^(n+1) - 1 ) / ( x - 1 ) = A

Dato un intervallo specifico di A, cerchiamo di risolvere l'approssimazione con una precisione accettabile.

E con quale precisione dovreste trovare x, e in quale intervallo è n?

Inoltre: x è sperabilmente positivo?

P.S. Se A, x > 0, è facile stimare x dal basso:

x = ( x^(n+1) + A - 1 ) / A > 1 - 1 / A

E poi iterare (disegnare un grafico delle funzioni y=x^(n+1)-1 e y=A(x-1) per vedere):

x(0) = 1 - 1 / A

x(k+1) = ( x(k)^(n+1) - 1 + A ) / A

Controllare a n = 10, A = 5:

x(0)=0,8, e la dodicesima iterazione dà come risultato un numero di 0,823679 al più vicino 0,000001.

Un controllo mostra che il lato sinistro dell'uguaglianza differisce dal lato destro di 0,000005.

 
Mathemat:

Niente da fare, solo metodi numerici. Si può semplificare sommando la progressione geom:

( x^(n+1) - 1 ) / ( x - 1 ) = A

Datemi un intervallo specifico A, e cercheremo di risolverlo in modo approssimativo, con una precisione accettabile.

E con quale precisione dovrei trovare x e in quale intervallo è n?

Inoltre: x - speriamo positivo?


Sì, x è positivo. Ho passato mezza giornata a pensare come risolverlo...- togliere X per alleggerire un po' l'EA dai cicli)))

Nel mio EA, ho predisposto una soluzione con un certo errore nel risultato. Come gli incrementi consecutivi.

Quindi, non c'è altro modo... Non voglio rompere le scatole ora, grazie).

 
Ho finito il post, c'è una soluzione iterativa. Se scrivete una funzione, essa conterà rapidamente.
 
jelizavettka:


Sì, x è positivo. Ho passato mezza giornata a pensare a come risolverlo...- a far uscire X per alleggerire un po' l'Expert Advisor dai cicli)))

Ho organizzato nell'EA la selezione di una soluzione con un certo margine di errore nel risultato. Come gli incrementi consecutivi...

Quindi non c'è altro modo... ora non sarò più perplesso, grazie).


Mostrami.

Ecco la mia variante:

int start(){

   int n=12; // максимальная степень
   double A=125879;

   double x;
   int k;
   
   Alert("Начало: A="+DoubleToStr(A,8));
   
      if(Function(n,A,x,k)){
         Alert("x="+DoubleToStr(x,8)+". Проверка: A="+DoubleToStr(Formula(x,n),8)+". Итераций: "+k);
      }
      else{
         Alert("Переполнение");
      }
  
   return(0);
   
}


bool Function(int n,double A,double & x,int & k){
   double inf=MathPow(10,309);
   x=0;       
   double Step=10; // Начальный шаг, стоит поэкспериментировать со значением
   k=0;
      while(true){
         k++;
         double val=Formula(x,n);
            if(val>A || val==inf){
               x-=Step;
               Step/=2;
                  if(Step<0.000000000000001){ // 0.000000000000001 - определяет точность, увеличивать можно (снижать точность), уменьшать некуда
                     if(val==inf){
                        return(false);
                     }
                     else{
                        return(true);
                     }
                  }
            }
         x+=Step;               
      }  
}

double Formula(double x,int n){
   // x^0+x^1+x^2+x^3+.........x^n=A
   double sum=1+x;
      for(int i=2;i<=n;i++){
         sum+=MathPow(x,i);
      }
   return(sum);
}
 
Integer:


Mostrami.

Ecco la mia variante:

Non so molto dei codici degli altri, ma...
Ho qualcosa di simile...

Il passo dell'incognita viene impostato per primo, e quando il risultato passa sopra A, la parte dell'intervallo del passo con il passo decrementato.... viene presa come A.

La precisione è definita come la % di deviazione del valore risultante "A" dal valore impostato.

Se la precisione specificata non viene raggiunta, il passo viene ridotto...

Ho tutto in ebraico e non così bello))

Motivazione: