Как переводить "Wolfram-only" функции в нативную математику?

Использую Wolfram Cloud.

У меня есть большая сложная функция в Вольфраме, построенная на "Wolfram-only" функциях, таких как IntegerLength[], IntegerDigits[], FromDigits[], If[] и т. д. По определенным причинам, мне нужно создать эквивалентную ей функцию, которая не использует "Wolfram-only", а построена на базовой математике.

Например, дана функция (она добавляет цифру 5 в конец числа x):

f[x_] := FromDigits[Append[IntegerDigits[x], 5]]

Преобразуем в нужную эквивалентную функцию:

ConvertToMath[f[]] ---> g[]

Т.е. g[x_] является эквивалентом f[x_]. Она "математически нативна", не использует всякие If[] и прочее, и равна 10*x+5:

g[x_] := 10*x+5

Все функции "Wolfram-only" были переведены в чистую математику, и затем упрощены до 10*x+5.

На самом деле, необходимо конкретизировать, какой именно эквивалент мы хотим получить (ведь их бесконечное количество), поэтому пусть им будет 1-й эквивалент из самых простых и кратчайших эквивалентов, которые можно получить.

Чтобы выполнить задачу, необходимо знать, как преобразовывать "Wolfram-only" в чистую математику.

Есть ли в Вольфраме для этого какие-то инструменты?
  • Вопрос задан
  • 49 просмотров
Решения вопроса 1
Есть ли в Вольфраме для этого какие-то инструменты?

Скорее всего нет, так как в вольфраме целая куча функций, которые реализованы внутри самого вольфрама.
Они не прозрачны и их принципиально неользя вот так преобразовать автоматически.

Вот например твой случай с добавлением добавлением пятёрки в конец числа:
f[x_] := FromDigits[Append[IntegerDigits[x], 5]]
Это тебе как человеку она видится, как добавление цифры в конец.
С точки зрения вольфрама - это последовательный вызов трёх непрозрачных функций:
1. Принимает число и возвращает список
2. Принимает список и число, а возвращает список
3. Принимает список и возвращает число

Если добавить немного прозрачности о том, что каждый из шагов делает, то можно попробовать описать это через матрицы/вектора/множества, но их опять же без вдумчивого анализа не получится упростить до "10x+5)

Не говоря уже об If и циклах.
Хотя строго говоря условия и даже свободные формулировки на человеческом языке вполне допустимы в "чистой математике" - главное чтобы они были однозначны.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы