Re[2]: Человек и паучок: финальный топик с программой.
От: Аноним  
Дата: 09.08.07 18:32
Оценка:
Здравствуйте, vadimcher, Вы писали:

V>Здравствуйте, SlaVVVa, Вы писали:


SVV>>Легенда. Задача якобы задавалась на съезде академиков. И Сахаров решил ее за 5 минут на бумажной салфетке.


SVV>>Условие. Есть резинка растягивающаяся до бесконечности и по всей длинне равномерно длинной 1 метр. Один конец прикреплен к стене и на нем сидит паучок, другой держит в руках человек. Человек начинает двигаться от стены со скоростью 1 м/с — ондновременно с ним начинает двигаться паучок по резинке паучок со скоростью 0.10 м/с.

SVV>>Вопрос: догонит ли паучок человека, и если догонит, то за какое время?

SVV>>Логически:

SVV>>Человек движеться равномерно. Паучок с ускорением т.к. к его пройденному пути прибавляется растяжение нити и чем больше он прополз, тем больше это приращение. Отсуда следует что обязательно догонит. А вот как высчитать время?

V>Кажется до меня дошло, в чем суть разногласий, и откуда берутся другие результаты (полученные программным путем). Во всем виноваты растяжение и бесконечно малые.


V>Сначала теория, потом программа и тесты.


V>Итак, как я сказал до этого, паук, находясь в точке x за следующие dt секунд пробежит ds=.1dt метров. В моем подходе то, что та точка, с которой он стартовал, тоже за это время уедет, неважно, так как я измеряю все относительно резинки. Тем не менее остается вопрос о том, что то расстояние, которое должен пробежать за это время паук, тоже растянется. Весь вопрос в том, "задними или передними лапками" он цепляется за резинку. Действительно, пока он бежит свои ds, это самое ds также растянется. На сколько -- это вопрос того, на сколько резинка уже растянута, однако я берусь показать, что даже если паук "цепляется передними лапками" и, как следствие, пробегает растянутые ds, это дает лишь поправку второго порядка, которая на ответ не влияет.


V>Итак, если к моменту t резинка растянута до 1+t, то через dt она станет длиной 1+t+dt. Т.е. растянется в coef=(1+dt/(1+t)) раз. Далее, паук за это время пробегает ds, которые растягиваются в coef раз. Если он бежит "на задних лапах", то пробежит по резинке ds, "на пережних" -- ds*coef. Это можно понимать и так: либо мы растягиваем сначала резинку, а затем он бежит по ней ds, либо он сначала бежит ds, а мы затем растягиваем ее, т.е. получается, что он пробежал растянутые ds, т.е. ds*coef. На практике оба процесса в течении dt происходят одновременно, поэтому он пробежит сколько-то между ds и ds*coef. В своей программе я ввел alpha, которое учитывает в какой степени надо принимать растяжение, пока он бежит ds: alpha=0 -- не надо, т.е. пробежит ds, alpha=1 -- надо "по полной", т.е. пробежит ds*coef, промежуточные значения также допустимы.


V>Самое интересное, что с точки зрения теории нам учет растяжения расстояния ds ничего не дает! Дейтсивтельно, скорость будет определяться как ds*coef/dt = .1*(1+dt/(1+t)). Т.е. в силу того, что поправка на растяжение добавляет максимум ds*dt/(1+t) к расстоянию ds, т.е. величину заведомо меньшего порядка малости, такая поправка не влияет на величину мгновенной скорости в этой точке.


V>ОДНАКО, при написании программы, ошибкой было бы положить dt заданной какой-то, пусть малой, но все же конечной величиной, ибо здесь уже бесконечно малые второго порядка начинают играть свою роль.


V>Итак, программа написана, текст ее в самом конце, я ее запущу несколько раз: c alpha=0 (т.е. без учета растяжения ds) и различными dt, а также с alpha=1 (с полным учетом растяжения) и различными dt. ПРОГРАММА НАПИСАНА С ОБЫЧНЫМ ПОДХОДОМ, А НЕ С МОИМ ТЕОРЕТИЧЕСКИМ, Т.Е. НЕ В МЕТРАХ НЕРАСТЯНУТОЙ РЕЗИНКИ, А В ОБЫЧНОЙ СИСТЕМЕ КООРДИНАТ, С ТЕМ, ЧТОБЫ СТОРОННИКИ ПРОСТОГО ПРОГРАММНОГО ПОДХОДА МОГЛИ УБЕДИТЬСЯ, ЧТО НИКАКИХ "ТЕОРЕТИЧЕСКИХ ТРЮКОВ" ЗДЕСЬ НЕТ.


