//f(x) = c*x^y => f'(x) = c*y*x^y-1 c,y - constant private static Expression GetDerivativeOfParametr(Expression function) { if (function is ParameterExpression) { return(Expression.Constant(1d)); } var functionFeatures = FunctionFeatures.GetFeatures(function as BinaryExpression); return(Expression.Multiply( Expression.Constant(functionFeatures.Constant * functionFeatures.Pow), Expression.Call(null, typeof(Math).GetMethod("Pow"), x, Expression.Constant((functionFeatures.Pow - 1))))); }