eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingrzadkie dane do układu równań liniowych › Re: rzadkie dane do układu równań liniowych
  • Data: 2010-09-06 16:26:02
    Temat: Re: rzadkie dane do układu równań liniowych
    Od: Mariusz Marszałkowski <m...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 6 Wrz, 17:33, bartekltg <b...@g...com> wrote:
    > Ile jest wektorów? powiedzmy n >> N.
    Będą generowane podczas monitorowania stanu pewnego
    algorytmu. Mam do wyboru, albo mniej i
    dokładniejsze, albo więcej mniej dokładne. Powiedzmy
    że N = n/1000.

    > Rozumiem, ze podział na cześci jest stały.
    Tak, każdy wektor w każdej części ma dokładnie jedną
    jedynkę i reszta zera.

    > > Muszę ułożyć pełny układ równań, czy da się
    > > jakoś prościej/szybciej albo na mniejszej pamięci?
    >
    > Idzmy po lini najmniejszego oporu.
    > M*x=f .
    > f to wektor pomairow F(), M to macierz złozona
    > z leżących wektorów V ma rozmiar (n*N),
    > x to wektor parametrow a_i.
    >
    > Rownanie normalne to A' A x= A' b
    >
    > Macierz A'A ma rozmair tylko N*N i jest szybka do policzenia
    A jeśli N jest równe milion? :)

    > Pewnie da się wyciagnąc wiecej, to na szybko.
    > Napisz, ile tych wektorkow i jakie to są konkretnie liczby.

    Rozmiaru zadania jeszcze nie znam, najpierw zrobię na małym
    rozmiarze, sprawdzę co się dzieje, zrobię na większym
    znów sprawdzę, itd. Dane są z monitoringu pracy algorytmu, więc
    po roku mogę ich mieć nawet cały dysk.

    Oryginalny wektor ma niecałe 100 wartości ze małego zbioru
    liczb całkowitych, np. <-7,+7>. Wektor ten będzie mapowany
    przy pomocy nieliniowej funkcji w dużo większy wektor
    zero-jedynkowy o takich własnościach jak napisałem - tylko
    jedna jedynka w każdej części.

    Sprawdziłem algorytm zachłanny na losowych zerach i jedynkach
    ( z zachowaniem jednej jedynki w każdej części ). Na kilku zbiorach
    dał rozwiązanie gorsze od optymalnego o 0.5%. Zrobiłem mniej/więcej
    tak:
    1) Wszystkie współczynniki a_i <-- 0
    2) j <--0
    2) Rozwiąż układ tylko dla grupy j
    3) Odejmij do żądanej wartości F(x) -= suma a_i * v_i : j*ilosc_grup
    <= i <= (j+1)*ilosc_grup
    4) skocz 2 jeśli j < ilosc_grup.

    Pozdrawiam

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: