Beispiel #1
0
        public void TestMultiplicationByConstant()
        {
            Symbol y = new Symbol("y");
            Symbol x = new Symbol("x");

            var expr = y <= 4 * x;
            var ddx  = new DerivativeSymbol(y) <= 4;

            Assert.AreEqual(ddx, expr.Differentiate(x).Simplify());
        }
Beispiel #2
0
        public void TestChainRule()
        {
            Symbol y = new Symbol("y");
            Symbol x = new Symbol("x");

            var expr = y <= Trig.Sin(x);
            var dx   = new DerivativeSymbol(y) <= Trig.Cos(x) * 1;

            Assert.AreEqual(dx, expr.Differentiate(x).Simplify());
        }
Beispiel #3
0
        public void TestDifferenceRule()
        {
            Symbol y = new Symbol("y");
            Symbol x = new Symbol("x");

            var expr = y <= x - 5;
            var ddx  = new DerivativeSymbol(y) <= 1;

            Assert.AreEqual(ddx, expr.Differentiate(x).Simplify());
        }
Beispiel #4
0
        public void TestPowerRule()
        {
            Symbol y = new Symbol("y");
            Symbol x = new Symbol("x");

            var expr = y <= (x ^ 2);
            var ddx  = new DerivativeSymbol(y) <= 2 * (x ^ 1);

            Assert.AreEqual(ddx, expr.Differentiate(x).Simplify());
        }
Beispiel #5
0
        public void TestQuotientRule()
        {
            Symbol z = new Symbol("z");
            Symbol y = new Symbol("y");
            Symbol x = new Symbol("x");

            var expr = y <= x / z;
            var ddx  = new DerivativeSymbol(y) <= (1 * z - new DerivativeSymbol(z) * x) / (z * z);

            Assert.AreEqual(ddx, expr.Differentiate(x).Simplify());
        }
Beispiel #6
0
        public void TestProductRule()
        {
            Symbol z = new Symbol("z");
            Symbol y = new Symbol("y");
            Symbol x = new Symbol("x");

            var expr = y <= x * z;
            var ddx  = new DerivativeSymbol(y) <= 1 * z + x * new DerivativeSymbol(z);

            Assert.AreEqual(ddx, expr.Differentiate(x).Simplify());
        }
Beispiel #7
0
 public override bool Equals(object obj)
 {
     return(obj switch {
         DerivativeSymbol expr => expr.baseSymbol.Equals(this.baseSymbol),
         _ => base.Equals(obj)
     });