[存档!]纯数学、物理学、化学等:与贸易没有任何关系的大脑训练问题 - 页 538

 

显然,几乎总是没有精确的解决方案,因为方程的数量将大于未知数的数量。

嗯,这就是MOC的作用。而优素福的 表述中的问题正是这种方法:通过一些云状的点画一条直线,并且从MNA的角度来看是最佳的。他并不只是谈论正常的方程式。

 
我明白了。
 
Neutron:

那么,这个计划的解决方案是什么呢?


这很明显。
 
除了问题的条件没有说每个人只有六个熟人:)也许像这样:(X-1)^6=全球所有人口。x是每个人拥有的熟人数量。一个非常真实的价值应该是X。
 

有没有人知道在哪里可以找到方程的一般解?

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

^是一个幂符号;A是一个常数

 

不可能,只有数字方法。你可以通过对几何图形的累加来简化。

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

给出A的具体范围,让我们试着以可接受的精度解决近似问题。

那么你应该以什么样的精度来寻找x,n又在什么范围内?

还有:X是希望是正数?

P.S. 如果A,x>0,很容易从下面估计x。

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

然后进行迭代(画出函数y=x^(n+1)-1和y=A(x-1)的图来看看)。

x(0) = 1 - 1 / A

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

在n=10时检查,A=5。

x(0)=0.8,第12次迭代的结果是0.823679,最接近0.000001的数字。

检查表明,等式的左边与右边相差0.000005。

 
Mathemat:

不可能,只有数字方法。你可以通过对几何图形的累加来简化。

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

给我一个具体的范围A,我们会试着在可接受的精度下近似地解决它。

那么我应该以什么样的精度来寻找x,n在什么范围内?

还有:X--希望是积极的?


是的,X是正数。 我花了半天时间思考如何解决这个问题......--拿出X来,把EA从周期中解脱出来一点))))。

在我的EA中,我安排了一个在结果中存在一定错误的解决方案。像连续的增量。

所以,没有其他办法......我现在不会再为之困惑,谢谢)。

 
我完成了这个帖子,有一个迭代的解决方案。如果你写了一个函数,它就会迅速计数。
 
jelizavettka:


是的,X是正数。 我花了半天时间思考如何解决这个问题......--输出X,以便将专家顾问从周期中解脱出来,有点)))。

我在EA中组织了一个解决方案的选择,其结果有一定的误差范围。像连续的增量...

所以没有别的办法......现在我不会再困惑了,谢谢你)。


给我看看。

这里是我的变体。

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:


给我看看。

这里是我的变体。

我不太了解其他人的代码,但...
我也有类似的东西...

首先设定未知数的步长,当结果通过A时,将减去步长的那部分通过范围....,作为A。

准确度被定义为结果值 "A "与设定值的偏差百分比。

如果没有达到指定的精度,则减少步骤...

我都是用希伯来语写的,不那么漂亮))。