Beispiel #1
0
        // Definicja operacji mnożenia na nawiasie i stałej.
        public static Nawias operator *(Nawias w1, double s1)
        {
            Nawias Iloczyn = new Nawias(w1.IloscCzynnikow);

            for (int i = 0; i < w1.IloscCzynnikow; i++)
            {
                Iloczyn[i] = w1[i] * s1;
            }

            return(Iloczyn);
        }
Beispiel #2
0
        // Definicja operacji dodawania nawiasu i liczby
        public static Nawias operator +(Nawias w1, double s1)
        {
            Nawias n = new Nawias(w1.IloscCzynnikow == 0 ? 1 : w1.IloscCzynnikow);

            for (int i = 0; i < w1.IloscCzynnikow; i++)
            {
                n[i] = w1[i];
            }

            n[n.IloscCzynnikow - 1] += new Czynnik(false, s1, 1);
            return(n);
        }
Beispiel #3
0
        // Definicja operacji mnożenia na nawiasach
        // W nawiasach znajdują się TYLKO WIELOMIANY W POSTACI OGOLNEJ.
        public static Nawias operator *(Nawias w1, Nawias w2)
        {
            // Potrzebujemy informacji o najwyższym wykładniku,
            // który pojawi się w wynikowym wyrażeniu (bo potrzebujemy
            // zaalokować odpowiednio dużo miejsca)
            int NajwyzszyWykladnik = 1;

            for (int i = 0; i < w1.IloscCzynnikow; i++)
            {
                for (int j = 0; j < w2.IloscCzynnikow; j++)
                {
                    // Interesuje nas mnożenie zmiennych (bo mnożenie
                    // iksów podnosi ich wykładnik!)
                    if (w1[i].CzyZmienna && w2[j].CzyZmienna)
                    {
                        // x^a * x^b = x^(a+b)
                        int NowyWykladnik = w1[i].Wykladnik + w2[j].Wykladnik;
                        if (NowyWykladnik > NajwyzszyWykladnik)
                        {
                            NajwyzszyWykladnik = NowyWykladnik;
                        }
                    }
                }
            }
            // Tworzenie nowej struktury o n+1 czynnikach
            // (pamiętamy o stałych!)
            Nawias Iloczyn = new Nawias(NajwyzszyWykladnik + 1);

            for (int i = 0; i < w1.IloscCzynnikow; i++)
            {
                for (int j = 0; j < w2.IloscCzynnikow; j++)
                {
                    Czynnik c = w1[i] * w2[j];

                    int IndeksWTablicy = NajwyzszyWykladnik;
                    // Zmienne wstawiamy sortując od największej
                    // (na początku) do najmniejszej (na końcu) potęgi
                    if (c.CzyZmienna)
                    {
                        IndeksWTablicy = NajwyzszyWykladnik - c.Wykladnik;
                    }
                    // Sumujemy wynik mnożenia czynników z obu wyrażeń
                    // z odpowiednim czynnikiem z tablicy
                    Iloczyn[IndeksWTablicy] += c;
                }
            }

            return(Iloczyn);
        }
Beispiel #4
0
        // Definicja operacji dodawania nawiasów
        public static Nawias operator +(Nawias w1, Nawias w2)
        {
            // Nowy nawias będzie miał tyle współczynników, ile najdłuższy z dwóch
            Nawias n = new Nawias(Math.Max(w1.IloscCzynnikow, w2.IloscCzynnikow));

            for (int i = 0; i < w1.IloscCzynnikow; i++)
            {
                n[i + (n.IloscCzynnikow - w1.IloscCzynnikow)] += w1[i];
            }
            for (int j = 0; j < w2.IloscCzynnikow; j++)
            {
                n[j + (n.IloscCzynnikow - w2.IloscCzynnikow)] += w2[j];
            }

            return(n);
        }
Beispiel #5
0
        public static void utworzOgolna()
        {
            postacOgolna = new Nawias(0);

            for (int i = 0; i < x.Count; i++)
            {
                Nawias wn = new Nawias(1) + b[i];                   // 1 czynnik - b_n
                for (int m = 1; m <= i; m++)
                {
                    Czynnik c1 = new Czynnik(true, 1, 1),           // zmienna, 1x^1
                            c2 = new Czynnik(false, -x[m - 1], 1);  // stała,   -x_n
                    Nawias n1  = new Nawias(c1, c2);                // (x - x_n)

                    wn *= n1;
                }
                postacOgolna += wn;
            }
        }