我正在嘗試撰寫一個g在給定點生成函式限制的函式p。
例如,假設g(x, y, z) = 2x 3y zand p = (5, 10, 15)。我正在嘗試創建一個回傳的函式[lambda x : g(x, 10, 15), lambda y: g(5, y, 15), lambda z: g(5, 10, z)]。換句話說,我想使用我的多變數函式并回傳一個單變數函式串列。
我寫了一些 Python 來描述我想要的東西,但是我無法弄清楚如何將正確的輸入p正確地傳遞到 lambda 中。
def restriction_generator(g, p):
restrictions = []
for i in range(len(p)):
restriction = lambda x : g(p[0], p[1], ..., p[i-1], p[x], p[i 1], .... p[-1])
restrictions.append(restriction)
return restrictions
目的:我寫了一個簡短的函式來估計單變數函式的導數,我試圖通過計算回傳的串列中每個限制函式的導數來擴展它來計算多變數函式的梯度restriction_generator。
抱歉,如果以前有人問過這個問題。經過一番搜索,我找不到任何東西,但是如果沒有所有這些額外的背景關系,我很難表達我的問題。這個問題的另一個標題可能更合適。
uj5u.com熱心網友回復:
由于@bandicoot12 要求提供更多解決方案,我將嘗試修復您提出的代碼。我不熟悉這個...符號,但我認為這個微小的改變應該有效:
def restriction_generator(g, p):
restrictions = []
for i in range(len(p)):
restriction = lambda x : g(*p[: i], x, *p[i 1:])
restrictions.append(restriction)
return restrictions
雖然我不熟悉...符號,但如果我不得不猜測,您的原始代碼不起作用,因為它可能總是輸入p[0]。也許可以通過將其從 更改為 來p[0], p[1], ..., p[i-1]修復p[0], ..., p[i-1]。
uj5u.com熱心網友回復:
嘗試這樣的事情:
def foo(fun, p, i):
def bar(x):
p[i] = x
return fun(*p)
return bar
和
def restriction_generator(g, p):
restrictions = []
for i in range(len(p)):
restrictions.append(foo(g, p, i))
return restrictions
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/504163.html
上一篇:負數模2
下一篇:計算達到一定勝率所需的勝數?
