Я очень новичок, поэтому, пожалуйста, будьте осторожны.Математическое выражение как аргумент функции?
Я занимаюсь некоторыми упражнениями на Python, и у меня есть код, похожий на этот.
def newton(x0, Tol):
def F(x):
return (x**3)+898
def dF(x):
return 3*x**2
x=[x0]
for n in range(400):
x.append(x[n]-(F(x[n]))/dF(x[n]))
if abs((x[n+1])-(x[n]))<Tol:
conv='Converge'
print n
break
if abs((x[n+1])-(x[n]))>=Tol:
conv='No converge'
return x[n+1], conv
Я определяю функцию F(x)
и ее производная dF(x)
и добавить значения в список x
.
Задача состоит в том, чтобы проверить, сходится ли серия или нет, что, по-моему, я преуспел.
Но вопрос, который у меня есть, касается функций (x**3)+898
и 3*x**2
в качестве аргументов функции Newton
.
Я предполагал, что это будет что-то вроде этого
def newton(f, df, x0, Tol):
def F(x):
return f
def dF(x):
return df
*calculations*
return x[n+1], conv
И вы могли бы назвать его
newton((x**3)+898, 3*x**2, x0=something, Tol=something)
Так что функции F(x)
и dF(x)
определяются в процессе.
Однако x
не определен, поэтому он не работает.
Обратите внимание на то, что в упражнении требуется наличие f и df в качестве параметров «newton».
Как вы решаете это?
Спасибо.