V>Результаты:

V>
V>alpha = 0
V>dt = 1
V>Man: 2  Bug: 0.1
V>Man: 3  Bug: 0.25
V>Man: 4  Bug: 0.433333
V>Caught at manx = 33617, bugx = 33617.1 after 33616 secs
V>dt = 0.1
V>Man: 1.1        Bug: 0.01
V>Man: 1.2        Bug: 0.0209091
V>Man: 1.3        Bug: 0.0326515
V>Caught at manx = 23136.5, bugx = 23136.5 after 23135.5 secs
V>dt = 0.01
V>Man: 1.01       Bug: 0.001
V>Man: 1.02       Bug: 0.0020099
V>Man: 1.03       Bug: 0.00302961
V>Caught at manx = 22136.7, bugx = 22136.7 after 22135.7 secs
V>dt = 0.001
V>Man: 1.001      Bug: 0.0001
V>Man: 1.002      Bug: 0.0002001
V>Man: 1.003      Bug: 0.0003003
V>Caught at manx = 22037.5, bugx = 22037.5 after 22036.5 secs
V>alpha = 1
V>dt = 1
V>Man: 2  Bug: 0.2
V>Man: 3  Bug: 0.45
V>Man: 4  Bug: 0.733333
V>Caught at manx = 12368, bugx = 12368.1 after 12367 secs
V>dt = 0.1
V>Man: 1.1        Bug: 0.011
V>Man: 1.2        Bug: 0.0229091
V>Man: 1.3        Bug: 0.0356515
V>Caught at manx = 20934.9, bugx = 20934.9 after 20933.9 secs
V>dt = 0.01
V>Man: 1.01       Bug: 0.00101
V>Man: 1.02       Bug: 0.0020299
V>Man: 1.03       Bug: 0.00305961
V>Caught at manx = 21916.4, bugx = 21916.4 after 21915.4 secs
V>dt = 0.001
V>Man: 1.001      Bug: 0.0001001
V>Man: 1.002      Bug: 0.0002003
V>Man: 1.003      Bug: 0.0003006
V>Caught at manx = 22015.5, bugx = 22015.5 after 22014.5 secs
V>


V>Разумеется, при полном учете растяжения при конечных dt время получается меньше, так как величины второго порядка играют роль. Однако при уменьшении dt все сходится куда надо.


V>codelord: Обратите также внимание на Ваш "результат" 12367 секунд, когда я принял во внимание растяжение ds по полной (alpha=1) и положил dt=1! Думаю, это ключ. Прочитайте еще раз мой теоретический подход в другом сообщении и подумайте немного. Там все правильно.


V>Программа:

V>
V>#include <iostream>
V>using namespace std;

V>// The state of the World!
V>struct CState {
V>    double rubberlen;
V>    double bugx;

V>    double manspeed;
V>    double bugspeed;

V>    double rubberlen0;

V>    CState(): rubberlen(1.), bugx(0.), manspeed(1.), bugspeed(.1), rubberlen0(rubberlen) { }
V>    Reset() { rubberlen = rubberlen0; bugx = 0.; }
V>};

V>// calculates a new state of the world based on the current state cur,
V>// alpha, which is the coefficient of the influence of rubber stretching,
V>// and dt -- small time period,

V>// alpha=0 -- take into account bug's speed only + the movement of the initial position
V>// alpha=1 -- take into account the movement of the final position as well

V>// Returns 1 if the man was caught, o/w returns 0

