[Архив!] Чистая математика, физика, химия и т.п.: задачки для тренировки мозгов, никак не связанные с торговлей - страница 538

 

Понятно, что точного решения почти всегда не будет, т.к. число уравнений будет больше числа неизвестных.

Дык для того МНК и существует. И задача в постановке Юсуфа как раз этот метод и предполагает: провести прямую через некоторое облако точек, причем оптимально с точки зрения МНК. Он же не просто так о нормальных уравнениях говорит.

 
Ясно.
 
Neutron:

Так и что с решением по данной схеме?


Оно очевидно.
 
Вот только в условиях задачи не стоит, что знакомых у каждого только шесть:) Может что-то типа такого: (Х-1)^6 = Все население земного шарика. x - количество знакомых у каждого. Вполне реальное значение должно быть у Х.
 

может кто знает, где найти общее решение уравнения?

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

^ -знак степени ;А-константа

 

Никак, только численные методы. Можно упростить, если просуммировать геом. прогрессию:

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

Давай конкретный диапазон А, попробуем решить приближенно, с приемлемой точностью.

И с какой точностью надо найти х, а также в каком диапазоне находится n?

Еще: х - надеюсь, положительные?

P.S. Если А, х > 0, то легко оценить х снизу:

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

А дальше - итерации (нарисуй график функций y=x^(n+1)-1 и y=А(х-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

Давай конкретный диапазон А, попробуем решить приближенно, с приемлемой точностью.

И с какой точностью надо найти х, а также в каком диапазоне находится n?

Еще: х - надеюсь, положительные?


Да, х положительные. Я полдня думала как решить...- вывести Х, чтобы советник разгрузить немного от циклов)))

Я в советнике организовала подбор решения с определенной погрешностью результата. Типа последовательных приращений..

Значит, по-друому никак.. теперь точно не буду голову ломать, спасибо). вопрос исчерпан.

 
Я пост дописал, там решение итерациями. Если функцию написать, она будет считать быстро.
 
jelizavettka:


Да, х положительные. Я полдня думала как решить...- вывести Х, чтобы советник разгрузить немного от циклов)))

Я в советнике организовала подбор решения с определенной погрешностью результата. Типа последовательных приращений..

Значит, по-друому никак.. теперь точно не буду голову ломать, спасибо). вопрос исчерпан.


Покажи.

Вот мой вариант:

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:


Покажи.

Вот мой вариант:

плохо разбираюсь в чужих кодах,но
У меня что -то похожее..

Задается сначала шаг неизвестной, при перевале результата за за А берется участок диапазона перевала с умельченным шагом....

А точность - у меня определяется как % отклонения получившегося значения "А" от заданного.

При недостижении указанной точности шаг умельчается...

У меня все по-еврейски и не так красиво))

Причина обращения: