我用 C# 编写了一个函数来进行数值微分。它看起来像这样:
public double Diff(double x) { double h = 0.0000001; return (Function(x + h) - Function(x)) / h; }
我希望能够传入任何函数,例如:
public double Diff(double x, function f) { double h = 0.0000001; return (f(x + h) - f(x)) / h; }
我认为代表可以做到这一点(也许?),但我不确定如何使用它们。
使用上面提到的 Func 是可行的,但也有代理执行相同的任务并在命名中定义意图:
public delegate double MyFunction(double x); public double Diff(double x, MyFunction f) { double h = 0.0000001; return (f(x + h) - f(x)) / h; } public double MyFunctionMethod(double x) { // Can add more complicated logic here return x + 10; } public void Client() { double result = Diff(1.234, x => x * 456.1234); double secondResult = Diff(2.345, MyFunctionMethod); }