V>// Before: bugx=1., rubberlen = 2., dt = .01
V>// After: new rubber length = 2. + 1. * .01 = 2.01, stretch coefficient = 2.01/2. = 1.005,
V>//        the distance the bug made: ds = .1 * .01 = .001,
V>//        the movement of the start position (due to stretch): from bugx=1. to 1. * 1.005 = 1.005,
V>//        the movement of the final position (due to stretch): from bugx+ds=1.001 to 1.001 * 1.005 = 1.006005,
V>//        if alpha = 0., then new position = start position + ds = 1.005 + .001 = 1.006,
V>//        if alpha = 1., then new position = final position = 1.006005
V>//        if alpha between 0 and 1, then new position is calculated as an weighted sum of those two above
V>int move(CState & cur, double alpha, double dt) {
V>    double ds = cur.bugspeed * dt;
V>    double coef = 1 + cur.manspeed * dt / cur.rubberlen;
V>    double startx = cur.bugx * coef; // where is the start due to stretching
V>    double finishx = (cur.bugx + ds) * coef; // where is the finish due to stretching
V>    double x0 = startx + ds; // if the stretch of the distance is not taken into account
V>    double x1 = finishx; // otherwise, i.e. if it is taken
V>    cur.bugx = x0 + alpha * (x1 - x0);
V>    cur.rubberlen += cur.manspeed * dt;
V>    return (cur.bugx >= cur.rubberlen);
V>}

V>// prints the state
V>void print(CState cur) {
V>    cout << "Man: " << cur.rubberlen << "\tBug: " << cur.bugx << '\n';
V>}

V>int main() {
V>    CState state;

V>    for (double alpha = 0.0; alpha <= 1.0; alpha += 1.0) {
V>        cout << "alpha = " << alpha << '\n';
V>        for (double dt = 1; dt >= 0.001; dt /= 10.) {
V>            cout << "dt = " << dt << '\n';
V>            int cou = 0;
V>            while(!move(state, alpha, dt)) {
V>                if (++cou <= 3) print(state);
V>            }
V>            cout << "Caught at manx = " << state.rubberlen << ", bugx = " << state.bugx
V>                    << " after " << (state.rubberlen - state.rubberlen0) / state.manspeed << " secs\n";
V>            state.Reset();
V>        }
V>    }
V>}
V>

(codelord)
Видимо так все и есть
спасибо за разъяснения.
сейчас еще гляну но уверен в вашей правоте.
Re[2]: Человек и паучок.
От: vadimcher  
Дата: 10.08.07 05:13
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, SlaVVVa, Вы писали:


SVV>>Условие. Есть резинка растягивающаяся до бесконечности и по всей длинне равномерно длинной 1 метр. Один конец прикреплен к стене и на нем сидит паучок, другой держит в руках человек. Человек начинает двигаться от стены со скоростью 1 м/с — ондновременно с ним начинает двигаться паучок по резинке паучок со скоростью 0.10 м/с.

SVV>>Вопрос: догонит ли паучок человека, и если догонит, то за какое время?

К>Удобнее привязать систему координат к человеку.

К>То есть, переформулировать задачу так:

К>Резинку держат двое. Один стоит на месте, а второй (вместе со стенкой) начинает отходить.

К>Паучок стартует со второго к первому.

К>В этом случае очевидно, что паучок дойдёт.

К>Пусть он разделяет резинку x+y на части: x до первого и y до второго, в пропорции r=y:x
К>Если бы он стоял на месте, то пропорция сохранялась бы. А он движется, постепенно меняя её.

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

К>x' = v*x/(x+y) — s

К>y' = v*y/(x+y) + s

К>Дальше надо решать дифур... Он, вроде бы, простой, но влом.


сложим: (x+y)'=v x+y=vt+1
вычтем: (x-y)'=v(x-y)/(vt+1)-2s=(x-y)/(t+1/v)-2s x-y=(v-2sln(vt+1))(t+1/v)
y=(t+1/v)sln(vt+1) = vt+1 (когда догонит)
t = (1/v)[exp(v/s)-1] = exp(10)-1

А вот зайца кому, зайца-выбегайца?!
Re[9]: Человек и паучок.
От: Аноним  
Дата: 10.08.07 05:15
Оценка:
Здравствуйте, andyJB, Вы писали:

JB>Здравствуйте, codelord, Вы писали:

