参数比例及数学表达式
检查数学表达式中的参数增加是否增加或减少整个表达式的最佳方法是什么(在 Python 中,最好是 SymPy)?
假设:所有参数均为正(即> 0)。
示例 A*B/(A+C)
:A
应与表达式成正比,C
应与表达式成反比。
一种明显的解决方案是将 1 分配给所有参数,分别将 1 和 100 分配给 C 并应用 eval()
,但这非常粗略,可能会产生错误(例如使用 (AB)/ C
,最好的情况是给出错误而不是错误的结果)。
What is the best way to check if a parameter increase in a mathematical expression increases or decreases the expression as a whole (in Python, preferably SymPy)?
Assumptions: all parameters are positive (i.e. > 0).
Example A*B/(A+C)
: A
should be found as proportional to the expression and C
should be found as inverse proportional.
One obvious solution would be to assign 1 to all parameters, 1 and 100 to C respectively and apply eval()
, but that is very crude and might yield errors (e.g. with (A-B)/C
where the best case would be to give an error instead of a wrong result).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我不认为在一般情况下可以解决这个问题。一个简单的反例是 sin(A),它可以是正比,也可以是反比,具体取决于您评估 A 的值。
但是,您可以使用自动微分工具(例如 PyDX 或 Theano)来计算函数在不同参数值下的导数。
I don't believe this can be solved in the general case. A simple counter-example is
sin(A)
, which could be both proportional and inverse proportional, depending on what value of A you are evaluating it at.However, you could use an automatic differentiation tool, such as PyDX or Theano, to compute the derivative of functions at various parameter values.