Esempio n. 1
0
        public void Agreguj(rSigmaYt agregowany, int V)
        {
            double[][] prDopKomb = rSigmaYt.wyznGamma(this, agregowany, wiazka.sigmy, V);
            niezalezny.Agreguj(agregowany.niezalezny);
            double[] stany = new double[V + 1];
            double   suma  = 0;

            for (int n = 0; n <= V; n++)
            {
                for (int lC = 0; lC <= n; lC++)
                {
                    double tmp = this[lC] * agregowany[n - lC] * prDopKomb[lC][n - lC];
                    suma     += tmp;
                    stany[n] += tmp;
                }
            }
            foreach (trClass klasaR in agregowany.zagregowaneKlasy)
            {
                zagregowaneKlasy.Add(klasaR);
            }
            if (this.V != V)
            {
                zmienDlugosc(V, false);
            }
            for (int n = 0; n <= V; n++)
            {
                this[n] = stany[n] / suma;
            }
        }
 public void Agreguj(Rozklad rB, Rozklad rPB, sigmaPrzyjmZgl sigmy)
 {
     pomocniczy.Agreguj(rB);
     double[] noweStany = new double[_v + 1];
     for (int lA = 0; lA <= _v; lA++)
     {
         if (lA > wiazka.q + tMax)
         {
             break;
         }
         for (int lB = 0; lA + lB <= _v; lB++)
         {
             double gamma = OblGamma(lA, lB, rB.zagregowaneKlasy, sigmy, rPB);
             noweStany[lA + lB] += (stany[lA] * rB[lB] * gamma);
         }
     }
     for (int n = 0; n <= _v; n++)
     {
         stany[n] = noweStany[n];
     }
     foreach (trClass kRuchu in rB.zagregowaneKlasy)
     {
         zagregowaneKlasy.Add(kRuchu);
     }
 }
Esempio n. 3
0
        public void Agreguj(rGammaSigmaYm2 agregowany, int V)
        {
            P.Agreguj(agregowany.P);
            this.liczYprocMarkow(wiazka.sigmy, V, 1);
            agregowany.liczYprocMarkow(wiazka.sigmy, V, 1);

            double[][] prDopKomb = rGammaSigmaYm2.wyznGamma(this, agregowany, wiazka.sigmy, V, yi, agregowany.yi);
            double[]   stany     = new double[V + 1];
            double     suma      = 0;

            for (int n = 0; n <= V; n++)
            {
                for (int lC = 0; lC <= n; lC++)
                {
                    double tmp = this[lC] * agregowany[n - lC] * prDopKomb[lC][n - lC];
                    suma     += tmp;
                    stany[n] += tmp;
                }
            }
            foreach (trClass klasaR in agregowany.zagregowaneKlasy)
            {
                zagregowaneKlasy.Add(klasaR);
            }
            if (this.V != V)
            {
                zmienDlugosc(V, false);
            }
            for (int n = 0; n <= V; n++)
            {
                this[n] = stany[n] / suma;
            }
        }
Esempio n. 4
0
        public Rozklad(Wiazka rozWiazka, trClass klZgloszen, bool procPrzyjmZglZalOdStanu)
        {
            zagregowaneKlasy = new List <trClass>();
            wiazka           = rozWiazka;
            _v = rozWiazka.V;
            if (klZgloszen != null)
            {
                zagregowaneKlasy.Add(klZgloszen);

                if (klZgloszen.progiKlasy == null)
                {
                    stany = klZgloszen.RozkladStanow(rozWiazka, procPrzyjmZglZalOdStanu);
                }
                else
                {
                    Rozklad[] temp = new Rozklad[klZgloszen.progiKlasy.liczbaPrzedziałow];
                    for (int i = 0; i < klZgloszen.progiKlasy.liczbaPrzedziałow; i++)
                    {
                        temp[i] = new Rozklad();
                        temp[i].zagregowaneKlasy = this.zagregowaneKlasy;
                        temp[i]._v     = rozWiazka.V;
                        temp[i].stany  = klZgloszen.RozkladStanow(rozWiazka, i);
                        temp[i].wiazka = rozWiazka;
                    }

                    Rozklad wynik = new Rozklad(temp[0]);
                    for (int i = 1; i < klZgloszen.progiKlasy.liczbaPrzedziałow; i++)
                    {
                        wynik.Agreguj(temp[i]);
                    }
                    this.stany = wynik.stany;
                }
            }
            else
            {
                stany    = new double[_v + 1];
                stany[0] = 1;
                for (int i = 1; i <= _v; i++)
                {
                    stany[i] = 0;
                }
            }
        }