Jan Górski
Guest
Wed Mar 10, 2010 7:45 pm
Pewien czas temu założyłem wątek na grupie z pytaniem jak obliczyć
potencjały w dowolnej sieci rezystorów. Problem był o tyle trudny, że
sieć mogła być dowolna i zmienna w czasie. Problem ten miał być
dostosowany do obliczeń praktycznych w programie symulacyjnym, więc
powinien być prosty w implementacji.
Zdecydowałem się na iteracyjny algorytm, korzystający z prawa
ciągłości strumienia. Kluczem jest sprawdzenie, czy w każdym węźle
sieci tyle samo wpływa, co wypływa i obliczenie korekty. W kilku
krokach osiąga się stabilne rozwiązanie.
Rozwiązanie nie daje dokładnego wyniku, natomiast jest bardzo łatwe do
zaimplementowania. Algorytm zajął mi niewiele więcej jak 30 linijek
( w C ).
Napisałem takiego PDFka, jeśli ktoś ma ochotę, może sobie przeczytać.
Opisane tam jest dokładniej "o co chodzi". Dwie metody zostały
wspomniane w pdf, ale w praktyce bazują na tym samym.
http://gdlpogoda.republika.pl/works/obliczaniePotencjalowSieci.pdf
J.F.
Guest
Wed Mar 10, 2010 7:45 pm
Użytkownik "Konop" <konoppo@gazeta.pl> napisał
Quote:
Podszedlem podobnie - [...] .. ale nauczka - potrafi sie
"zakleszczyc" bledny uklad.
To zakleszczenie można łatwo wyeliminować... wystarczy określić
maksymalną liczbę kroków, jeśli po niej wyniki nie mieszczą się w
założonym przedziale błędów - algorytm wraca na początek, losuje
od nowa i próbuje raz jeszcze... po X losowaniach stwierdza, że
się poddaje...
Jasne, można wymyślić bardziej zaawansowane metody, ale skoro
główny algorytm ma 30 linijek, to jego "zabezpieczenie" nie może
mieć więcej, jak 30



...
Alez moze, moze :-)
Dodatkowy problem - czy wystarczy praktyka autora ze algorytm w
koncu oblicza poprawne wartosci, czy powinien przedstawic formalny
dowod zbieznosci metody.
Bo wcale nie musi byc zbiezna :-)
J.
Konop
Guest
Wed Mar 10, 2010 7:45 pm
Quote:
Podszedlem podobnie - rozrzucamy punkty losowo, liczymy odleglosci
miedzy parami punktow - i zblizamy lub oddalamy od siebie w zaleznosci
od wyniku.
I tak do skutku.
Tez cos 30 linijek tak naprawde, widac jak dziala .. ale nauczka -
potrafi sie "zakleszczyc" bledny uklad.
To zakleszczenie można łatwo wyeliminować... wystarczy określić
maksymalną liczbę kroków, jeśli po niej wyniki nie mieszczą się w
założonym przedziale błędów - algorytm wraca na początek, losuje od nowa
i próbuje raz jeszcze... po X losowaniach stwierdza, że się poddaje...
Jasne, można wymyślić bardziej zaawansowane metody, ale skoro główny
algorytm ma 30 linijek, to jego "zabezpieczenie" nie może mieć więcej,
jak 30



...
--
Pozdrawiam
Konop
J.F.
Guest
Wed Mar 10, 2010 7:45 pm
Użytkownik "Jan Górski" <gradlog@o2.pl> napisał w
Quote:
Pewien czas temu założyłem wątek na grupie z pytaniem jak obliczyć
potencjały w dowolnej sieci rezystorów. Problem był o tyle trudny,
[...]
Zdecydowałem się na iteracyjny algorytm, korzystający z prawa
ciągłości strumienia. Kluczem jest sprawdzenie, czy w każdym węźle
sieci tyle samo wpływa, co wypływa
Jest to tez podstawa w metodzie potencjalów wezłowych.
Tylko ona dalej odwraca macierz :-)
Quote:
i obliczenie korekty. W kilku krokach osiąga się stabilne
rozwiązanie.
No coz, niedawno taki problemik mnie zainteresowal:
mamy N punktow na plaszczyznie, i podane odleglosci miedzy nimi.
Znalezc wspolrzedne punktow.
Podszedlem podobnie - rozrzucamy punkty losowo, liczymy odleglosci
miedzy parami punktow - i zblizamy lub oddalamy od siebie w
zaleznosci od wyniku.
I tak do skutku.
Tez cos 30 linijek tak naprawde, widac jak dziala .. ale nauczka -
potrafi sie "zakleszczyc" bledny uklad.
O rozwiazywaniu numerycznym w poprzednim wieku napisano mase, ale
teraz przeczytac to i sformulowac wszystkie warunki to za duzo
roboty :-)
J.
Konop
Guest
Wed Mar 10, 2010 8:13 pm
Quote:
Dodatkowy problem - czy wystarczy praktyka autora ze algorytm w koncu
oblicza poprawne wartosci, czy powinien przedstawic formalny dowod
zbieznosci metody.
Bo wcale nie musi byc zbiezna
Formalny dowód - prędzej czy później wylosuje wartości, które będą na
starcie poprawne i algorytm wyjdzie od razu ;D...
Nobla poproszę

...
--
Pozdrawiam
Konop
J.F.
Guest
Thu Mar 11, 2010 10:42 am
Użytkownik "Konop" <konoppo@gazeta.pl> napisał w wiadomości
news:hn8r1h$b68$1@inews.gazeta.pl...
Quote:
Dodatkowy problem - czy wystarczy praktyka autora ze algorytm w
koncu oblicza poprawne wartosci, czy powinien przedstawic
formalny dowod zbieznosci metody.
Bo wcale nie musi byc zbiezna :-)
Formalny dowód - prędzej czy później wylosuje wartości, które
będą na starcie poprawne i algorytm wyjdzie od razu ;D...
Nobla poproszę

...
ale czy to bedzie szybciej niz czas zycia ukladu Slonecznego ? :-)
Ewentualnie np czy wymagana ilosc bitow zmiennej pseudolosowej jest
mniejsza niz ilosc elektronow we Wszechswiecie, choc akurat to
latwo obalic, no i wydaje sie ze nie :-)
J.
P.S. do tego sie moga nadac algorytmy genetyczne.