Как повторить ответ на уравнение, используя известные значения? - PullRequest
0 голосов
/ 05 августа 2020

Я не знаю, как и с чего начать, мне нужно иметь некоторый словарный запас или термины, чтобы приступить к исследованиям, поэтому давайте спросим сообщество.

Проблема: у меня есть значение X, которое является окончательным ответом уравнения. У меня есть диапазон значений, скажем 10 (AJ), который будет использоваться в уравнении. Использование простых вычислений (+, -, *, /, (), ^) для формирования уравнения, которое использует некоторые или все значения AJ для решения уравнения до значения X.

Пример: A ^ 2 + B * C + (D + E + F + G) * J + 30 = X

Ввод: окончательное значение X, значения, используемые в уравнении, максимальное количество значений, которые будут использоваться в уравнении, означающее I хотите использовать в уравнении не менее Z заданных значений (в примере Z = 8)

Вывод: уравнение, которое решает его с заданными значениями

Можно ли превратить это в python скрипт например? Возможно ли вообще такое вычисление? Какие термины описывают такого рода вычисления?

1 Ответ

0 голосов
/ 05 августа 2020

Если я правильно понимаю вопрос:

Алгоритм, который вы ищете, выводит математическую функцию вместе с определенными c значениями, которые при применении к функции дают вам входное значение x, для произвольного значения x.

В целом я считаю, что это невозможно. Это может быть возможно с недетерминированной c точки зрения, когда вы пытаетесь угадать значения, но обычно это невозможно с алгоритмической c или вычислительной точки зрения.

  1. Давайте сначала ограничим функцию одной переменной. Поиск функции, которая дает вам значение x для некоторого значения a, т.е. f (a) = x, аналогично запросу f (a) - x = 0.

  2. Ограничивая операции до +, -, *, мы видим, что f (a) является полиномом.

  3. Ограничение задачи таким образом связывает решение с алгебрами c числа и конструктивные числа . Более общая математическая теория, объясняющая свойства этих чисел и функций, называется Теория Галуа .

  4. Можно найти многочлен заданного входного значения x ЕСЛИ и только ЕСЛИ входное значение x равно алгебре c. Вы можете создать простой алгоритм, который принимает степени x до тех пор, пока степень x не станет целым числом (или рациональным числом).

  5. Вы можете создать простой алгоритм, который принимает степени иррационального часть 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 терминов, выделенных полужирным шрифтом, может помочь лучше понять вашу проблему. Извините, если что-то из этого было для вас уже очевидно, и в любом случае я надеюсь, что это поможет!

...