protected override Function ComputePartialValue(IPartialEvaluator evaluator) { IPoint point = evaluator.Point; if (point.ContainsVariable(this)) { // Replace this variable by the specified value. return point[this]; } // This variable isn't replaced by a value. Just keep it. return this; }
protected override Function ComputePartialValue(IPartialEvaluator evaluator) { return Function.Sqrt(f.PartialValue(evaluator)); }
public PartialValueFunction(Function innerFunction, IPartialEvaluator partialEvaluator) { this.innerFunction = innerFunction; this.partialEvaluator = partialEvaluator; }
/// <summary> /// Replaces a number of variables by fixed values. /// </summary> public static Function ComputePartialValue(Function function, IPartialEvaluator evaluator) { return function.ComputePartialValue(evaluator); }
/// <summary> /// Replaces a number of variables by fixed values. Override this to implement. /// </summary> protected virtual Function ComputePartialValue(IPartialEvaluator evaluator) { // Use slow and inefficient implementation using PartialValueFunction by default. Override to provide a more efficient implementation. return new PartialValueFunction(this, evaluator); }
/// <summary> /// Substitutes a number of variables by function values. The chain rule is applied. Returns a function of the remaining variables and the variables introduced implicitly through the substitution. /// </summary> public Function Substitute(IPartialEvaluator evaluator) { throw new NotImplementedException(); //return evaluator.Evaluate(this); }
/// <summary> /// Replaces a number of variables by fixed values. Returns a function of the remaining variables. /// </summary> public Function PartialValue(IPartialEvaluator evaluator) { return evaluator.Evaluate(this); }
protected override Function ComputePartialValue(IPartialEvaluator evaluator) { return this; }
protected override Function ComputePartialValue(IPartialEvaluator evaluator) { return f.PartialValue(evaluator) - g.PartialValue(evaluator); }