Example #1
0
        double Rectangle(ExpressionParameters parameters)
        {
            if (parameters == null)
                parameters = new ExpressionParameters ();

            var result = 0.0M;
            var left = (decimal)(double)this.Left.Calculate (parameters);
            var right = (decimal)(double)this.Right.Calculate (parameters);

            if (right <= left)
                throw new InvalidOperationException ("Invalid Intergral-Bounds");

            var n = 1000;    // number of rectangles
            var dx = (right - left) / (decimal)n;

            var param = default(Parameter);
            foreach (var p in parameters.Parameters.Collection) {
                if (p.Key == this.Variable.Name) {
                    param = p;
                    break;
                }
            }
            if (param == null) {
                param = new Parameter (
                    this.Variable.Name, 0, ParameterType.Normal);

                parameters.Parameters.Add (param);
            }
            for (var x = left; x <= right; x += dx) {
                param.Value = (double)x;
                var z = (double)this.Body.Calculate (parameters);
                result += (dx * (decimal)z);
            }
            return (double)result;
        }
Example #2
0
        double Simpson(ExpressionParameters parameters)
        {
            if (parameters == null)
                parameters = new ExpressionParameters ();

            var a = (double)this.Left.Calculate (parameters);
            var b = (double)this.Right.Calculate (parameters);

            if (b <= a)
                throw new InvalidOperationException ("Invalid Intergral-Bounds");

            var n = 10000;    // number of rectangles
            var h = (b - a) / (double)n;

            var param = default(Parameter);
            foreach (var p in parameters.Parameters.Collection) {
                if (p.Key == this.Variable.Name) {
                    param = p;
                    break;
                }
            }
            if (param == null) {
                param = new Parameter (
                    this.Variable.Name, 0, ParameterType.Normal);

                parameters.Parameters.Add (param);
            }

            var sum = 0.0;
            for (var i = 1; i <= n - 3; i = i + 2) {
                param.Value = a + i * h;
                sum += (double)this.Body.Calculate (parameters);
            }

            param.Value = a + (n - 1) * h;
            sum += (double)this.Body.Calculate (parameters);
            sum *= 4;

            var sum2 = 0.0;
            for (var i = 2; i <= n - 4; i += 2) {
                param.Value = a + i * h;
                sum2 += (double)this.Body.Calculate (parameters);
            }

            param.Value = a + (n - 2) * h;
            sum2 += (double)this.Body.Calculate (parameters);
            sum2 *= 2;

            sum += sum2;
            param.Value = a;
            sum += (double)this.Body.Calculate (parameters);

            param.Value = b;
            sum += (double)this.Body.Calculate (parameters);

            return Math.Round ( h / 3 * sum, 5 );
        }
Example #3
0
 public VariableViewModel(Parameter parameter)
 {
     this.parameter = parameter;
 }