Если я правильно понимаю вопрос:
Алгоритм, который вы ищете, выводит математическую функцию вместе с определенными c значениями, которые при применении к функции дают вам входное значение x, для произвольного значения x.
В целом я считаю, что это невозможно. Это может быть возможно с недетерминированной c точки зрения, когда вы пытаетесь угадать значения, но обычно это невозможно с алгоритмической c или вычислительной точки зрения.
Давайте сначала ограничим функцию одной переменной. Поиск функции, которая дает вам значение x для некоторого значения a, т.е. f (a) = x, аналогично запросу f (a) - x = 0.
Ограничивая операции до +, -, *, мы видим, что f (a) является полиномом.
Ограничение задачи таким образом связывает решение с алгебрами c числа и конструктивные числа . Более общая математическая теория, объясняющая свойства этих чисел и функций, называется Теория Галуа .
Можно найти многочлен заданного входного значения x ЕСЛИ и только ЕСЛИ входное значение x равно алгебре c. Вы можете создать простой алгоритм, который принимает степени x до тех пор, пока степень x не станет целым числом (или рациональным числом).
Вы можете создать простой алгоритм, который принимает степени иррационального часть x, пока эта степень x не станет целым числом (или рациональным числом). Обратите внимание, что даже в этом алгоритме вам нужно будет принять во внимание некоторую ошибку измерения, потому что sqrt (2) = 1.41421356237 ... для бесконечного числа десятичных знаков, а компьютер может отслеживать только некоторое конечное количество десятичных знаков. места. Например:
def sqrt(x):
return x**(1/2)
if __name__ == "__main__":
num = sqrt(2)
print(num)
print(num**2)
Будет выведено:
1.4142135623730951
2.0000000000000004
Таким образом, результат такого простого алгоритма никогда не будет на 100% правильным. Это может сделать человек, но не компьютер. Вы можете изучить область вычисления символов c, но алгоритм решения даже части вашей проблемы будет нелегко превратить в скрипт. Если вы не против не решить эту проблему В 100% случаев вы можете захотеть изучить
линейные приближения и
нелинейные приближения .
Причину, по которой даже без ошибки измерения я считаю, что это невозможно в общем случае, потому что добавление операций (^, /) может не привести к кольцу многочленов . Это является основой для решения задач, связанных с алгебрами c числами .
Введение дополнительных переменных b, c, ...., n, .. в f, таких, что f (a, b, c, ..., n, ...) = x также ограничит, какие функции будут удовлетворять свойствам a ring .
Несмотря на это, это проблема сложна, даже если рассматривать многочлены только одной переменной. Поиск в Google терминов, выделенных полужирным шрифтом, может помочь лучше понять вашу проблему. Извините, если что-то из этого было для вас уже очевидно, и в любом случае я надеюсь, что это поможет!