[Archivo] Matemáticas puras, física, química, etc.: problemas de entrenamiento cerebral no relacionados con el comercio de ninguna manera - página 538

 

Evidentemente, casi siempre no habrá una solución exacta, ya que el número de ecuaciones será mayor que el número de incógnitas.

Bueno, para eso está el MOC. Y el problema en la formulación de Yusuf es exactamente este método: dibujar una línea recta a través de alguna nube de puntos, y de forma óptima desde el punto de vista del MNA. No sólo habla de ecuaciones normales.

 
Ya veo.
 
Neutron:

Entonces, ¿cuál es la solución a este esquema?


Es evidente.
 
Salvo que las condiciones del problema no dicen que todo el mundo tenga sólo seis conocidos:) Quizás algo así: (X-1)^6 = Toda la población del globo. x es el número de conocidos que tiene cada persona. Un valor muy real debería ser X.
 

¿alguien sabe dónde encontrar una solución general a la ecuación?

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

^ es un signo de potencia ;A es una constante

 

De ninguna manera, sólo métodos numéricos. Se puede simplificar sumando la progresión geométrica:

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

Dando un rango específico de A, tratemos de resolver la aproximación con una precisión aceptable.

¿Y con qué precisión hay que encontrar x, y en qué rango está n?

Además: ¿X es esperanzadoramente positivo?

P.D. Si A, x > 0, es fácil estimar x desde abajo:

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

Y luego iterar (dibujar una gráfica de las funciones y=x^(n+1)-1 e y=A(x-1) para ver):

x(0) = 1 - 1 / A

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

Comprueba en n = 10, A = 5:

x(0)=0,8, y la duodécima iteración da como resultado un número de 0,823679 con una precisión de 0,000001.

Una comprobación muestra que el lado izquierdo de la igualdad difiere del lado derecho en 0,000005.

 
Mathemat:

De ninguna manera, sólo métodos numéricos. Se puede simplificar sumando la progresión geométrica:

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

Dame un rango específico A, y trataremos de resolverlo de forma aproximada, con una precisión aceptable.

¿Y con qué precisión debo encontrar x y en qué rango está n?

También: x - ¿espero que sea positivo?


Sí, x es positivo. Me pasé medio día pensando cómo solucionarlo...- sacar X para aliviar un poco el EA de los ciclos)))

En mi EA, he dispuesto una solución con un cierto error en el resultado. Como incrementos consecutivos.

Así que, no hay otra manera... No voy a desconcertarme ahora, gracias).

 
He terminado el post, hay una solución iterativa. Si escribes una función, contará rápidamente.
 
jelizavettka:


Sí, x es positivo. Me pasé medio día pensando cómo solucionarlo...- para dar salida a X y así aliviar un poco al Asesor Experto de los ciclos)))

He organizado en el EA la selección de una solución con un cierto margen de error en el resultado. Como incrementos consecutivos...

Así que no hay otra forma... ahora no me desconcertará, gracias).


Muéstrame.

Esta es mi 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:


Muéstrame.

Esta es mi variante:

No sé mucho sobre los códigos de otras personas, pero...
Tengo algo similar...

El paso de la incógnita se fija primero, y cuando el resultado pasa por encima de A, se toma como A la parte del rango de la pasada con el paso disminuido.....

La precisión se define como el % de desviación del valor resultante "A" con respecto al valor establecido.

Si no se alcanza la precisión especificada, el paso se reduce...

Lo tengo todo en hebreo y no tan bonito))