private ISymbolicExpressionTreeNode GenTreeShiftStdDist(string variable, double m_org, double s_org, double m_tar, double s_tar) { // x - m_org var substractionNode = new Subtraction().CreateTreeNode(); var xNode = CreateVariableTreeNode(variable, "x"); var m_orgNode = CreateConstantTreeNode("m_org", m_org); substractionNode.AddSubtree(xNode); substractionNode.AddSubtree(m_orgNode); // (x - m_org) / s_org var divisionNode = new Division().CreateTreeNode(); var s_orgNode = CreateConstantTreeNode("s_org", s_org); divisionNode.AddSubtree(substractionNode); divisionNode.AddSubtree(s_orgNode); // ((x - m_org) / s_org ) * s_tar var multiplicationNode = new Multiplication().CreateTreeNode(); var s_tarNode = CreateConstantTreeNode("s_tar", s_tar); multiplicationNode.AddSubtree(divisionNode); multiplicationNode.AddSubtree(s_tarNode); // ((x - m_org) / s_org ) * s_tar + m_tar var additionNode = new Addition().CreateTreeNode(); var m_tarNode = CreateConstantTreeNode("m_tar", m_tar); additionNode.AddSubtree(multiplicationNode); additionNode.AddSubtree(m_tarNode); return(additionNode); }
private ISymbolicExpressionTreeNode GenTreeDiv_1_x() { // 1 / x var divNode = new Division().CreateTreeNode(); var oneNode = CreateConstantTreeNode("1", 1.0); var xNode = CreateVariableTreeNode(column, "x"); divNode.AddSubtree(oneNode); divNode.AddSubtree(xNode); return(divNode); }
private ISymbolicExpressionTreeNode GenerateInverseModelForLinearTransformation() { var linearTransformation = (LinearTransformation)transformation; var kValue = linearTransformation.Multiplier; var dValue = linearTransformation.Addend; // x - d var substractionNode = new Subtraction().CreateTreeNode(); var dNode = CreateConstantTreeNode("d", dValue); var xNode = CreateVariableTreeNode(column, "x"); substractionNode.AddSubtree(xNode); substractionNode.AddSubtree(dNode); // ( x - d ) / k var divisionNode = new Division().CreateTreeNode(); var kNode = CreateConstantTreeNode("k", kValue); divisionNode.AddSubtree(substractionNode); divisionNode.AddSubtree(kNode); return(divisionNode); }