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 AddDiffNum_VarSubNum_() { // 2 + (x - 2) var add = new Add(new Number(2), new Sub(new Variable("x"), new Number(2))); var expected = new Variable("x"); SimpleTest(add, expected); }
public DefiniteIntegral( IExpression expression, Variable variable, IExpression left, IExpression right) : base(new[] { expression, variable, left, right }, 4) { }
public void AbsDerivativeTest2() { var num = new Number(2); var x = new Variable("x"); var mul = new Mul(num, x); var exp = new Abs(mul); var deriv = Differentiate(exp); Assert.Equal("2 * 1 * ((2 * x) / abs(2 * x))", deriv.ToString()); num.Value = 3; Assert.Equal("abs(3 * x)", exp.ToString()); Assert.Equal("2 * 1 * ((2 * x) / abs(2 * x))", deriv.ToString()); }
public void DerivativeTest2() { // log(x, 2) Number num = new Number(2); Variable x = new Variable("x"); IExpression exp = new Log(x, num); IExpression deriv = exp.Differentiate(); Assert.AreEqual("1 / (x * ln(2))", deriv.ToString()); num.Value = 4; Assert.AreEqual("log(4, x)", exp.ToString()); Assert.AreEqual("1 / (x * ln(2))", deriv.ToString()); }
public void AbsDerivativeTest2() { Number num = new Number(2); Variable x = new Variable("x"); Mul mul = new Mul(num, x); IExpression exp = new Abs(mul); IExpression deriv = Differentiate(exp); Assert.AreEqual("(2 * 1) * ((2 * x) / abs(2 * x))", deriv.ToString()); num.Value = 3; Assert.AreEqual("abs(3 * x)", exp.ToString()); Assert.AreEqual("(2 * 1) * ((2 * x) / abs(2 * x))", deriv.ToString()); }
public void DerivativeTest3() { Number num = new Number(2); Variable x = new Variable("x"); Mul mul = new Mul(num, x); IExpression exp = new Tan(mul); IExpression deriv = exp.Differentiate(); Assert.AreEqual("(2 * 1) / (cos(2 * x) ^ 2)", deriv.ToString()); num.Value = 5; Assert.AreEqual("tan(5 * x)", exp.ToString()); Assert.AreEqual("(2 * 1) / (cos(2 * x) ^ 2)", deriv.ToString()); }
public void DerivativeTest2() { // lg(2x) Number num = new Number(2); Variable x = new Variable("x"); Mul mul = new Mul(num, x); IExpression exp = new Lg(mul); IExpression deriv = exp.Differentiate(); Assert.AreEqual("(2 * 1) / ((2 * x) * ln(10))", deriv.ToString()); num.Value = 3; Assert.AreEqual("lg(3 * x)", exp.ToString()); Assert.AreEqual("(2 * 1) / ((2 * x) * ln(10))", deriv.ToString()); }
public void DerivativeTest3() { // cot(2x) Number num = new Number(2); Variable x = new Variable("x"); Mul mul = new Mul(num, x); IExpression exp = new Cot(mul); IExpression deriv = exp.Differentiate(); Assert.AreEqual("-((2 * 1) / (sin(2 * x) ^ 2))", deriv.ToString()); num.Value = 3; Assert.AreEqual("cot(3 * x)", exp.ToString()); Assert.AreEqual("-((2 * 1) / (sin(2 * x) ^ 2))", deriv.ToString()); }
public void DerivativeTest2() { // arcsec(2x) Number num = new Number(2); Variable x = new Variable("x"); Mul mul = new Mul(num, x); IExpression exp = new Arcsec(mul); IExpression deriv = exp.Differentiate(); Assert.AreEqual("(2 * 1) / (abs(2 * x) * sqrt(((2 * x) ^ 2) - 1))", deriv.ToString()); num.Value = 4; Assert.AreEqual("arcsec(4 * x)", exp.ToString()); Assert.AreEqual("(2 * 1) / (abs(2 * x) * sqrt(((2 * x) ^ 2) - 1))", deriv.ToString()); }
public void DerivativeTest3() { // exp(2x) Number num = new Number(2); Variable x = new Variable("x"); Mul mul = new Mul(num, x); IExpression exp = new Exp(mul); IExpression deriv = exp.Differentiate(); Assert.AreEqual("(2 * 1) * exp(2 * x)", deriv.ToString()); num.Value = 6; Assert.AreEqual("exp(6 * x)", exp.ToString()); Assert.AreEqual("(2 * 1) * exp(2 * x)", deriv.ToString()); }
public void DerivativeTest3() { // arccos(2x) Number num = new Number(2); Variable x = new Variable("x"); Mul mul = new Mul(num, x); IExpression exp = new Arccos(mul); IExpression deriv = exp.Differentiate(); Assert.AreEqual("-((2 * 1) / sqrt(1 - ((2 * x) ^ 2)))", deriv.ToString()); num.Value = 6; Assert.AreEqual("arccos(6 * x)", exp.ToString()); Assert.AreEqual("-((2 * 1) / sqrt(1 - ((2 * x) ^ 2)))", deriv.ToString()); }
public void DerivativeTest2() { Number num1 = new Number(2); Variable x = new Variable("x"); Mul mul1 = new Mul(num1, x); Number num2 = new Number(3); Mul mul2 = new Mul(num2, x.Clone()); IExpression exp = new Sub(mul1, mul2); IExpression deriv = exp.Differentiate(); Assert.AreEqual("(2 * 1) - (3 * 1)", deriv.ToString()); num1.Value = 5; num2.Value = 4; Assert.AreEqual("(5 * x) - (4 * x)", exp.ToString()); Assert.AreEqual("(2 * 1) - (3 * 1)", deriv.ToString()); }
public void DerivativeTest3() { // (2x) / (3x) Number num1 = new Number(2); Variable x = new Variable("x"); Mul mul1 = new Mul(num1, x); Number num2 = new Number(3); Mul mul2 = new Mul(num2, x.Clone()); IExpression exp = new Div(mul1, mul2); IExpression deriv = exp.Differentiate(); Assert.AreEqual("(((2 * 1) * (3 * x)) - ((2 * x) * (3 * 1))) / ((3 * x) ^ 2)", deriv.ToString()); num1.Value = 4; num2.Value = 5; Assert.AreEqual("(4 * x) / (5 * x)", exp.ToString()); Assert.AreEqual("(((2 * 1) * (3 * x)) - ((2 * x) * (3 * 1))) / ((3 * x) ^ 2)", deriv.ToString()); }
public void MulSecondOne() { var mul = new Mul(new Variable("x"), new Number(1)); var expected = new Variable("x"); SimpleTest(mul, expected); }
public void PowerOne() { var pow = new Pow(new Variable("x"), new Number(1)); var expected = new Variable("x"); SimpleTest(pow, expected); }
public void MulSameVar8() { // 2x * 3x var var = new Variable("x"); var mul = new Mul(new Mul(new Number(2), var), new Mul(new Number(3), var)); var expected = new Mul(new Number(6), new Pow(var, new Number(2))); SimpleTest(mul, expected); }
public void MulSameVar9() { // (x * 2) * (x * 3) var var = new Variable("x"); var mul = new Mul(new Mul(var, new Number(2)), new Mul(var, new Number(3))); var expected = new Mul(new Number(6), new Pow(var, new Number(2))); SimpleTest(mul, expected); }
public void RootOne() { var root = new Root(new Variable("x"), new Number(1)); var expected = new Variable("x"); SimpleTest(root, expected); }
public void MulSameVar11() { // 2x * -3x 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 UnaryMinus(new Pow(var, new Number(2))); SimpleTest(mul, expected); }
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); }
public void MulNegativeRightParamTest1() { // sin(cos(x)) var x = new Variable("x"); var mul = new Mul(new Cos(new Cos(x)), new UnaryMinus(new Sin(x))); var expected = new UnaryMinus(new Mul(new Sin(x), new Cos(new Cos(x)))); SimpleTest(mul, expected); }
public void MulDiff_VarDivNum_MulNum() { // (x / 2) * 2 var mul = new Mul(new Div(new Variable("x"), new Number(2)), new Number(2)); var expected = new Variable("x"); SimpleTest(mul, expected); }
public void SinhArsinh() { var exp = new Sinh(new Arsinh(new Variable("x"))); var expected = new Variable("x"); SimpleTest(exp, expected); }
public void DoubleUnary() { var un = new UnaryMinus(new UnaryMinus(new Variable("x"))); var expected = new Variable("x"); SimpleTest(un, expected); }
public void SecArcsec() { var exp = new Sec(new Arcsec(new Variable("x"))); var expected = new Variable("x"); SimpleTest(exp, expected); }
public void DivSameVars() { var x = new Variable("x"); var div = new Div(x, x); var expected = new Number(1); SimpleTest(div, expected); }
/// <summary> /// Initializes a new instance of the <see cref="Derivative"/> class. /// </summary> /// <param name="expression">The expression.</param> /// <param name="variable">The variable.</param> public Derivative(IExpression expression, Variable variable) : base(new[] { expression, variable }, 2) { }
public void MulDiffNumMul_VarDivNum_() { // 2 * (x / 2) var mul = new Mul(new Number(2), new Div(new Variable("x"), new Number(2))); var expected = new Variable("x"); SimpleTest(mul, expected); }
public void DerivativeTest2() { // 2x Number num = new Number(2); Variable x = new Variable("x"); IExpression exp = new Mul(num, x); IExpression deriv = exp.Differentiate(); Assert.AreEqual("2 * 1", deriv.ToString()); num.Value = 3; Assert.AreEqual("3 * x", exp.ToString()); Assert.AreEqual("2 * 1", deriv.ToString()); }