public void ExecuteTest5() { var complex = new Complex(-3, 2); var exp = new Pow(new ComplexNumber(complex), new Number(10)); Assert.Equal(Complex.Pow(complex, 10), exp.Execute()); }
public void PartialDerivativeTest2() { // (yx) ^ 3 IExpression exp = new Pow(new Mul(new Variable("y"), new Variable("x")), new Number(3)); IExpression deriv = exp.Differentiate(new Variable("y")); Assert.AreEqual("(1 * x) * (3 * ((y * x) ^ (3 - 1)))", deriv.ToString()); }
public void DerivativeTest3() { // x ^ 3 Variable x = new Variable("x"); Number num1 = new Number(3); IExpression exp = new Pow(x, num1); IExpression deriv = exp.Differentiate(); Assert.AreEqual("1 * (3 * (x ^ (3 - 1)))", deriv.ToString()); num1.Value = 4; Assert.AreEqual("x ^ 4", exp.ToString()); Assert.AreEqual("1 * (3 * (x ^ (3 - 1)))", deriv.ToString()); // 2 ^ (3x) Number num2 = new Number(2); num1 = new Number(3); Mul mul = new Mul(num1, x.Clone()); exp = new Pow(num2, mul); deriv = exp.Differentiate(); Assert.AreEqual("(ln(2) * (2 ^ (3 * x))) * (3 * 1)", deriv.ToString()); num1.Value = 4; Assert.AreEqual("2 ^ (4 * x)", exp.ToString()); Assert.AreEqual("(ln(2) * (2 ^ (3 * x))) * (3 * 1)", deriv.ToString()); }
public void DerivativeTest1() { IExpression exp = new Pow(new Variable("x"), new Number(3)); IExpression deriv = exp.Differentiate(); Assert.AreEqual("1 * (3 * (x ^ (3 - 1)))", deriv.ToString()); }
public void DerivativeTest2() { // 2 ^ (3x) IExpression exp = new Pow(new Number(2), new Mul(new Number(3), new Variable("x"))); IExpression deriv = exp.Differentiate(); Assert.AreEqual("(ln(2) * (2 ^ (3 * x))) * (3 * 1)", deriv.ToString()); }
public void ExecuteTest4() { var complex1 = new Complex(-3, 2); var complex2 = new Complex(-4, 5); var exp = new Pow(new ComplexNumber(complex1), new ComplexNumber(complex2)); Assert.Equal(Complex.Pow(complex1, complex2), exp.Execute()); }
public void MulSameVar10() { // 2x * -2x var var = new Variable("x"); var mul = new Mul(new Mul(new Number(2), var), new Mul(new Number(0.5), var)); var expected = new Pow(var, new Number(2)); SimpleTest(mul, expected); }
public void PowPartialDerivativeTest3() { var exp = new Pow(new Variable("x"), new Number(3)); var deriv = Differentiate(exp, new Variable("y")); Assert.Equal("0", deriv.ToString()); }
public void PowDerivativeTest3() { // x ^ 3 var x = new Variable("x"); var num1 = new Number(3); var exp = new Pow(x, num1); var deriv = Differentiate(exp); Assert.Equal("1 * 3 * (x ^ (3 - 1))", deriv.ToString()); num1.Value = 4; Assert.Equal("x ^ 4", exp.ToString()); Assert.Equal("1 * 3 * (x ^ (3 - 1))", deriv.ToString()); // 2 ^ (3x) var num2 = new Number(2); num1 = new Number(3); var mul = new Mul(num1, x.Clone()); exp = new Pow(num2, mul); deriv = Differentiate(exp); Assert.Equal("ln(2) * (2 ^ (3 * x)) * 3 * 1", deriv.ToString()); num1.Value = 4; Assert.Equal("2 ^ (4 * x)", exp.ToString()); Assert.Equal("ln(2) * (2 ^ (3 * x)) * 3 * 1", deriv.ToString()); }
public void PowDerivativeTest1() { var exp = new Pow(new Variable("x"), new Number(3)); var deriv = Differentiate(exp); Assert.Equal("1 * 3 * (x ^ (3 - 1))", deriv.ToString()); }
/// <summary> /// Differentiates the specified expression. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> /// <returns>Returns the derivative.</returns> protected virtual IExpression Root(Root expression, Variable variable) { var div = new Div(new Number(1), expression.Right.Clone()); var pow = new Pow(expression.Left.Clone(), div); return Pow(pow, variable); }
/// <summary> /// Differentiates the specified expression. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> /// <returns>Returns the derivative.</returns> protected virtual IExpression Div(Div expression, Variable variable) { var first = Parser.HasVar(expression.Left, variable); var second = Parser.HasVar(expression.Right, variable); if (first && second) { var mul1 = new Mul(_Differentiate(expression.Left.Clone(), variable), expression.Right.Clone()); var mul2 = new Mul(expression.Left.Clone(), _Differentiate(expression.Right.Clone(), variable)); var sub = new Sub(mul1, mul2); var inv = new Pow(expression.Right.Clone(), new Number(2)); var division = new Div(sub, inv); return division; } if (first) { return new Div(_Differentiate(expression.Left.Clone(), variable), expression.Right.Clone()); } if (second) { var mul2 = new Mul(expression.Left.Clone(), _Differentiate(expression.Right.Clone(), variable)); var unMinus = new UnaryMinus(mul2); var inv = new Pow(expression.Right.Clone(), new Number(2)); var division = new Div(unMinus, inv); return division; } return new Number(0); }
/// <summary> /// Differentiates the specified expression. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> /// <returns>Returns the derivative.</returns> protected virtual IExpression Arccot(Arccot expression, Variable variable) { var involution = new Pow(expression.Argument.Clone(), new Number(2)); var add = new Add(new Number(1), involution); var div = new Div(_Differentiate(expression.Argument.Clone(), variable), add); var unMinus = new UnaryMinus(div); return unMinus; }
/// <summary> /// Differentiates the specified expression. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> /// <returns>Returns the derivative.</returns> protected virtual IExpression Arccos(Arccos expression, Variable variable) { var pow = new Pow(expression.Argument.Clone(), new Number(2)); var sub = new Sub(new Number(1), pow); var sqrt = new Sqrt(sub); var division = new Div(_Differentiate(expression.Argument.Clone(), variable), sqrt); var unMinus = new UnaryMinus(division); return unMinus; }
public void PowPartialDerivativeTest3() { IExpression exp = new Pow(new Variable("x"), new Number(3)); IExpression deriv = Differentiate(exp, new Variable("y")); Assert.AreEqual("0", deriv.ToString()); }
/// <summary> /// Differentiates the specified expression. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> /// <returns>Returns the derivative.</returns> protected virtual IExpression Cot(Cot expression, Variable variable) { var sine = new Sin(expression.Argument.Clone()); var involution = new Pow(sine, new Number(2)); var division = new Div(_Differentiate(expression.Argument.Clone(), variable), involution); var unMinus = new UnaryMinus(division); return unMinus; }
/// <summary> /// Differentiates the specified expression. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> /// <returns>Returns the derivative.</returns> protected virtual IExpression Coth(Coth expression, Variable variable) { var sinh = new Sinh(expression.Argument.Clone()); var inv = new Pow(sinh, new Number(2)); var div = new Div(_Differentiate(expression.Argument.Clone(), variable), inv); var unMinus = new UnaryMinus(div); return unMinus; }
/// <summary> /// Differentiates the specified expression. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> /// <returns>Returns the derivative.</returns> protected virtual IExpression Arcsch(Arcsch expression, Variable variable) { var inv = new Pow(expression.Argument.Clone(), new Number(2)); var add = new Add(new Number(1), inv); var sqrt = new Sqrt(add); var abs = new Abs(expression.Argument.Clone()); var mul = new Mul(abs, sqrt); var div = new Div(_Differentiate(expression.Argument.Clone(), variable), mul); var unMinus = new UnaryMinus(div); return unMinus; }
/// <summary> /// Differentiates the specified expression. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> /// <returns>Returns the derivative.</returns> protected virtual IExpression Pow(Pow expression, Variable variable) { if (Parser.HasVar(expression.Left, variable)) { var sub = new Sub(expression.Right.Clone(), new Number(1)); var inv = new Pow(expression.Left.Clone(), sub); var mul1 = new Mul(expression.Right.Clone(), inv); var mul2 = new Mul(_Differentiate(expression.Left.Clone(), variable), mul1); return mul2; } // if (Parser.HasVar(expression.Right, variable)) var ln = new Ln(expression.Left.Clone()); var mul3 = new Mul(ln, expression.Clone()); var mul4 = new Mul(mul3, _Differentiate(expression.Right.Clone(), variable)); return mul4; }
/// <summary> /// Differentiates the specified expression. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> /// <returns>Returns the derivative.</returns> protected virtual IExpression Arcsec(Arcsec expression, Variable variable) { var abs = new Abs(expression.Argument.Clone()); var sqr = new Pow(expression.Argument.Clone(), new Number(2)); var sub = new Sub(sqr, new Number(1)); var sqrt = new Sqrt(sub); var mul = new Mul(abs, sqrt); var div = new Div(_Differentiate(expression.Argument.Clone(), variable), mul); return div; }
/// <summary> /// Differentiates the specified expression. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> /// <returns>Returns the derivative.</returns> protected virtual IExpression Tanh(Tanh expression, Variable variable) { var cosh = new Cosh(expression.Argument.Clone()); var inv = new Pow(cosh, new Number(2)); var div = new Div(_Differentiate(expression.Argument.Clone(), variable), inv); return div; }
/// <summary> /// Differentiates the specified expression. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> /// <returns>Returns the derivative.</returns> protected virtual IExpression Arcsin(Arcsin expression, Variable variable) { var involution = new Pow(expression.Argument.Clone(), new Number(2)); var sub = new Sub(new Number(1), involution); var sqrt = new Sqrt(sub); var division = new Div(_Differentiate(expression.Argument.Clone(), variable), sqrt); return division; }
public void PowDerivativeTest2() { // 2 ^ (3x) var exp = new Pow(new Number(2), new Mul(new Number(3), new Variable("x"))); var deriv = Differentiate(exp); Assert.Equal("ln(2) * (2 ^ (3 * x)) * 3 * 1", deriv.ToString()); }
/// <summary> /// Differentiates the specified expression. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> /// <returns>Returns the derivative.</returns> protected virtual IExpression Arctan(Arctan expression, Variable variable) { var involution = new Pow(expression.Argument.Clone(), new Number(2)); var add = new Add(new Number(1), involution); var div = new Div(_Differentiate(expression.Argument.Clone(), variable), add); return div; }
public void PowPartialDerivativeTest2() { // (yx) ^ 3 var exp = new Pow(new Mul(new Variable("y"), new Variable("x")), new Number(3)); var deriv = Differentiate(exp, new Variable("y")); Assert.Equal("1 * x * 3 * ((y * x) ^ (3 - 1))", deriv.ToString()); }
/// <summary> /// Differentiates the specified expression. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> /// <returns>Returns the derivative.</returns> protected virtual IExpression Arsech(Arsech expression, Variable variable) { var inv = new Pow(expression.Argument.Clone(), new Number(2)); var sub = new Sub(new Number(1), inv); var sqrt = new Sqrt(sub); var mul = new Mul(expression.Argument.Clone(), sqrt); var div = new Div(_Differentiate(expression.Argument.Clone(), variable), mul); var unMinus = new UnaryMinus(div); return unMinus; }
public void MulSameVar1() { // x * x var var = new Variable("x"); var mul = new Mul(var, var); var expected = new Pow(var, new Number(2)); SimpleTest(mul, expected); }
/// <summary> /// Differentiates the specified expression. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> /// <returns>Returns the derivative.</returns> protected virtual IExpression Arsinh(Arsinh expression, Variable variable) { var sqr = new Pow(expression.Argument.Clone(), new Number(2)); var add = new Add(sqr, new Number(1)); var sqrt = new Sqrt(add); var div = new Div(_Differentiate(expression.Argument.Clone(), variable), sqrt); return div; }
public void PowerZero() { var pow = new Pow(new Variable("x"), new Number(0)); var expected = new Number(1); SimpleTest(pow, expected); }
/// <summary> /// Differentiates the specified expression. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> /// <returns>Returns the derivative.</returns> protected virtual IExpression Artanh(Artanh expression, Variable variable) { var sqr = new Pow(expression.Argument.Clone(), new Number(2)); var sub = new Sub(new Number(1), sqr); var div = new Div(_Differentiate(expression.Argument.Clone(), variable), sub); return div; }