C>>не смеши "мастер" ты ужасен
C>>по поводу что ты так часто видишь, ты просто видимо очень далек от понимания этого
C>>неправильно ты переделал дружок понимаешь или не понимаешь блин
C>>возьми карандаш и отойди от компьютера ты до него не дорос еще
C>>и еще раз подумай что происходит с резиной.
JB>Я рад, что ты переписал программу с dt. Теперь, подставив ещё меньший dt (0.0001, например), ты узреешь число, похожее на то, к которому будет стремиться твоя убогая аппроксимация. Я подсказал тебе правильный путь, которым ты пренебрег. Что ж, если ты настолько непроходимо глуп, что не видишь ошибки даже если тебе на неё явно указали, то не вижу смысла тратить даже тень своей мегагениальности на недостойного.

Не могу отказать себе в удовольствии
назвать тебя полным мудаком и за слова я тебе могу ответить лично, и супер мега гений написал неправильный коэффициент надеюсь ты носом ткнешься и поймешь почему( который подгон под ответ )
Предлагаю встретиться в Москве любое удобное для тебя время и место, чтобы набить тебе твою сраную морду за твои сраные слова которые при встрече
собственно ручно ( в виде распечатанного топика ) засунешь в задний проход и будешь этому очень рад. т/к это будет лучшее развитие событий для тебя.
Предлагаю сегодня.
Re[7]: Человек и паучок.
От: Seon  
Дата: 10.08.07 08:08
Оценка:
Здравствуйте, codelord, Вы писали:

C>Здравствуйте, Seon, Вы писали:


S>>Здравствуйте, codelord, Вы писали:


C>>>Здравствуйте, Seon, Вы писали:

S>>>>красиво, ничего не скажешь
S>>>>if( time ==1 ) return 20; — это что?

C>>>это растояние паук преодолел за первую секунду,

C>>>может и не красиво но я собственно к этому и не стремился

S>>так, это условие у тебя никогда не выполняется, поэтому не нужно. да и вообще оно не надо.


S>>
S>>  double Lp = 0.0;
S>>  double Lr = 1.0;
S>>  double Vp = 0.1;
S>>  double Vm = 1.0;

S>>  double dt = 0.01;
S>>  int t = 1;
S>>  while (Lp < Lr)
S>>  {
S>>    Lp = (Lr + Vm * dt) * (Lp / Lr);
S>>    Lp += Vp * dt;
S>>    Lr += Vm * dt;
S>>    printf("T=%d  Lp=%f  Lf=%f\n", t, Lp, Lr);
S>>    t++;
S>>  }
S>>  printf("T=%d\n", int(t * dt));
S>>


S>>результат около 22000 сек — 6 часов


C>То что оно не выполнится условие я в курсе

C>я не собирался преподавать уроки программирования( причем эта проверка осталась случайно )
C>позже ф-я выглядела так:

C>
C>#include <iostream>
C>#include <math.h>
C>using namespace std;
C>double absolute( double x ) {
C>     return (( x >= 0.0 ) ? x : x*(-1) );
C>    }
C>double get_cof( double time ) {
C>     return ( ( time <=1 ) ? 1.0 : ( time + 1 ) / time );
C>    }
C>double get_disnow( double time, double speed ) {
C>      return (get_cof( time ) * speed);
C>     }
C>using namespace std;
C>int main( int argc, char **argv ) {
C>     double x = 10.0;
C>     for( double t = 1.0; t < 100000 ;t+=1 )
C>         {
C>           x *= get_cof( t );
C>           x += get_disnow( t, 10.0 );
C>           cout <<" Moskitos = " << x << " cm,  " << "Man = " << t*100 << "cm   " << endl;
C>           if( (absolute( x - (t * 100 ) ) < 10)  )
C>            {   cout.width( 20 );
C>                cout <<"___________________________________________" << endl;
C>                cout << "TIME WAS = " << t << endl;
C>                cout << "MOSKITOS  =     " << x << " cm;   ";
C>                cout << ", MAN       =     " << t * 100 << " cm;   " << endl;
C>                cout <<"___________________________________________" << endl;
C>                break;
C>            }
C>         }
C>     return 0;
C>    }

C>

C> где ясно видно сколько проходит паук и человек можешь проверить на бумажке.,
C> в твоей функции которая видимо согласна только с тобой я этого не увидел.

C> Расстояния в студию.


Сори, ваапще без задней мысли. Никого обидеть не хотел, я думал ты прикалываешься... Извини.
Re[8]: Человек и паучок.
От: Аноним  
Дата: 10.08.07 08:29
Оценка:
Здравствуйте, Seon, Вы писали:

S> Сори, ваапще без задней мысли. Никого обидеть не хотел, я думал ты прикалываешься... Извини.


да я к вам без претензий
Re[10]: Человек и паучок.
От: Pro100Oleh Украина  
Дата: 10.08.07 12:00
Оценка:
Если хочешь кого-то оскорбить, то хоть подпишись, а не от "анонима" пиши.
Pro
Re[2]: Человек и паучок: финальный топик с программой.
От: Pro100Oleh Украина  
Дата: 10.08.07 12:04
Оценка:
Какой же вывод будет?
Может быть отсюда следует, что нужно использовать формулы, а не программы с дискретным подходом?
Pro
Re[3]: Человек и паучок: финальный топик с программой.
От: vadimcher  
Дата: 10.08.07 17:15
Оценка:
Здравствуйте, Pro100Oleh, Вы писали:

PO>Какой же вывод будет?

PO>Может быть отсюда следует, что нужно использовать формулы, а не программы с дискретным подходом?

Ну да, тем более, что по формулам я решил эту задачу в уме за 3 минуты и получил правильный ответ, а вот на программу с приблизительным результатом мне пришлось убить добрый час.

А вот зайца кому, зайца-выбегайца?!
Re: Человек и паучок.
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 12.08.07 10:03
Оценка:
Здравствуйте, SlaVVVa, Вы писали:

SVV>Легенда. Задача якобы задавалась на съезде академиков. И Сахаров решил ее за 5 минут на бумажной салфетке.


Типа так?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Человек и паучок.
От: Erop Россия  
Дата: 12.08.07 10:55
Оценка: 1 (1)
Здравствуйте, SlaVVVa, Вы писали:

SVV>Легенда. Задача якобы задавалась на съезде академиков. И Сахаров решил ее за 5 минут на бумажной салфетке.


Я всё понимаю, но о чём тут дамал целых 5 минут Сахаров?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: Человек и паучок.
От: vadimcher  
Дата: 13.08.07 14:07
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, SlaVVVa, Вы писали:


SVV>>Легенда. Задача якобы задавалась на съезде академиков. И Сахаров решил ее за 5 минут на бумажной салфетке.


E>Я всё понимаю, но о чём тут дамал целых 5 минут Сахаров?


Для данной задачт есть нестандартные решения, которые позволяют "проинтегрировать" в уме, но все зависит от того, какое решение в голову прийдет. Если через дифуры, то лучше листик и 5 минут все же иметь. Известен факт, что как раз у академиков глаз, что называется, "замыливается" от стандартных подходов и решений. Поэтому, если человек всю жизнь имел дело с дифурами (например, изучал динамику в физике), то вполне вероятно, что первое что приходит в голову -- это дифуры. И это ПРАВИЛЬНО, ибо если я немного изменю условие, то все нестандартные решения полетят к черту, а дифуры останутся.

А вот зайца кому, зайца-выбегайца?!
Re[2]: Человек и паучок.
От: vadimcher  
Дата: 13.08.07 14:11
Оценка:
Здравствуйте, Mystic, Вы писали:

M>Здравствуйте, SlaVVVa, Вы писали:


SVV>>Легенда. Задача якобы задавалась на съезде академиков. И Сахаров решил ее за 5 минут на бумажной салфетке.


M>Типа так?


Типа не совсем...

А вот зайца кому, зайца-выбегайца?!
Re[3]: Человек и паучок.
От: Erop Россия  
Дата: 13.08.07 14:25
Оценка:
Здравствуйте, vadimcher, Вы писали:

V>...если я немного изменю условие, то все нестандартные решения полетят к черту, а дифуры останутся.


Интересно, а как, например?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[4]: Человек и паучок.
От: vadimcher  
Дата: 13.08.07 15:29
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, vadimcher, Вы писали:


V>>...если я немного изменю условие, то все нестандартные решения полетят к черту, а дифуры останутся.


E>Интересно, а как, например?


Ну как? Любое нетривиальное движение паука или человека, например.

