sympyでブール型変数を含む関数の派生を取ろうとしています。ブーリアン付きsympy派生
マイ期待される結果:
真または偽であるブール値に応じて、2つの異なる誘導体(すなわち1または0)。
例:コメントの後
import sympy as sy
c, x = sy.symbols("c x", positive=True, real=True)
bo = sy.Function("bo")
fct1 = sy.Function("fct1")
fct2 = sy.Function("fct2")
FOC2 = sy.Function("FOC2")
y = 5
a = 2
b = 4
def fct1(x):
return -0.004*x**2 + 0.25*x + 4
# the following gives the smaller positive intercept with the x-axis)
# this intercept is the threshold value for the boolean function, bo
min(sy.solve(fct1(x)-y, x))
def bo(x):
if fct1(x) <= y:
return 1
else:
return 0
def fct2(c, x):
return a + b*c + bo(x)*c
def FOC2(c, x):
return sy.diff(fct2(c, x), c)
print(FOC2(c, x))
分-機能BOはTrueまたはFalseであることのためのxの閾値が4.29 ...、これ正と実際のだろう私を示しています。
出力:
TypeError: cannot determine truth value of Relation
私は、真理値がシンボルであるX、に依存していることを理解しています。したがって、xを知らなくても、boを決定することはできない。
しかし、ボーが象徴的なところで私の期待した結果を得るにはどうすればよいでしょうか?
この提案と私のコードへのコメントありがとう。あなたのアイデアは、私が提起した質問に対してうまくいきます。 FOCsを取った後wrt。いくつかの象徴的な変数、私はこれらの象徴的な変数のためのFOCのシステムを解決しようとしています。私はHeavisideでそれをすることができないように見えますか? sy.solve_triangulatedを使用すると、Heaviside式にジェネレータの要素が含まれていることを示すPolynomialErrorが返されます。何かご意見は? –