scidam
Если это упражнение, то все-таки нужно конкретизировать возможный вид функции многих переменных. Если она полиномиального типа, как у вас указано в примере ввода, то здесь SimPy (как правильно указал John_16); С помощью этого пакета производную можно взять символьно, найти все критические точки и найти ту, в которой функция минимальна. Но это, если вид f простой, как вы указали, а то можно легко наткнуться на ситуации, когда df/dx_j = 0 не решатся символьно, да и численно могут быть проблемы.Если это задача реальная, то можно посмотреть в сторону пакета SciPy раздел оптимизация, здесь есть много методов численного поиска локальных и глобальных минимумов…
К сожалению подобные пакеты нельзя использовать в данной задаче. Нужно написать численный метод самому. Если бы можно было пользоваться такими модулями, тогда я бы не задал такой вопрос. А вопрос конкретный, можно ли как-то преобразовать введенную информацию типа string в функцию. Например приведу на скорую руку кусок кода, который планировал писать, ну или что-то подобное.
import numpy as np
A = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '+', '-', '^']
func = str(input('function: '))
step = 0
key = []
step = 0
for i in range(len(func)):
if func[i] == 'x':
step += 1
key.append('x' + str(step+1))
key = A + key
.
.
.
Но к сожалению не получается создать такую функцию:
def example(x1, x2, x3, ...)
Если изначально не знаю сколько будет переменных, а возвращать она должна вот по такому принципу:
Если мы вводим, например: 'x1^2 + x2^3 + 15x3, тогда
return x1**2 + x2**3 + 15*x3
А дальше соответственно я бы мог делать все, что угодно, так как x1, x2, x3 это переменные