public void ObliczDeltaZy(Rozklad P) { if (oszacowana == false) { _delta = new double[aWiazka.V + 1]; sStruktury.obliczSigmy(); oszacowana = true; } if (_Y == null) { throw (new Exception("Brak Y")); } for (int n = 0; n <= aWiazka.V; n++) { _delta[n] = 0; double mian = 0; for (int i = 0; i < aWiazka.m; i++) { trClass klasaTemp = aWiazka.ListaKlasRuchu[i]; if (klasaTemp.progiKlasy == null) { int t = aWiazka.ListaKlasRuchu[i].t; if (n - t >= 0) { _delta[n] += (_delta[n - t] * klasaTemp.at * klasaTemp.sigmaZgl(_Y[i, n - t]) * sStruktury[i, n - t] * P[n - t]); mian += (klasaTemp.at * klasaTemp.sigmaZgl(_Y[i, n - t]) * P[n - t]); } else { _delta[n] += (klasaTemp.at); mian += (klasaTemp.at); } } else { for (int nrPrzedz = 0; nrPrzedz < klasaTemp.progiKlasy.liczbaPrzedziałow; nrPrzedz++) { int t = klasaTemp.progiKlasy[nrPrzedz].t; double at = klasaTemp.atProgiPrzedzialu(nrPrzedz); if (n - t >= 0) { //jeśli przedziały są różne, to dla tego przedziału nie ma przejścia double sigma_T = klasaTemp.sigmaZgl(_Y[i, n - t]); double sigma_S = sStruktury[i, n - t]; if (klasaTemp.progiKlasy.nrPrzedzialu(n - t) == nrPrzedz) { _delta[n] += (_delta[n - t] * at * sigma_T * sigma_S * P[n - t]); } mian += (at * P[n - t] * sigma_T); } else { if (klasaTemp.progiKlasy.nrPrzedzialu(n - t) == nrPrzedz) { _delta[n] += (at); } mian += (at); } } } } if (mian != 0) { _delta[n] /= mian; } else { _delta[n] = 1; } } }
public double Oblicz(Rozklad P) { _Y.Inicjalizacja(); _delta = new double[aWiazka.V + 1]; oszacowana = true; sStruktury.obliczSigmy(); for (int n = 0; n <= aWiazka.V; n++) { _delta[n] = 0; double mian = 0; for (int i = 0; i < aWiazka.m; i++) { trClass klasaTemp = aWiazka.ListaKlasRuchu[i]; if (klasaTemp.progiKlasy == null) { int t = klasaTemp.t; if (n - t >= 0) { _delta[n] += (_delta[n - t] * klasaTemp.at * sStruktury[i, n - t] * P[n - t]); mian += (klasaTemp.at * P[n - t]); } else { _delta[n] += (klasaTemp.at); mian += (klasaTemp.at); } } else { for (int nrPrzedz = 0; nrPrzedz < klasaTemp.progiKlasy.liczbaPrzedziałow; nrPrzedz++) { int t = klasaTemp.progiKlasy[nrPrzedz].t; double at = klasaTemp.atProgiPrzedzialu(nrPrzedz); if (n - t >= 0) { //jeśli przedziały są różne, to dla tego przedziału nie ma przejścia if (klasaTemp.progiKlasy.nrPrzedzialu(n - t) == nrPrzedz) { _delta[n] += (_delta[n - t] * at * sStruktury[i, n - t] * P[n - t]); } mian += (at * P[n - t]); } else { if (klasaTemp.progiKlasy.nrPrzedzialu(n - t) == nrPrzedz) { _delta[n] += (at); } mian += (at); } } } } if (mian != 0) { _delta[n] /= mian; } else { _delta[n] = 0; } } return(_Y.epsilon); }