Вот смотрите, два подхода, описанные в решениях моем и Кодт'а (самое элегантное решение в дифурах, имхо), соответственно (так сказать ЭЛЕГАНТНОСТЬ против УНИВЕРСАЛЬНОСТИ):

Через время t резинка станет длиной 1+t. Паучок ползет с постоянной скоростью 0.1 м/с относительной резинки.
Давайте резинку не растягивать, а скажем, что просто паучок ползет со скоростью .1/(1+t) относительно значальной резинки.

Резинку держат двое. Один стоит на месте, а второй (вместе со стенкой) начинает отходить.
...
Пусть он разделяет резинку x+y на части: x до первого и y до второго, в пропорции r=y:x
x' = v*x/(x+y) — s
y' = v*y/(x+y) + s


Теперь, попробуем задачу переписать так: в момент времени t скорость человека f(t).
Во что превращаются два решения?

Через время t резинка станет длиной 1+int[0,t]f(t). Паучок ползет с постоянной скоростью 0.1 м/с относительной резинки.
Давайте резинку не растягивать, а скажем, что просто паучок ползет со скоростью .1/(1+int[0,t]f(t)) относительно значальной резинки.

Резинку держат двое. Один стоит на месте, а второй (вместе со стенкой) начинает отходить.
...
Пусть он разделяет резинку x+y на части: x до первого и y до второго, в пропорции r=y:x
x' = f(t)*x/(x+y) — s
y' = f(t)*y/(x+y) + s

Сложность первого варианта существенно выросла, он уже почти как второй.

Теперь еще чуть-чуть усложним: скорость человека зависит от расстояния до паука (например, чем паук ближе -- тем страшнее ).

Через время t резинка станет длиной 1+???. Паучок ползет с постоянной скоростью 0.1 м/с относительной резинки.
Давайте резинку не растягивать, а скажем, что просто паучок ползет со скоростью .1/(1+???) относительно значальной резинки.

Резинку держат двое. Один стоит на месте, а второй (вместе со стенкой) начинает отходить.
...
Пусть он разделяет резинку x+y на части: x до первого и y до второго, в пропорции r=y:x
x' = f(t,x)*x/(x+y) — s
y' = f(t,x)*y/(x+y) + s

Первое решение окончательно развалилось, а второе -- нет. Если здесь есть аналитическое решение, оно его найдет. Если нет -- численно посчитает!

В борьбе ЭЛЕГАНТНОСТИ с УНИВЕРСАЛЬНОСТЬЮ в итоге побеждает последнее. Почти всегда и почти во всем. Иногда везет, и элегантное решение становится почти универсальным.

Именно поэтому с опытом (как у академиков, например) в голове остаются только универсальные шаблоны, которые они готовы моментально применить к любой задаче. Именно поэтому, скорее всего, как я думаю, Сахарову (если эту байку воспринимать всерьез) потребовался листик и 5 минут. Но ему же листика и 5 минут хватило бы на любой из представленных здесь трех вариантов. И именно поэтому, скорее всего, как я думаю, Арнольд в предисловии к своим "Задачам для детей от 5 до 15 лет" пишет "Я заметил даже, что пятилетние дети решают подобные задачи лучше школьников, испорченных натаскиванием, которым они даются легче, чем студентам, подвергшимся зубрежке в университете, но все же превосходящим своих профессоров (хуже всех решают эти простые задачи нобелевские и филдсовские лауреаты)."

А вот зайца кому, зайца-выбегайца?!
Re[5]: Человек и паучок.
От: Erop Россия  
Дата: 13.08.07 15:46
Оценка:
Здравствуйте, vadimcher, Вы писали:

V>Именно поэтому с опытом (как у академиков, например) в голове остаются только универсальные шаблоны, которые они готовы моментально применить к любой задаче. Именно поэтому, скорее всего, как я думаю, Сахарову (если эту байку воспринимать всерьез) потребовался листик и 5 минут. Но ему же листика и 5 минут хватило бы на любой из представленных здесь трех вариантов. И именно поэтому, скорее всего, как я думаю, Арнольд в предисловии к своим "Задачам для детей от 5 до 15 лет" пишет "Я заметил даже, что пятилетние дети решают подобные задачи лучше школьников, испорченных натаскиванием, которым они даются легче, чем студентам, подвергшимся зубрежке в университете, но все же превосходящим своих профессоров (хуже всех решают эти простые задачи нобелевские и филдсовские лауреаты)."



