public static double Convolution(double x, FunctionLib.Function f, FunctionLib.Function g, int GridSize, double a) { Vector grid = Vector.CreateUniformGrid(GridSize, a, x); Vector fg = new Vector(GridSize); double h = grid[1] - grid[0]; for (int i = 0; i < GridSize; i++) { fg[i] = f(grid[i]) * g(x - grid[i]); } return(Integrate.Simpson(fg.ToArray, h)); }
public static double Convolution(double x, FunctionLib.Function f, FunctionLib.Function g, Grid grid) { int GridSize = grid.Count; Vector fg = new Vector(GridSize); double h = grid[1] - grid[0]; for (int i = 0; i < GridSize; i++) { fg[i] = f(grid[i]) * g(x - grid[i]); } return(Integrate.Simpson(fg.ToArray, h)); }