use*_*715 4 transformation derivative
让我们假设您可以将程序表示为数学函数,这是可能的.该函数的一阶导数的程序表示如何?有没有办法将程序转换为"衍生"形式,这是否有意义?
是的,它确实有意义,它被称为自动微分.有一两个实验编译器可以做到这一点,例如NAGware的Differentiation Enabled Fortran编译器技术.关于这个主题有很多研究论文.我建议你去谷歌搜索.
首先,尝试获得纯函数的导数(一个不影响外部状态并为每个输入返回完全相同的输出)是有意义的.其次,许多编程语言的类型系统涉及许多步骤函数(例如整数),这意味着你必须让你的程序在连续函数方面工作才能获得有效的一阶导数.第三,获得任何函数的导数包括将其分解并以符号方式对其进行操作.因此,如果不了解函数的运算方式,就无法得到函数的导数.这可以通过反思来实现.
如果编程语言支持闭包(即嵌套函数和将函数放入变量并返回它们的能力),则可以创建派生近似函数.以下是来自http://en.wikipedia.org/wiki/Closure_%28computer_science%29的JavaScript示例:
function derivative(f, dx) {
return function(x) {
return (f(x + dx) - f(x)) / dx;
};
}
Run Code Online (Sandbox Code Playgroud)
因此,你可以说:
function f(x) { return x*x; }
f_prime = derivative(f, 0.0001);
Run Code Online (Sandbox Code Playgroud)
在这里,f_prime将近似function(x) {return 2*x;}
如果编程语言实现了高阶函数和足够的代数,则可以在其中实现实数导数函数.那真的很酷.
| 归档时间: |
|
| 查看次数: |
1183 次 |
| 最近记录: |