我有一个源文件之类(不失一般性(仅用于描述可能的语法)):
function a()
return g // global variable without any internal structure exactly
end
function b(x, y)
local z = x * y
return z + 1
end
function c(z, t)
return b(z * z, a())
end
// ...etc
我想将任何函数WRT区分为某个变量。
我们可以将所有正式参数视为的未知函数导出时间内部结构。
如果我更进一步,那么以下是真理(因为依赖符号'
是符号的一部分,因为全局变量是替换时间阶段的运算符(def:{{1是一个,但g{g}
为零)):
g{y}
但是最后一个功能怎么办?即,用实际参数代替函数function a'()
return g';
end
function b'(x, y, x', y')
local z' = x' * y + x * y'
return z' + 0
end
?
是否有任何可以使用的通用算法实现与上述一起使用?如何处理高阶导数(特别有趣,如何处理形式参数)?还有其他可能不清楚的案例吗?
答案 0 :(得分:1)
我建议你的参数是符号表达式,它们知道如何响应导数,并让所有操作都采用函数和返回函数。然后,您将获得一个知道如何表示为派生的最终表达式。此外,您可以在稍后执行偏导数等操作,因为您具有符号表达式。
有关我的意思的真实示例,请参阅http://www.elem.com/~btilly/kelly-criterion/js/advanced-math.js以获取我为解决JavaScript中的微积分问题而编写的库,并在http://www.elem.com/~btilly/kelly-criterion/betting-returns2.html的源代码中搜索“如果请求优化”看看我是如何使用它的。请参阅http://www.elem.com/~btilly/kelly-criterion/,了解我编写该代码的原因。
在那个例子中,我当然没有使用中缀符号。但这是一个标准的解析问题,我认为你知道如何解决。