Exemple #1
0
    static public Polynome2D MultiplyXYPolygones(Polynome1D xPolygon, Polynome1D yPolygon)
    {
        Polynome2D result = new Polynome2D();

        for (int x = 0; x < xPolygon.termCount; x++)
        {
            Term1D xTerm = xPolygon.terms[x];

            for (int y = 0; y < yPolygon.termCount; y++)
            {
                Term1D yTerm = yPolygon.terms[y];

                Term2D xyTerm = Term2D.MultiplyXYTerms(xTerm, yTerm);

                result += xyTerm;
            }

            result.AddXTerm(xTerm * yPolygon.constant);
        }

        for (int y = 0; y < yPolygon.termCount; y++)
        {
            Term1D yTerm = yPolygon.terms[y];

            result.AddYTerm(yTerm * xPolygon.constant);
        }

        result.m_k = xPolygon.constant * yPolygon.constant;

        return(result);
    }
    public static Polynome1D operator +(Polynome1D a, Polynome1D b)
    {
        Debug.Log("NOT IMPLEMENTED : Polynome1D.Optimize()");
        Polynome1D result = new Polynome1D();

        result.m_xTerms = new List <Term1D>(a.m_xTerms);
        result.m_k      = a.m_k + b.m_k;
        foreach (Term1D xTerm in b.m_xTerms)
        {
            result.Add(xTerm);
        }

        return(result);
    }
Exemple #3
0
    private void CalculateFunction()
    {
        m_polynome2D = new Polynome2D();

        int xCount = m_xValues.Length;
        int yCount = m_yValues.Length;

        // Somme de i = 0 à n de...
        for (int i = 0; i < xCount; i++)
        {
            // Somme de j = 0 à m de...
            for (int j = 0; j < yCount; j++)
            {
                // f(xi,yj)
                float z = m_zValues[i][j];
                // * Li(x) * Lj(y)
                Polynome1D lix = LagrangePolynome(m_xValues, i);
                Polynome1D ljy = LagrangePolynome(m_yValues, j);

                m_polynome2D += z * Polynome2D.MultiplyXYPolygones(lix, ljy);
            }
        }
    }
    public static Polynome1D operator *(Polynome1D a, Polynome1D b)
    {
        Polynome1D result = new Polynome1D();

        foreach (Term1D aTerm in a.m_xTerms)
        {
            foreach (Term1D bTerm in b.m_xTerms)
            {
                result.Add(aTerm * bTerm);
            }

            result.Add(aTerm * b.m_k);
        }

        foreach (Term1D bTerm in b.m_xTerms)
        {
            result.Add(a.m_k * bTerm);
        }

        result.m_k = a.m_k * b.m_k;

        return(result);
    }
Exemple #5
0
    static public Polynome1D LagrangePolynome(List <float> points, int i)
    {
        Polynome1D result = new Polynome1D(1);
        int        n      = points.Count;

        for (int j = 0; j < n; j++)
        {
            if (j == i)
            {
                continue;
            }

            float denom = points[i] - points[j];

            Term1D        term  = new Term1D(1, 1 / denom);
            List <Term1D> terms = new List <Term1D>();
            terms.Add(term);
            Polynome1D polynome = new Polynome1D(terms, -points[j] / denom);

            result *= polynome;
        }

        return(result);
    }