private void Defuzzificate() { Func <double, double> numeratorSubFunction = (x) => x *JointFunctions.GetValue(x); Func <double, double> denumeratorSubFunction = (x) => JointFunctions.GetValue(x); double max = JointFunctions.MaxInputValue; double min = JointFunctions.MinInputValue; // Integrate! double numerator = TrapezoidalRule.Integrate(numeratorSubFunction, min, max, steps: 100); double denumerator = TrapezoidalRule.Integrate(denumeratorSubFunction, min, max, steps: 100); Output = numerator / denumerator; }
protected override double Function(double x) { return(JointFunctions.Max(f => f.GetValue(x))); }