区分中缀形式语言功能

时间:2014-09-29 07:32:42

标签: algorithm function math symbolic-math differentiation

我有一个源文件之类(不失一般性(仅用于描述可能的语法)):

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

是否有任何可以使用的通用算法实现与上述一起使用?如何处理高阶导数(特别有趣,如何处理形式参数)?还有其他可能不清楚的案例吗?

1 个答案:

答案 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/,了解我编写该代码的原因。

在那个例子中,我当然没有使用中缀符号。但这是一个标准的解析问题,我认为你知道如何解决。