Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Mathematica] Помощь с FindInstance 
:(
    Опции темы
bUg
Дата 20.3.2009, 02:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 27.8.2006

Репутация: нет
Всего: нет



Недавно решил занятся изучением данного языка, а изучаю я языки просто решая всякие мелкие задачки. (Так привык 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 

PM MAIL   Вверх
FCM
Дата 5.4.2009, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.3.2009

Репутация: нет
Всего: 9



В Математике некоторые функции используют нестандартный порядок вычислений. Например могут какой-либо параметр оставлять до поры до времени невычисленным. Обычно эта проблема решается с помощью применения функции 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 не доводит дело до логического конца и выдает соотв. сообщение. 

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

Это сообщение отредактировал(а) FCM - 5.4.2009, 14:19
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Добро пожаловать в раздел "Другие языки" форума Vingrad!

Void
Void

Раздел посвящён различным языкам программирования, для которых (в силу невысокой популярности) нет отдельного раздела (GPSS, Lua, MATLAB, Ada, Forth, Smalltalk, Tcl, REXX, AWK и др.)

  • Обязательно следуйте правилам Форума.
  • Пожалуйста, прочитайте и следуйте рекомендациям по работе в разделе и навигации по Форуму.
  • Для вставки текстов исходных кодов используйте подсветку синтаксиса из выплывающего списка Код в форме ответа. Если Ваш язык в списке не представлен, то используйте тег: [code=ваш_язык]код[/code], например, [code=ada]код[/code]. Если в будущем подсветка синтаксиса для указанного языка будет реализована, исходный код преобразится.
  • Помните, один вопрос - одна тема.

Приятного времяпрепровождения! С уважением, Void, kemiisto .

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Другие языки | Следующая тема »


 




[ Время генерации скрипта: 0.0396 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.