Я может чего не понял, но я решал как-то так:

L(t) = L0 + Vч t -- длина растянутой резинки
Uп( t ) = Vп * L( 0 ) / L( t ) -- скорость паучка относительно "нерастянутой" резинки

Sп( t ) = int( 0, t, Uп( t ) dt ) = int( 0, t, Vп/( 1 + Vч/L0 t ) ) = дальше всё вычисляется и без бумажки и намного быстрее 5 минут. Особенно если в виде int( 0, t, 0.1/( 1 + t ) dt ) = 0.1 int( 1, t + 1, dt / t ) = 0.1 ln( t + 1 )

Таки о чём же он думал?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[6]: Человек и паучок.
От: vadimcher  
Дата: 13.08.07 15:55
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, vadimcher, Вы писали:


V>>Именно поэтому с опытом (как у академиков, например) в голове остаются только универсальные шаблоны, которые они готовы моментально применить к любой задаче. Именно поэтому, скорее всего, как я думаю, Сахарову (если эту байку воспринимать всерьез) потребовался листик и 5 минут. Но ему же листика и 5 минут хватило бы на любой из представленных здесь трех вариантов. И именно поэтому, скорее всего, как я думаю, Арнольд в предисловии к своим "Задачам для детей от 5 до 15 лет" пишет "Я заметил даже, что пятилетние дети решают подобные задачи лучше школьников, испорченных натаскиванием, которым они даются легче, чем студентам, подвергшимся зубрежке в университете, но все же превосходящим своих профессоров (хуже всех решают эти простые задачи нобелевские и филдсовские лауреаты)."



E>Я может чего не понял, но я решал как-то так:


E>L(t) = L0 + Vч t -- длина растянутой резинки

E>Uп( t ) = Vп * L( 0 ) / L( t ) -- скорость паучка относительно "нерастянутой" резинки

E>Sп( t ) = int( 0, t, Uп( t ) dt ) = int( 0, t, Vп/( 1 + Vч/L0 t ) ) = дальше всё вычисляется и без бумажки и намного быстрее 5 минут. Особенно если в виде int( 0, t, 0.1/( 1 + t ) dt ) = 0.1 int( 1, t + 1, dt / t ) = 0.1 ln( t + 1 )


E>Таки о чём же он думал?


Ну вот, Вы опять о том же... как Вы решали. Я не спорю, что Ваше решение самое элегантное и ответ может быть получен за 3, нет за 1 минуту без бумажки. Просто, как мне кажется, решение с дифурами более универсально -- и это то, что первым придет в голову физику с опытом решения динамических задач. Есть динамическая система, и решение есть сразу -- система дифуров. Это как таблица умножения в физике. Может я и не прав. Вот, например, еще раз повторюсь, Кодт представил красивое решение в дифурах. А решать дифур для данной задачи в уме -- увольте! Байка на то она и есть байка, чтобы что-то в ней было правдой, а что-то почти правдой.

А вот зайца кому, зайца-выбегайца?!
Re[7]: Человек и паучок.
От: Erop Россия  
Дата: 13.08.07 17:08
Оценка:
Здравствуйте, vadimcher, Вы писали:

E>>Я может чего не понял, но я решал как-то так:


E>>L(t) = L0 + Vч t -- длина растянутой резинки

E>>Uп( t ) = Vп * L( 0 ) / L( t ) -- скорость паучка относительно "нерастянутой" резинки

E>>Sп( t ) = int( 0, t, Uп( t ) dt ) = int( 0, t, Vп/( 1 + Vч/L0 t ) ) = дальше всё вычисляется и без бумажки и намного быстрее 5 минут. Особенно если в виде int( 0, t, 0.1/( 1 + t ) dt ) = 0.1 int( 1, t + 1, dt / t ) = 0.1 ln( t + 1 )


E>>Таки о чём же он думал?


