【发布时间】:2016-07-22 13:59:35
【问题描述】:
我们定义一个用户自定义函数如下。
def testfun(x):
return( x[0]*a+x[1]*b)
调用函数:
sol = optimize.root(testfun, [0, 0], method = 'lm')
我们如何在调用函数时传递a和b?
【问题讨论】:
标签: python python-3.x scipy
我们定义一个用户自定义函数如下。
def testfun(x):
return( x[0]*a+x[1]*b)
调用函数:
sol = optimize.root(testfun, [0, 0], method = 'lm')
我们如何在调用函数时传递a和b?
【问题讨论】:
标签: python python-3.x scipy
对于这个问题,optimize.root 有一个 args 输入,它接受一组值作为附加输入传递给您的目标函数:
def testfun(x, a, b):
return ([x[0] * a + x[1] * b])
# Specify values for a and b
a = 1
b = 2
sol = optimize.root(testfun, [0, 0], method='lm', args=(a, b))
更一般地说,您可以使用 lambda 函数为任何函数提供额外的输入
# Create a lambda function which passes the input provided by optimize.root and adds
# two more inputs: a and b
func = lambda x: testfun(x, a, b)
# Pass this lambda function to optimize.root
sol = optimize.root(func, [0, 0], method='lm')
【讨论】:
args 输入到optimize.root 查看更新
optimize.root(testfun, [0, 0], method='lm', args=(a, b)) a = 4, b = 5 optimize.root(testfun, [0, 0], method='lm', args=(a, b)) 是在optimize.root函数中使用args吗?只是好奇,root 函数中的args 选项需要什么。默认情况下,它们已经是全局的。