2015-09-22 1 views
-1

Я новичок в python, и я пытаюсь сделать функцию, которая вычисляет производную от другой функции. До сих пор у меня есть этот кодВсе, что я получаю, это «NameError: name« x »не определено» error

def f(x): 
    return x**2 + x - 5 

def derivative(f,x,h): 
    return 1/(2*h) * (f(x+h) - f(x-h)) 

print derivative(f(x),4,6) 

, но когда я пытаюсь запустить его я получаю «NameError: имя„x“не определен» ошибка, кто-то может мне помочь?

+0

Из ваших подписей функций это выглядит как вы хотели назвать его как 'производной печати (е (4), 4,6)', где 'х = 4'. –

+0

Я пытаюсь сделать функцию, которая вычисляет производную функции, если это имеет смысл, мне дают только строку «1/(2 * h) * (f (x + h) - f (xh))» и ответ должен быть «float». Может быть, я собираюсь все это ошибаться ... –

+0

Главное, так как это стоит Эрик, вы не придаете значение своей функции f (x) для использования для x. – IfTrue

ответ

1

Когда вы говорите его:

print derivative(f(x),4,6) 

вы не определили х вы передаете в качестве параметра Р (х).

Вы можете сделать это, как это, например, при х = 1:

def f(x): 
    return x**2 + x - 5 

def derivative(f,x,h): 
    return 1/(2*h) * (f(x+h) - f(x-h)) 

x=1 

print derivative(f(x),4,6) 
1

й не определен, и вы не можете передать п (х) в параметре. Попробуйте сделать что-то вроде этого:

def f(x): 
return x**2 + x - 5 

def derivative(f,x,h): 
return 1/(2*h) * (f(x+h) - f(x-h)) 

x=12345 

print derivative(f,x,6) 
+0

Это вызовет ту же ошибку, что и f не определена. Я думаю, вы имели в виду f (x), как это было в OP. – IfTrue

+0

Не в моей системе. Мне пришлось удалить (x) из f (x) в последней строке. (2.7.10 [GCC 4.2.1 Совместимый Apple LLVM 6.0 (clang-600.0.39)]) – ergonaut

+0

Хмм .... в настоящее время вы говорите ему, чтобы он выполнил производную функцию и выполнил ее с параметрами значения переменной f, переменными x значение и целое число 6. Это вычислило бы для 'return 1/(2 * 6) * (f (НЕ УКАЗАНО) (x (НЕ УКАЗАНО) +6) - f (НЕ УКАЗАНО) (x (НЕ УКАЗАННОЕ) -6))'. Я должен добавить, что даже если это работает, это не совсем то, что пытается сделать OP, потому что он хочет вычислить возвращаемое значение x, проходящее через первую функцию, и использовать это как первый параметр второй функции. придать смысла. – IfTrue