V>Ну вот, Вы опять о том же... как Вы решали. Я не спорю, что Ваше решение самое элегантное и ответ может быть получен за 3, нет за 1 минуту без бумажки. Просто, как мне кажется, решение с дифурами более универсально -- и это то, что первым придет в голову физику с опытом решения динамических задач. Есть динамическая система, и решение есть сразу -- система дифуров. Это как таблица умножения в физике. Может я и не прав. Вот, например, еще раз повторюсь, Кодт представил красивое решение в дифурах. А решать дифур для данной задачи в уме -- увольте! Байка на то она и есть байка, чтобы что-то в ней было правдой, а что-то почти правдой.


Ну я не понимаю, что может его "испортить"
Ну пусть будет L( t ) общего вида. Ну получим тот же интеграл.
Пусть даже скорость будет функцией положения паучка. Ну интеграл будет чуть страннее. Но не сильно.
Короче в чём неуниверсальность решения? При чём тут дифуры?
Мне вообще кажется, что такое решение оно прямое. Я не понимаю как иначе прямо интерпретировать идею "ползёт со скоростью 0.1 м/с по резинке"...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[8]: Человек и паучок.
От: vadimcher  
Дата: 13.08.07 20:47
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, vadimcher, Вы писали:


E>>>Я может чего не понял, но я решал как-то так:


E>>>L(t) = L0 + Vч t -- длина растянутой резинки

E>>>Uп( t ) = Vп * L( 0 ) / L( t ) -- скорость паучка относительно "нерастянутой" резинки

E>>>Sп( t ) = int( 0, t, Uп( t ) dt ) = int( 0, t, Vп/( 1 + Vч/L0 t ) ) = дальше всё вычисляется и без бумажки и намного быстрее 5 минут. Особенно если в виде int( 0, t, 0.1/( 1 + t ) dt ) = 0.1 int( 1, t + 1, dt / t ) = 0.1 ln( t + 1 )


E>>>Таки о чём же он думал?


V>>Ну вот, Вы опять о том же... как Вы решали. Я не спорю, что Ваше решение самое элегантное и ответ может быть получен за 3, нет за 1 минуту без бумажки. Просто, как мне кажется, решение с дифурами более универсально -- и это то, что первым придет в голову физику с опытом решения динамических задач. Есть динамическая система, и решение есть сразу -- система дифуров. Это как таблица умножения в физике. Может я и не прав. Вот, например, еще раз повторюсь, Кодт представил красивое решение в дифурах. А решать дифур для данной задачи в уме -- увольте! Байка на то она и есть байка, чтобы что-то в ней было правдой, а что-то почти правдой.


E>Ну я не понимаю, что может его "испортить"

E>Ну пусть будет L( t ) общего вида. Ну получим тот же интеграл.
E>Пусть даже скорость будет функцией положения паучка. Ну интеграл будет чуть страннее. Но не сильно.
E>Короче в чём неуниверсальность решения? При чём тут дифуры?
E>Мне вообще кажется, что такое решение оно прямое. Я не понимаю как иначе прямо интерпретировать идею "ползёт со скоростью 0.1 м/с по резинке"...

Ok, я просто высказал свое мнение. Мне показалось решение в дифурах более универсальным, а потому более естественным для академика. Кроме того, я не могу решить эти дифуры в уме. Поэтому и предположил, что ему могли понадобиться ручка, листик и 5 минут, а Вам -- нет. Просто мнение.

А вот зайца кому, зайца-выбегайца?!
Re[3]: Человек и паучок.
От: Mystic Украина http://mystic2000.newmail.ru
Дата: 14.08.07 07:38
Оценка:
Здравствуйте, vadimcher, Вы писали:

M>>Типа так?


V>Типа не совсем...


Там решалась задача с учетом того, что скорость паучка в 100 раз меньше скорости человека, а тут в уловии разница всего в 10 раз, что позволяет использовать вычислительную технику

А что не так?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Человек и паучок.
От: andyJB  
Дата: 14.08.07 12:23
Оценка: :)
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, SlaVVVa, Вы писали:


SVV>>Легенда. Задача якобы задавалась на съезде академиков. И Сахаров решил ее за 5 минут на бумажной салфетке.


E>Я всё понимаю, но о чём тут дамал целых 5 минут Сахаров?

А где там сказано, что он думал пять минут? Он не думал, а аккуратно записывал решение. На бумажной салфетке полминуты надо только на то, чтобы ручку расписать.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.