Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Другие языки > [Mathematica] Помощь с FindInstance


Автор: bUg 20.3.2009, 02:26
Недавно решил занятся изучением данного языка, а изучаю я языки просто решая всякие мелкие задачки. (Так привык smile )
Задачка: Найти первое число большее 11, такое что сумма его цифр возведенная в степень(неизвестнуу) равна самому числу.
т.е. x = sum_digits(x)^n, x>10, n>1
Делаю так.
Код

  FindInstance[{x > 10, x == (Total[IntegerDigits[x]])^n, n > 1} , {x,n}, Integers]

Не работает. Почему не работает мне ясно (IntegerDigits[x] возвращает переменную x, а не цифры числа).

Вопрос: Почему все работает именно так, как работает?  smile
На мой взгляд FindInstance должен перебирать x-ы и подставлять только потом в IntegerDigits. 

Вопрос2: Как этого избежать/исправить? (Цикл писать не хочется, я ведь собрался пробовать именно специфические возможности языка - решать уравнения).


З.Ы. Сильно камнями не кидайтесь  smile 

Автор: FCM 5.4.2009, 14:18
В Математике некоторые функции используют нестандартный порядок вычислений. Например могут какой-либо параметр оставлять до поры до времени невычисленным. Обычно эта проблема решается с помощью применения функции Evaluate к параметру, который нужно "насильственно" вычислить. 
Но по моему в данном случае это не помогает.
Можно прощупать ситуацию "в лоб"  так, 
Код

f[x_Integer]:= FindInstance[{ x == (Total[IntegerDigits[x]])^n, n > 1} , {n}, Integers];
Table[f[t^k],{k,2,5},{t,4,100}]

в результате в M5.1 получим список вида
Код

{{{},{}, ... , {FindInstance[{ 81 ==9^n, n > 1} , {n}, Integers]}, {},  ... , {},
      {FindInstance[{ 2401 ==7^n, n > 1} , {n}, Integers]}, {} и т.д.}}


т.е. для тех t и k, для которых нет решения, выдается пустой список, а  для тех t и k, где должно быть решение FindInstance не доводит дело до логического конца и выдает соотв. сообщение. 

Но такой лобовой подход только для прикидки - в целом это не есть хорошо (точнее плохо)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)