| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Другие языки > [Mathematica] Помощь с FindInstance |
| Автор: bUg 20.3.2009, 02:26 | ||
| Недавно решил занятся изучением данного языка, а изучаю я языки просто решая всякие мелкие задачки. (Так привык Задачка: Найти первое число большее 11, такое что сумма его цифр возведенная в степень(неизвестнуу) равна самому числу. т.е. x = sum_digits(x)^n, x>10, n>1 Делаю так.
Не работает. Почему не работает мне ясно (IntegerDigits[x] возвращает переменную x, а не цифры числа). Вопрос: Почему все работает именно так, как работает? На мой взгляд FindInstance должен перебирать x-ы и подставлять только потом в IntegerDigits. Вопрос2: Как этого избежать/исправить? (Цикл писать не хочется, я ведь собрался пробовать именно специфические возможности языка - решать уравнения). З.Ы. Сильно камнями не кидайтесь |
| Автор: FCM 5.4.2009, 14:18 | ||||
| В Математике некоторые функции используют нестандартный порядок вычислений. Например могут какой-либо параметр оставлять до поры до времени невычисленным. Обычно эта проблема решается с помощью применения функции Evaluate к параметру, который нужно "насильственно" вычислить. Но по моему в данном случае это не помогает. Можно прощупать ситуацию "в лоб" так,
в результате в M5.1 получим список вида
т.е. для тех t и k, для которых нет решения, выдается пустой список, а для тех t и k, где должно быть решение FindInstance не доводит дело до логического конца и выдает соотв. сообщение. Но такой лобовой подход только для прикидки - в целом это не есть хорошо (точнее плохо) |