예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }