python 函数组合.
额,是看http://www.maths.lth.se/na/courses/NUMA21/ 中看到的.
首先我们定义个函数类如下.
class Function(object): def __init__(self,f): self.f = f def __call__(self,x): return self.f(x)
嗯,很简单,就是把一个函数拖进来而已.调用也简单.如下
但是如果把上面的函数稍稍扩展下就很好玩了.完整如下:
class Function(object): def __init__(self,f): self.f = f def __call__(self,x): return self.f(x) def __add__(self,g): def sum(x): return self(x) + g(x) return Function(sum) def __mul__(self,g): def prod(x): return self.f(x) * g(x) return Function(prod) def __radd__(self,g): return self + g def __rmul__(self,g): return self * g
中间也没什么特别NX的代码.都是很简单的.但是组合起来就好玩了.在积分上的应用.
如果是积分和.如 $\int _0^{2 \pi }\sin(x) + \cos(x) dx = \int _0^{2 \pi }\sin(x) dx + \int _0^{2 \pi }\cos(x) dx$也许不会有什么问题.但是乘法就不同了.$\int _0^{2 \pi }\sin(x) \times \cos(x) dx = \int _0^{2 \pi }\sin(x) dx \times \int _0^{2 \pi }\cos(x) dx (?)$.
使用Function就可以很自然地写出这类积分,测试代码如下.(其中需要Numpy和Scipy的支持).
好了睡觉先..