Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;运行前符号微分_C++_Templates_Symbolic Math - Fatal编程技术网

C++ C++;运行前符号微分

C++ C++;运行前符号微分,c++,templates,symbolic-math,C++,Templates,Symbolic Math,假设我想实现一个函数f(x)的基于梯度下降的优化器, 它是简单函数的组合:+,*,sin,cos(省略/为了简单) 有没有一种方法,使用模板象征性地计算导数并生成函数f'(x) 在C++中,使用函数和它在运行时的梯度来优化它。 我对符号数学很熟悉,所以这不是问题的重点。 我可以编写一个解析器并将函数作为字符串输入,在运行时动态扩展它,但特别是对于更复杂的函数,这可能会很慢 如果有一种方法可以在编译时生成函数,那就太棒了。您可以看到。然而,如果您不习惯语法,语法将是一个棘手的问题,您可以通过con

假设我想实现一个函数f(x)的基于梯度下降的优化器, 它是简单函数的组合:+,*,sin,cos(省略/为了简单)

有没有一种方法,使用模板象征性地计算导数并生成函数f'(x) 在C++中,使用函数和它在运行时的梯度来优化它。 我对符号数学很熟悉,所以这不是问题的重点。 我可以编写一个解析器并将函数作为字符串输入,在运行时动态扩展它,但特别是对于更复杂的函数,这可能会很慢


如果有一种方法可以在编译时生成函数,那就太棒了。

您可以看到。然而,如果您不习惯语法,语法将是一个棘手的问题,您可以通过
constexpr
对象和运算符使它变得更好。也许您可以创建自己的预处理器程序?类似于这里为您描述的内容,您可能希望在web上搜索“自动差异化”,尤其是cppad。您可以看到。然而,如果您不习惯语法,语法将是一个棘手的问题,您可以通过
constexpr
对象和运算符使它变得更好。也许您可以创建自己的预处理器程序?您可能希望在web上搜索“自动差异化”,尤其是cppad。