Cytat:Ogólnie błąd numeryczny będzie zdominowany przez błędy wprowadzone
przez dzielania z małymi dzielnikami.
Fatalne dla dokladnosci obliczen numerycznych jest
dodawanie wartosci o przeciwnym znaku lecz niewiele
rozniacych sie co do modulu.
W przypadku omawianej metody eliminacji Gaussa cos
takiego wlasnie moze wystepowac, jezeli nie jest
stosowany "pivoting". Pivoting nie jest potrzebny,
gdy optymalny "piwot" jest od razu na wlasciwym
miejscu -- tzn. dominuja elementy diagonalne.
Cytat:Hej,
Mam pytanie odnosnie algebry liniowej, a dokladniej rozwiazywania rownan
nxn.
Dlatego prosze o podpowiedz, jaki algorytm bedzie najlatwiejszy (dopiero
zaczynam programowac) do implementacji w C.
Pierwsza metoda to wzory Cramera.
Cytat:Hej,
Mam pytanie odnosnie algebry liniowej, a dokladniej rozwiazywania rownan
nxn.
Dlatego prosze o podpowiedz, jaki algorytm bedzie najlatwiejszy (dopiero
zaczynam programowac) do implementacji w C.
Pierwsza metoda to wzory Cramera.
Najbardziej znane Metody ogolne to eliminacja Gaussa (rozklad LU) i
eliminacja zupelna (Gaussa- Jordana). Dla macierzy symetrycznych,
dodatnio okreslonych, mozna zastosowac metoda Cholesky'ego-
Banachiewicza (rozklad LLT) lub LDLT. Metody te sprowadzaja sie do
rozlozenia macierzy wspolczynnikow rownania na macierze trojkatne;
rownanie z macierza trojkatna latwo jest juz rozwiazac.
Dla duzych macierzy mozna stosowac metody iteracyjne, np Jacobiego,
Gaussa- Seidla.
Serdecznie polecam
http://lib-www.lanl.gov/numerical/
znajdziesz tam dosyc dobre omowienie wspomnianych przeze mnie metod,
wraz z implementacja w jezyku C (dosyc ekscentryczna, niestety).
Cytat:Dzieki
Nero
Cytat:
da sie odwrocic metoda podobna jak przy wyznaczniku i metodzie
Gaussa (bylo juz ostatnio - mnozenie wierszy i dodawanie)
tylko operujesz na 2 macierzach jednoczesnie:
Cytat:macierz xy: macierz jednostkowa (tak to sie chyba
nazywalo)
jak chcesz cos takiego rysowac, to sobie ustaw font o stalej
szerokosci znakow, bo wychodzi syf...
Cytat:Do numerycznego odwracania macierzy _nie_ uzywa sie metody eliminacji
Gaussa-Jordana!!! Jest zbyt slaba numerycznie.
Cytat:jak chcesz cos takiego rysowac, to sobie ustaw font o stalej
szerokosci znakow, bo wychodzi syf...
Cytat:
Nie bylo zadnych takich ograniczen co do metody - cos zmyslasz,
Cytat:a ja tylko odpowiedzialem na pytanie i da sie tak wyliczyc...
Cytat:Jezeli TY tak nie liczysz to nie moja sprawa - pytal ktos inny
Cytat:Nastepnym razem nie bede marnowal swoich zdolnosci artystycznych
(przepraszam - syficznych). Chodzilo tylko o zobrazowanie...
Cytat:| da sie odwrocic metoda podobna jak przy wyznaczniku i metodzie
| Gaussa (bylo juz ostatnio - mnozenie wierszy i dodawanie)
| tylko operujesz na 2 macierzach jednoczesnie:Do numerycznego odwracania macierzy _nie_ uzywa sie metody eliminacji
Gaussa-Jordana!!! Jest zbyt slaba numerycznie.
Kaczus/BlaBla & AUG-Lodz
Cytat:| http://prioris.mini.pw.edu.pl/~tjazwins/nauka/ i tam II semestr i metody
| numeryczne sa tam laborki z metod numerycznych, ni pamietam czy to tam
jest co
| chcesz ale powinno byc
tam
i jak przekopiuje bez zrozumienia, to i tak nic to nie da :)
Cytat:
Tak gwoli scislosci to zlozonosc algorytmu rekurencyjnego(korzystajacego
jesli dobrze pamietam z rozwiniec Gauss'a) do obliczenia wyznacznika
macierzy kwdratowej rowna jest n! a to przy 17 daje conajmniej 355 687
428 096 000 mnozen wiec czas 40 minut jest bardzo realny :(( .
Toteż nikt przytomny/rozsądny/po elementarnym kursie metod numerycznych
nie liczy wyznaczników w ten sposób. Metodą cywilizowaną jest rozkład
macierzy na czynniki trójkątne (Cholesky dla symetrycznej, rzeczywistej
i dodatnio określonej, LU poza tym), gdzie wyznacznik pojawia się jako
"produkt uboczny". Można też użyć eliminacji Gaussa lub Gaussa-Jordana.
Złożoność każdego z tych algorytmów jest O(n^3) (tyle że Gauss
i Gauss-Jordan są w porównaniu z rozkładem na czynniki trójkątne mniej
uniwersalne i (naiwnie zastosowane) niestabilne numerycznie). Opis
algorytmów można znaleźć chćby we wspomnianych przez Sławka
"Numerical Recipes" (http://www.nr.com), procedury ściągnąć raczej
z Netlibu (http://www.netlib.org).
Paweł Góra
Institute of Physics, Jagellonian University, Cracow, Poland
For every problem there is one solution which is simple, neat and wrong.
Cytat:| Tak gwoli scislosci to zlozonosc algorytmu rekurencyjnego(korzystajacego
| jesli dobrze pamietam z rozwiniec Gauss'a) do obliczenia wyznacznika
| macierzy kwdratowej rowna jest n! a to przy 17 daje conajmniej 355 687
| 428 096 000 mnozen wiec czas 40 minut jest bardzo realny :(( .
Metoda - eliminacji Gaussa. Język : Pascal.
Polecam publikację: Metody numeryczne - Mochnacki
Wyd. Pol. Śląckiej (chyba)
Pozdrawiam
Pawełek
Cytat:| [...]
Jak jest bardziej skomplikowany uklad to nie da sie policzyc bez
komputera.
No chyba ze masz suwak z opcja odwracania macierzy zespolonej :-)Ale komu to dzis potrzebne - projektantom wzmacniaczy w.cz. ?
Bardziej przyziemne moga byc przetwornice, ale tam to juz Spice sie
przydaje..J.
Wojtek.
Cytat:Czy ma ktos algorytm obliczania wyznacznika macierzy o rozmiarze [n,n]
Rozwiazania rekurencyjne sa bardzo kosztowne obliczeniowo, dla macierzy
wysokich stopni, poniewaz trzeba rozwinac bardzo duzo podwyznacznikow.
Mam tu takie jedno zadanie z metod numerycznych. Juz 2 tygodnie sie
mecze, moze Wy cos pomozecie...
Zadanie: Sprawdzic, czy macierz jest dodatnio okreslona. Jezeli tak,
to policzyc jej wartosci wlasne.
Okreslonosc chcialem sprawdzac z kryterium Sylvestera, ale macierz
musialaby byc symetryczna. Nie wiem, jak sprowadzic macierz do postaci
symetrycznej tak, aby nie zmienic okreslonosci.
Wartosci wlasne chcialem liczyc metoda Frobeniusa, ale w ten sposob
wyznaczam wielomian charakterystyczny, a policzyc jego pierwiastki nie
jest tak latwo. Mozna by sprowadzic macierz do postaci trojkatnej i
wtedy w.w. beda na przekatnej, ale nie wiem jak to zrobic (metoda
eliminacji Gaussa zmienia wartosci wlasne).
Karol
A wartosci wlasne najprosciej przy pomocy metody potegowej,
pozniej odpowiednio podstawiasz otrzymana najwieksza wartosc wlasna, i
liczysz dalej.
Lub liczysz najmniejsza wartosc wlasna przy pomocy odwrotnej metody
potegowej Wielandta i postepujesz podobnie.
Chyba ze twoja macierz jest szczegolnej postaci to wtedy mozesz zastosowac
stosowny algorytm.
Bardzo dobrze opisane w 'Metody numeryczne' Jankowskich.
Grzes
Cytat:Mam tu takie jedno zadanie z metod numerycznych. Juz 2 tygodnie sie
mecze, moze Wy cos pomozecie...Zadanie: Sprawdzic, czy macierz jest dodatnio okreslona. Jezeli tak,
to policzyc jej wartosci wlasne.Okreslonosc chcialem sprawdzac z kryterium Sylvestera, ale macierz
musialaby byc symetryczna. Nie wiem, jak sprowadzic macierz do postaci
symetrycznej tak, aby nie zmienic okreslonosci.Wartosci wlasne chcialem liczyc metoda Frobeniusa, ale w ten sposob
wyznaczam wielomian charakterystyczny, a policzyc jego pierwiastki nie
jest tak latwo. Mozna by sprowadzic macierz do postaci trojkatnej i
wtedy w.w. beda na przekatnej, ale nie wiem jak to zrobic (metoda
eliminacji Gaussa zmienia wartosci wlasne).Karol
Cytat:Bracia Matematycy,Mam do rozwiazania uklad równan liniowych - ok 1000x1000.
Czy podpowiedzielibyście, proszę, jakiś przyjazny arkusz-kalkulator do
obsłuzenia tego zadania?Żeby mozna było w nim wykonywać kopiowanie wierszy/kolumn (w celu ułatwienia
tworzenia i edycji macierzy parametrów) oraz wynik przekazać do Excela.
Chodzi mi o coś darmowego, bo na całego matlaba mnie nie stać.Lajkonix Â
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Pozdr. ,
MH
Cytat:Przećwicz propozycję kolegi AL. Jednakże jakikolwiek nie byłby to program
,
to przy tak dużym wymiarze macierzy , biorąc pod uwagę błędy maszynowe i
mnogość operacji (z reguły algorytmy rozwiązywania układów równań
liniowych
są oparte o metodę eliminacji Gaussa) - do wyników podchodziłbym z dużą
rezerwą.
Cytat:
| Przećwicz propozycję kolegi AL. Jednakże jakikolwiek nie byłby to program
| ,
| to przy tak dużym wymiarze macierzy , biorąc pod uwagę błędy maszynowe i
| mnogość operacji (z reguły algorytmy rozwiązywania układów równań
| liniowych
| są oparte o metodę eliminacji Gaussa) - do wyników podchodziłbym z dużą
| rezerwą.problemy tej wielkosci rozwiazuje sie w ulamku sec.
dla losowych macierzy metoda eliminacji daje blad tego samego rzedu co qr,
i blad ten jest raczej niewielki.
Cytat:a nawet jak blad jest za duzy to mozna go zmniejszyc.
MH
Chodzi rzeczywiscie o uklad rownan liniowych. "x" to nazwy kolumn
odpowiednie do danej szukanej zmiennej xi, wektor b to wyrazy wolne.
Pytam sie o jakas metode (prostsza numerycznie) niz X=A-1*B czy met
eliminacji Gaussa, poniewaz zauwazylem w czesci "lewej oprocz ostatniej
kolumny" tej macierzy cos takiego:
ZC
CZ
Pozdrawiam
Z.
Cytat:Pytam sie o jakas metode (prostsza numerycznie) niz X=A-1*B czy met
eliminacji Gaussa
Cytat:
Z tego co się orientuję, ręczne wyliczanie polega na
zanlazieniu niezerowego ( bądz zerowego - nie pamiętam)
Cytat:wyznacznika jak najwyższego stopnia - i stopień wyznacznika
jest wtedy rzedem macierzy. jakoś nie wyobrażam sobie wyznacznika
8-go stopnia. :-(
Generalnie natomiast idzie o to, że jeśli masz jakąś metodę, która
działa, to da się ja zalgorytmizować. Niekoniecznie oznacza to, co
prawda, że będzie to najlepsza możliwa metoda.
W twoim wypadku, jak ci już radzono, jeśli macierz jest kwadratowa,
sprowadź ją do postaci trójkątnej, czyli takiej, w której macierz pod
(lub nad) główną przekątną ma same zera. Nie wiesz jak? Poszukaj sobie
hasła "eliminacja Gaussa". Teraz przypomnij sobie ile wynosi wyznacznik
macierzy trójkątnej. Teraz pomyśl i znajdź związek pomiędzy ilością
zer na głównej przekątnej (macierz w postaci trójkjątnej!) a rzędem
macierzy.
Pozdrawiam
Cytat:| TY pragniesz zwyczajnie diagonalizować macierz X
| za pomocą przekształceń zbliżonych do eliminacji
| Gaussa.| Analogia jest tylko o tyle prawdziwa, ze w obu
| wypadkach w gre wchodzi macierz trojkatna.
| Metoda, ktopra przedstrawilem nazywa sie
| ortogonalizacja Grahma-Schmidta lub podobnie
| (balem sie, ze cos przekrece, wiec poprzsednio
| historyczny odnosnik). W przeciwienstwie do
| ogolnej metody Gaussa, dzialajacej dla dowolnego
| ciala, ortogonalizacja wymaga, zeby cialo bylo
| rzeczywiste (w sensie Artina?): zeby suma
| niezerowych kwadratow nigdy nie byla rowna zero
| -- ten prosty warunek pozwala cialo uporzadkowac
| liniowo chyba sie nie myle; wszystkie takie
| podstawowe fakty powinnismy miec w... FAQ).Też coś pamiętam, był to rozkład macierzy na iloczyn macierzy: A = U*R
(unitarna * górnatrójkątna).Ale gdy już zrobimy taki rozkład to jakie zastosować rozumowanie, że
rozwiązanie sprawy jest najlepsze w sensie miary (normy nieskończoność).A propo tego FAQ to chyba przesadzasz, nie wymagaj aż tyle.
Pozdrawiam
Edyl.--
Wysłano z serwisu Usenet w portalu Gazeta.pl -http://www.gazeta.pl/usenet/
Cytat:
Czy któryś z szanownych grupowiczów/grupowiczek zna metody
rozwiązywania dużych liniowych układów równań metodami dokładnymi
(eliminacja Gaussa, LU, etc.), który zoptymalizowany jest na pracę z
pamięcią zewnętrzną, a nie operacjną. Rozmia macierzy, jaki mnie
intersuje to w przybliżeniu około od 10 000 na 10 000 do 40000 na
40000, a to przy liczbach typu double ciężko pomieścić.
Grzegorz Krukowski
Przegladalem archiwum grupy i dowiedzialem sie, ze eliminacje Gaussa z
pivotingiem czy bez trzeba przeprowadzac dla kazdej nowej prawej strony
rownania macierzowego od poczatku. Konkurencyjne metody (rozklad LU,
Cholesky'ego) robia to tylko raz.
Mam wobec tego watpliwosci, poniewaz w Helpie programu Mathematica 4.1
autor odradza uzywania funkcji LinearSolve dla rownan o takich samych
lewych stronach, a zaleca uzywanie eliminacji Gaussa. W podanych
przykladach autor pokazuje metode rozwiazania za pomoca elementow rozkladu
LU. Czy to nadal jest klasyczna metoda eliminacji Gaussa?
serdecznie pozdrawiam.
Cytat:
Mam wobec tego watpliwosci, poniewaz w Helpie programu Mathematica 4.1
autor odradza uzywania funkcji LinearSolve dla rownan o takich samych
lewych stronach, a zaleca uzywanie eliminacji Gaussa. W podanych
przykladach autor pokazuje metode rozwiazania za pomoca elementow rozkladu
LU. Czy to nadal jest klasyczna metoda eliminacji Gaussa?
--
Paweł Góra Three Laws of Thermodynamics:
Institute of Physics 1. You can't win.
Jagellonian University 2. You can't break even.
Cracow, Poland 3. You can't even quit the game.
bye, robal
**********************
Space - the final frontier
Gene Rodenbery - Star Trek
home site: http://directx.w.interia.pl
**********************
Cytat:Witam.
Czy znacie jakies miejsce w sieci , gdzie po trosze bedza opisane
algorytmy
operacji na macierzach, szczegolnie zalezy mi na znajdywaniu wyznacznika
dla
macierzy 4x4 oraz odwracaniu ( metoda eliminacji Gaussa ). Wzory znam, ale
jakby byl jakis szerszy opis to chetnie po polsku albo angielsku...
Wyznacznik 4x4. Ja bym liczyl z rozwiniecia Laplace-a, a potem 3x3 to juz
normalnie z definicji... ale nie wiem czy ta bedzie najszybciej.
Odwracanie jest proste, tylko trzeba zapoznac sie z algorytmem Gaussa. W
zasadzie to nic trudnego, po 3-ec przyladach wszystko staje sie jasne.
Cytat:Witam witam serdecznie!
mam trzy zadania, dla Was pewnie smiesznie proste, dla mnie, czarna
magia ;) 1) 5 urzadzen pracuje rownolegle i niezlazeznie.
Prawdopodobienstwo zepsucia sie kazdego z nich wynosi 1/3 (ulamek)
Olicz prawdop. zdarzenia ze:
a- nie zepsuje sie
b- zepsuje sie najwyzej jedno urzadzenie.2) Oblicz pole obszaru ograniczonego krzywa:
y=2cosx oraz prostymi x=0, y=0, x=4
Cytat:3) Rozwiazac uklad rownan korzystajac z metody wyznacznikowej
{ 2x+3y-ż=2
{ -4x-y-3ż=-1
{ 6x+4y+2ż=3
pozdrawiam i powdzenia!
vorador
-----
matematyka jest narzedziem a nie celem samym w sobie
Cytat:Naszkicuj sobie wykres funkcji y=2cosx ograniczony prostymi x=0 y=0 x=4,
potem zobacz wzgledem ktorej osi obszar jest normalny (bo raczej bedzie),
sprawdz gdzie 2cosx przecina sie z asymptotami (ze tak nazwe), masz
granice
calkowania, zapisujesz calke podwojna, pierwsza w granicach stalych a
druga
w zaleznych od zmiennej (iterownie)... i calkujesz.. hmm to chyba taki
schemat :)| 3) Rozwiazac uklad rownan korzystajac z metody wyznacznikowej
| { 2x+3y-ż=2
| { -4x-y-3ż=-1
| { 6x+4y+2ż=3ukladem cramera to to nie jest :)
masz dwie mozliwosci - eliminacja gaussa lub skorzystac z
tw.kroneckera-capelli'ego (choc reki sobie uciac nie dam)pozdrawiam i powdzenia!
Cytat:
Cos mi sie zdaje, ze mylisz eliminacje Gaussa z eliminacja Gaussa-Jordana.
Paweł Góra Three Laws of Thermodynamics:
Institute of Physics 1. You can't win.
Jagellonian University 2. You can't break even.
Cracow, Poland 3. You can't even quit the game.
Cytat:
| tak do eliminacji Gaussa (prowadzącej do macierzy trójkątnej) jak i do
| eliminacji Gaussa-Jordana (prowadzącej do macierzy diagonalnej).
| Obie wymagają ~N^3 operacji (współczynnik jest inny), obie wymagają
| znajomości prawej strony, obie są niestabilne bez pivotingu.Nieprawda. Przy pomocy eliminacji Gaussa-Jordana mozna znalezc maciez
odwrotna do macierzy wspolczynnikow lewych stron (jesli taka istnieje to
kazdy uklad z takimi wspolczynnikami, niezaleznie od prawych stron ma
dokladnie jedno rozwiazanie w danym ciele). Wtedy kazdy uklad rownan
postaci:A X = B
Cytat:gdzie X i B to wektory, a A macierz mozna rozwiazac bardzo prosto:X = A' B
gdzie A' to znaleziona macierz odwrotna.
Jesli A' nie istnieje to uklad rownan jest sprzeczny.
Oczywiscie jest to metoda dobra dla maciery kwadratowych, ale dla
prostokatnych pewnie tez mozna ja jakos zastosowac. Niestety nie mam teraz
czasu by sie na tym zastanowic.
Cytat:--
"The only people who never fail
are those who never try."
Cytat:
Dziwnego nic, niestety. Ale zadanie jest szkodliwe, wyrabia bowiem
fałszywą intuicję, iż znajdywanie macierzy odwrotnej jest rzeczą
generalnie pożyteczną, podczas gdy umiejętność ta przydaje się
_bardzo_ rzadko.
Cytat:I jeszcze a'propos "znanych rzowiązań algorytmicznych": Jaki praktyczny
algorytm jawnego obliczania macierzy odwrotnej ty byś zaproponował?
Pozdrawiam
Piotr Wyderski
Cytat:Kiedy nie można mieszać działań na wierszach z działaniami na kolumnach?
Z kolei rozwiazujac uklad rownan liniowych metoda
eliminacji Gaussa wolno Ci tylko przestawiac wiersze,
a nie kolumny. W tym przypadku transpozycja macierzy
prowadzi w ogolnosci to zupelnie innego ukladu
rownan.
Pozdrawiam
Maciej Marek
Cytat:
Za pomocą metody eliminacji Gaussa na przykład.Sporo sposobów na macierze i układy równań znajdziesz w książce:
Klukowski (albo Kluczkowski), Nabiałek - Algebra liniowa.
Powodzenia i miłej lektury.Pozdrawiam FreeForm.
Pozdrawiam
Marcin
XXXX00000000...00000000
XXXX00000000...00000000
XXXXXXXX0000...00000000
XXXXXXXX0000...00000000
XXXXXXXX0000...00000000
XXXXXXXX0000...00000000
0000XXXXXXXX...00000000
0000XXXXXXXX...00000000
0000XXXXXXXX...00000000
0000XXXXXXXX...00000000
......................
......................
000000000000...XXXXXXXX
000000000000...XXXXXXXX
000000000000...XXXXXXXX
000000000000...XXXXXXXX
000000000000...0000XXXX
000000000000...0000XXXX
Cytat:Dodam, gdyz to nie jest grupa o programowaniu, ze chodzi mi o algorytm
ktory
da sie ujac w program, a nie tylko taki ktorym mozna rozwiazywac recznie
na
kartce.
Cytat:Algorytm tutaj zostosowany to (po pobieznej analizie) metoda dekompozycji
Gaussa-Jordana, moim zdanie lepszy i szybszy algorytm niz metoda
wyznacznikowa.
Cytat:| Algorytm tutaj zostosowany to (po pobieznej analizie) metoda dekompozycji
| Gaussa-Jordana, moim zdanie lepszy i szybszy algorytm niz metoda
| wyznacznikowa.Metoda wyznacznikowa jest NIESŁYCHANIE kosztowna i odpada we wszelkich
przypadkach, w których wyznaczników nie da się policzyć analitycznie.
Zdaje mi się jednak, iż zastosowana w "niemieckim" programie eliminacja
Gaussa-Jordana też jest OKDR, gdyż nie stosuje wyboru elementu
podstawowego,
a zatem jest niestabilna numerycznie.
Cytat:dla _wszystkich_ na pewno nie - tylko dla _rzadkich_
a to dlatego, ze jak trafia na zero, omija cala rekurencje
Cytat:jakies konkrety?
Czy dobrze rozumiem, że wartość wyznacznika to będzie wynik przemnożenia
tego co powstanie na głównej przekątnej po sprowadzeniu lewejdolnej
części macierzy do 0 ?
Metoda eleminacji (gaussa) przy kolejnych operacjach korzysta z wyników
operacji poprzednich.
Czy istnieje jakiś sposób aby dało się wyliczyć wyznacznik macierzy
_równolegle_ tzn tak żeby konieczne było korzystanie z możliwie jak
najmniejszej ilości wyników poprzednich operacji ?
Ewentualnie czy dało by się jakoś zrównoleglić algorytm eliminacji
(gaussa) ?
Cytat:Czy dobrze rozumiem, że wartość wyznacznika to będzie wynik przemnożenia
tego co powstanie na głównej przekątnej po sprowadzeniu lewejdolnej
części macierzy do 0 ?
Cytat:Czy istnieje jakiś sposób aby dało się wyliczyć wyznacznik macierzy
_równolegle_ tzn tak żeby konieczne było korzystanie z możliwie jak
najmniejszej ilości wyników poprzednich operacji ?
Cytat:Ewentualnie czy dało by się jakoś zrównoleglić algorytm eliminacji
(gaussa) ?
Cytat:| Ewentualnie czy dało by się jakoś zrównoleglić algorytm eliminacji
| (gaussa) ?jak wspomnialem, nie wiem. mozna natomiast (chyba) znalezc algorytm szybszy niz
gaussa. tzn. o ile tamten ma zlozonosc rzedu n^3, istnieje algorytm o
zlozonosci n^2 * ln n, co dla ogromnych macierzy stanowi jednak postep.
w tej chwili mam tylko szkic: rozwazmy (bez straty ogolnosci) macierz o boku
postaci n=2^k. te macierz - metoda podobna do gaussa - sprowadzimy do postaci
klatkowej, z 4 macierzy o boku 2^(n-1), przy czym dolna lewa i prawa gorna
klatka sa zerowe (da sie zrobic, oprocz szczegolnych,zdegenerowanych
przypadkow). wyznacznik calosci jest iloczynem wyznacznikow 2 niezerowych
klatek. zarazem do samego sprowadzenia macierzy do tej postaci wystarczy nam
znajomosc tychze wyznacznikow (a wiec macierzy odwortnych do obu klatek). summa
summarum dostajemy zlozonosc obliczeniowa jak wyzej.
Cytat:Potrzebujesz implementacji metod? Troche mam, moge Ci ewentualnie wyslac,
ale sa bez komentarzy (trzeba wiedziec o co chodzi)
Mam notatki, ale ich implementacja tworzy mi macierz z jedynkami na
diagonalnej - tzn. takie coś:
1 0 0
0 1 0
0 0 1
a nie podaje wyników macierzy odwrotnej, czyli klapa!!!
JACK_
Cytat:Bosz.... z czym ty masz problem ? Generacja macierzy jednostkowej to
przecierz banał jakich mało:for (i=0; i<max_wierszy; i++)
for (j=0; j<max_kolumn; j++)
if (i == j) macierz[i][j] = 1; else macierz[i][j] = 0;
Cytat:
No genialny wręcz :) To jest zupełnie NTG !!!
Cytat:Bo oczywiście właśnie na tej grupie siedzą sami programići w C ;)
Cytat:I do tego programiści-jasnowidze, którzy domyśla sie o co ci dokładnie
chodzi i jak wyglada kod twojego programu co tą macierz generuje :)
Cytat:Bosz.... z czym ty masz problem ? Generacja macierzy jednostkowej to
przecierz banał jakich mało:for (i=0; i<max_wierszy; i++)
for (j=0; j<max_kolumn; j++)
if (i == j) macierz[i][j] = 1; else macierz[i][j] = 0;i nie liczna to, że będę ci to tłumaczył ;P
ps. chodzi o PRZEKSZTALCENIE macierzy ktora wygenerowalem do macierzy
jednostkowej.
Cytat:Sluchaj musi to byc eliminacja zupelna Jordana? Chodzi ci o obliczanie
ukladow rownan liniowych albo wyznaczanie macierzy odwrotnej? Nie pamietam
jaka byla Jordana ale Gaussa jest zaje... powolna i skomplikowana
obliczeniowo.
http://math.uww.edu/faculty/mcfarlat/gauss.htm
Cytat:nie, bo na tej grupie znam kilku ludzi ktorzy mogliby pomoc. poza tym
wlasnie sie tu pojawilem i korzystam z okazji :
Cytat:| I do tego programiści-jasnowidze, którzy domyśla sie o co ci dokładnie
| chodzi i jak wyglada kod twojego programu co tą macierz generuje :)nie chodzi o kod programu do generowania tej macierzy tylko do
przeksztalcenia jej do macierzy jednostkowej.
Cytat:miales na studiach/w szkole cos takiego jak metode eliminacji zupelnej
Jordana albo jakakolwiek inna (Gaussa np) ? bo zdaje sie ze nie ....
pozdro
Cytat:Niezupełnie. Do rozwiązania równania liniowego, bardziej opłacalne jest
zastosowanie bezpośrednio metody eliminacji Gaussa niż znalezienie
macierzy odwrotnej. Np. w Matlabie zaleca się x = A; zamiast x =
inv(A)*b; pierwsze rozwiązanie wykorzystuje właśnie metodę eliminacji.
Cytat:Niezupełnie. Do rozwiązania równania liniowego, bardziej opłacalne jest
zastosowanie bezpośrednio metody eliminacji Gaussa niż znalezienie
Do rozwiązywania układów równań z macierzą o której nic nie wiemy (np.
że jest symetryczna i dodatnio określona) powinno się stosować algorytm
eliminacji Gaussa z częściowym wyborem elementu głównego. To samo się
tyczy rozkładu LU.
W przypadku układów z macierzami o których posiadamy jakąś wiedzę,
należy stosować specjalizowane metody takie jak np. metoda sprzężonych
gradientów dla macierzy symetrycznych dodatnio określonych. Polecam
książkę Golub, Loan "Matrix Computations" i stosowanie bibliotek typu
lapack (ftp://ftp.netlib.org). Jeśli chodzi o C++ to można użyć
boost::bublas+bindings.
Zdrowia
Cytat:| Ja stwierdziłem, że owszem da się, jeśli pominie się proces wyznaczania
| macierzy odwrotnej i przeprowadzi dzielenie bezpośrednio.
Niestety myslisz się. Wyjaśnienie wysyłam na priv bo wątek robi się OT.
Pozdrawiam
1.stosujac metode eliminacji gaussa rozwiaz uklad rownan
4.6237x1 + 2.6914x2 - 3.7517x3 = 1.4023 ,
-2.4037x1 +1.0432x2 + 0.7589x3 = 0.3724 ,
1.0462x1 +2.0495x2 + 6.3524x3 = -2.4728
2. niech f(x) = log(x) . uzywajac tablicy obliczyc przyblizona wartosc
(log 0.54)
x 0.40 0.50 0.60
0.70 0.80
log
16291 -0.693147 -0.510826 -0.356675 -0.22314
4
przypomne, ze chodzi tu o kod w jezyku C/C++
dzieki z gory za udzielona pomoc :)
Cytat:Czy są dostępne jakieś biblioteki w srodowisku visual C ++, umozliwiające
rozwiązywanie układów równań w postaci macierzowej(chodzi o dużą liczbę
równań , rzędu 100.000)?, a może ktoś ma dostęp do kodów umożliwiających
rozwiązywanie takich układów...
PS: Wrzuc w google'a: lapack | template numerical toolikit | solving linear
equations in C++ etc
Cytat:ukladu rownan metoda eliminacji Gaussa... (a moze ktos zna szybsza? bo ja
juz szczerze mowiac nie pamietam)
IMHO najpierw powinno się "wytypować" metody które dadzą rozwiązanie
obarczone jak najmniejszym błędem a dopiero potem wśród nich szukać metody
najszybszej.
Kiedyś wygnerowałem sobie układ 100x100 w którym macierz A miała dużo
wierszy
"prawie liniowo zależnych" i liczyłem różnymi sposobami.
Najszybsza była met. Gaussa, ale błąd był duży.
Trochę wolniejsze były metody ortogonalizacji i LDU ale dały one
najdokładniejsze wyniki.
Pośrodku była metoda LU.
Jeszcze jest jeden problem - jak jest duża "rozpiętość" wartości trzeba
wchodzić w arytmetykę interwałową.
Pozdrawiam
Cytat:
| Czy są dostępne jakieś biblioteki w srodowisku visual C ++, umozliwiające
| rozwiązywanie układów równań w postaci macierzowej(chodzi o dużą liczbę
| równań , rzędu 100.000)?, a może ktoś ma dostęp do kodów umożliwiających
| rozwiązywanie takich układów...
To bedzie ciekawe zadanie...Macierz 100kx100kx8b czyli ca 80GB. Zakladajac
ze wykorzystasz fakt ze macierz jest pasmowa i symetryczna (przy dobrej
siatce MES wyjdzie ci waskie pasmo) to moze zejdziesz do kilku GB. Ambitne
zadanie jak dla kogos kto nie potrafi samemu zaimplementowac rozwiazywania
ukladu rownan metoda eliminacji Gaussa... (a moze ktos zna szybsza? bo ja
juz szczerze mowiac nie pamietam)
PS: Wrzuc w google'a: lapack | template numerical toolikit | solving linear
equations in C++ etc
Cytat:w sumie to jest to metoda Gaussa rozwiazywanie ukladu n rownan
z n niewiadomymi, polegajacy na zerowaniu elementow glownej macierzy
ukladu rownan pod lub nad glowna przekatna, a to, ze akurat mozna stad
latwo obliczyc wyznacznik macierzy, to wypadek przy pracy
Kaczus/BlaBla & AUG-Lodz
Cytat:| Czy ktoś może co nie co podpowiedzieć jak rozwiązywać układy równań z
| dwiema nie wiadomymi???? Jak się za to wogule zabraćPrzede wszystkim nalezy chodzic na lekcje matematyki ;)
Tomek_BSD
Pracuje nad implementacja pewnego (zlozonego) algorytmu matematycznego.
Wybralem z pewnych wzgledow Jave. Wiem, ze takie rzeczy powinno sie
raczej robic np. w Maple'u, ale ten problem jest typowo "obiektowy"
poza tym Maple nie ma tylu wygodnych struktur danych. Mam 2 pytania
do doswiadczonych programistow (nie chodzi mi o podanie
konkretnych rozwiazan, ale jakiekolwiek uwagi)
1) program bedzie wykonywal cos na ksztalt eliminacji Gaussa
(dodawanie wierszy etc.) na sporej ilosci macierzy (malych lub bardzo
duzych, zaleznie od danych wejsciowych). Rowniez czeste bedzie wykonywane
"sklejanie" macierzy, dopisywanie blokow, wierszy, kolumn.
Czy trzymac takie macierze w tablicach (ale sklejanie macierzy
bedzie koszmarne), czy wykorzystac np.
biblioteke Jama (by MathWorks), czy sa jakies inne podobne? Bede wdzieczny za
wszelkie uwagi i pomysly.
2) Problemy z precyzja: wiem, ze typ double w Javie jest bardzo pojemny,
ale jednak ograniczony. Stosowanie klas typu BigDecimal raczej nie wchodzi
w gre (podejrzewam, ze operacje na nich sa bardzo wolne).
Czy sa jakies metody np. wykrywania bledow typu "1/3 * 3 = 0.999"?
Czy sa dostepne jakies biblioteki do obliczen symbolicznych
(chyba za duzo wymagam :))?
Z gory dzieki za odpowiedzi
pozdrawiam
Andrzej
prwadopodobnie znajdziesz tam gotowca z eliminacji gaussa i wiele
przydatnych klas.
A co do bigdecimal to poszukaj gdzies MutableBigDecimal, gdzies kiedys
mignela mi taka klasa przed oczami, jesli dobrze rozumiec nazwe to
roznilaby sie tym ze trzeba zachowac pewne srodki ostroznosci i szybkosc
bylaby zadowalajaca
co do HashMapy to moze okazac sie lepsze przeciazenie metody hashCode()
zeby zwracala co tam potrzebujesz i te 0 i 1 wcisnac binarnie w
zwracanego inta, moze do "kluczowania" hashmapy dobrze zrobic oddzielna
klase twoja, i pamietaj ze taki int najlepiej byloby przeliczyc
naprzyklad w konstruktorze zeby nie liczyc go za kazdym wywolaniem
hashCode()
Cytat:Czy ma ktoś z Państwa gotową metodę rozwiązywania oznaczonego układu n
równań liniowych z n niewaidomymi ?
Pozdrawiam
Cytat:Ogóly wzór rekurencyjny jest taki:
Oznaczenia:
A - macierz
Aij - macierz z "wyciętymi" i-tym wierszem i j-tą kolumną
a[ij] - element macierzy z i-tego wiersza i j-tej kolumny
det A - wyznacznik
Wzorek (przy liczeniu za pomoca 1-go wiersza):
det A = "suma od k=1 do n" ( (-1)^(1+k) * a[1k] * det A1j )
Do obliczeń numerycznych lepiej stosować inną metodę:
1.Doprowadzić macierz do postaci schodkowej eliminacją Gaussa (może być
też rozkład LU);
2.Iloczyn elementów na przekątnej daje wyznacznik.
Zamiana wierszy/kolumn przy wyborze elementu głównego w eliminacji zmienia
znak wyznacznika.
Tutaj złożoność jest jak n^3 i raczej nie zabraknie pamięci na rekurencję.
Cytat:wyznacznik macierzy niekwadratowej jest zawsze równy zero
Cytat:Co do dalszej części Twojej odpowiedzi, w sieci nielegalnie udostępnia się także artykuły naukowe, bo i wśród tzw. ludzi nauki są tacy, którym żal opłacić prenumeratę jakiegoś pisma specjalistycznego lub zapłacić kilkanaście bądź kilkadziesiąt dolarów za dostęp do interesującego ich tekstu.
Cytat: Krótko mówiąc, na kolokwium można się spodziewać wszystkiego co pojawiło
się od poczatku semestru do przedostatnich ćwiczeń włącznie a wiec:
analiza błędów, poprawność algorytmów,
Eliminacja gaussa,
rozklady LR, LL^T, QR,
normy wektorow i macierzy,
wartosci i wektory wlasne,
postac Jordana macierzy
Nie będzie materiału z ostatnich ćwiczeń czyli metody potęgowej, tw.
Geshgorina, metody QR wyznaczania wartości wlasnych.
Pozdrawiam,
Tomasz Kapela
Cytat:
Dzien dobry
Chyba go przeoczylem, przepraszam. W zwiazku z tym kolokwium bedzie za
dwa tygodnie (6 maj). Zajecia sie odbeda w ta sobote w tych samych
terminach co ostatnio. Material:
- poszukiwanie minimum funkcji
- iteracyjne rozwiazywanie ukladow rownan
- calkowanie numeryczne
- i zlozonosci obliczeniowe metod, ktore byly na zajeciach ostatnich
Zadanie do zrobienia w Matlabie (termin dwa tygodnie, czyli czwartek 4 maja):
- aproksymacja eksponenty wielomianami Czebyszewa
- eliminacja Gaussa-Jordana i Dollitle'a
Marcin Pietron
Cytat:
Ale jak to będzie wyglądać pod względem wydajnosciowym
Cytat:bo jeśli dobrze rozumiem wymaga to rozwiazywania równania dla
róznych punktów przestrzeni
Cytat:a skoro jest to metodami numerycznymi, to na każde takie rozwiązanie
będzie się składać kilk przybliżeń. Dobrze mówię ?
Pozdrawiam
Piotr Wyderski
Cytat:... a druga to metoda eliminacji Gaussa. Proszę mnie poprawić jeśli się
mylę.
Nero
Cytat:| To nie jest B, lecz X*B -- mamy:
| X*B := Y - Sum((e_j . Y)*e_j : j = 1...r)
| To nie jest wszystko, lecz -- dzieki wlasnosciom
| podanej procedury, ponad polowa rozwiazania.| Napisze wiecej i do konca w nastepnym poscie.
Cytat:| PS. Chodzi mi po glowie, ze napotkalem podobny temat
| przed cwierc wieku, [...]Ciekaw jestem, uzupełnij.
Cytat:TY pragniesz zwyczajnie diagonalizować macierz X
za pomocą przekształceń zbliżonych do eliminacji
Gaussa.
Cytat:Twoje zapisy symboliczne są trochę niejasne
dla mnie do końca. Niewiem np. co to znaczy
kropka w zapisie: (e_j . Y)*e_j
Pozdrawiam,
Wlodek
Cytat:A może dałoby sie zapisać ciąg takich operacji jako iloczyn jakichś macierzy.Spróbuj, może właśnie tak. Byłoby czytelne.
Pozdrawiam
Edyl.
Cytat:
macierzy i nie bardzo mi to wychodzi - prosba: czy ktos z Szanowych
Grupowiczy moglby mnie wspomoc. Ewentualnie w archiwum grupy odszukalem ze
taki algorytm jest w ksiazce: T.Cormen, C.Leiserson, R.Rivest, "Wprowadzenie
do algorytmów", Wyd. Naukowo-Techniczne, Warszawa 1997
W każdym razie, taki algorytm można otrzymać z metody eliminacji Gaussa,
czyli ze zwykłej szkolnej metody rozwiązywania układów równań liniowych.
Bierzemy macierz A[m x n] i przekształcamy ją tak, aby pod diagonalą były same zera.
Stosujemy elementarne operacje na wierszach i kolumnach, które nie zmieniają
rzędu macierzy. Dla przypomnienia:
- w i-tym kroku, bierzemy a_{i,i}, zerujemy elementy a_{k,i} dla k = i+1, i+2, ... m:
odejmujemy w tym celu od k-tego wiersza wiersz i-ty pomnożony przez a_{k,i} / a_{i,i},
- oczywiście zakładamy, że a_{i,i} =/= 0, w przeciwnym wypadku trzeba odpowiednio
przestawić kolumny lub wiersze, a jeśli to jest niemożliwe, kończymy procedurę,
rank(A) = i - 1.
Inne podejście:
Mamy zbiór wektorów v_1, v_2 ... v_n in R^m, załóżmy, że wszystkie niezerowe.
Możemy teraz próbować ortogonalizować ten układ otrzymując po kolei wektory
u_1, u_2, ... in R^m:
- pierwszy krok: u_1 := v_1,
- jeśli mamy już wektory u_1, u_2 ... u_k, to
u_{k+1} := v_{k+1} + b_1*u_1 + b_2*u_2 + ...+ b_k*u_k,
gdzie współczynniki b_1, b_2 ... b_k wyznaczamy z warunku ortogonalności:
< u_{k+1},u_j = 0, dla j = 1 ... k
- jeżeli pojawi nam się wektor zerowy, u_{k+1} = 0, to znaczy, że v_{k+1} jest
kombinacją {v_1 ... v_k}.
Na końcu dostajemy układ (ortogonalny) wektorów, który generuje tę samą przestrzeń,
choć interesuje nas tylko ich liczba (niezerowych wektorów, oczywiście)...
Obie metody mają złożoność wielomianową względem max(n,m), czyli mogą być uważane
za efektywne. A jeśli chodzi o kwestie stabilności numerycznej itp., to nie wiem --
niech wypowiedzą się specjaliści.
Tomek
Cytat:
zwracam uwage na w/w metode rozwiazywania
ukladu rownan liniowych
Cytat: jako na nejlepsza do rozwiazywania metodami
rownan. W/w metoda daje najmniejsza liczbe mnozen i dzielen.
Eliminacja Gaussa, z pivotingiem czy bez, ma także inną wadę:
trzeba ją przeprowadzać dla każdej nowej prawej strony od
początku, tymczasem często zdarza się, że trzeba rozwiązać
kilka układów różniących się tylko prawymi stronami:
Ax = b1, Ax = b2, etc
Przy eliminacji Gaussa wszystko trzeba robić dla każdej prawej strony
od początku, a to jest kosztowne (wymaga ~N^3 operacji, zatem łącznie
~M*N^3 operacji, gdzie M jest ilością niezależnych prawych stron).
Tymczasem w technikach konkurencyjnych (rozkład LU, rozkład Cholesky'ego
dla macierzy symetrycznych) rozkładu macierzy dokonuje się raz,
gdyż jest on cechą macierzy, nie układu równań (czyli nie zależy od
prawej strony). Mamy zatem dla M układów równań z tą samą macierzą
~N^3 operacji na rozkład plus ~M*N^2 operacji na każde równanie
(równanie ze zdekomponowaną prawą stroną rozwiązuje się w ~N^2
operacji). To może _znacznie_ przyśpieszyć działanie programu.
Rekapitulując, eliminacja Gaussa bez pivotingu jest _złą_ metodą
rozwiązywania układów równań. W przypadku, gdy mamy do rozwiązania
więcej niż jedno równanie różniące się tylko prawymi stronami,
eliminacja Gaussa z pivotingiem jest również _złą_ metodą.
Paweł Góra Three Laws of Thermodynamics:
Institute of Physics 1. You can't win.
Jagellonian University 2. You can't break even.
Cracow, Poland 3. You can't even quit the game.
Cytat:
Z kolei rozwiazujac uklad rownan liniowych metoda
eliminacji Gaussa wolno Ci tylko przestawiac wiersze,
a nie kolumny.
Sporo sposobów na macierze i układy równań znajdziesz w książce:
Klukowski (albo Kluczkowski), Nabiałek - Algebra liniowa.
Powodzenia i miłej lektury.
Pozdrawiam FreeForm.
Cytat:
Cytat:| Macierz jest "prawie" dolna, tzn prawie wszystkie wyrazy niezerowe
Cytat:O, ja bym zdecydowanie próbował wykorzystać i zrobił coś a'la
"odwrócona" eliminacja Gaussa, sprowadzająca macierz do postaci
trójkątnej dolnej. Zapewne trzebaby jakoś sprytnie zapamiętywać
niezerowe elementy z górnego trójkąta no i zapamietywać wynikowe
przekształcenie wyrazu wolnego, jeśli ma ich być wiele (dla tej samej
macierzy) i jeśli z góry nie są wszystkie znane.
Cytat:| max|lambda_i| / min|lambda_i| = 98.2935
No, dla macierzy niesymetrycznej to _nie_ jest równe współczynnikowi
uwarunkowania, ale niekiedy bywa mu bliskie. Jeśli tak, to ~10^2 nie
jest wcale takie złe. Rzekłbym nawet, iż jest to to bardzo przyzwoite
uwarunkowanie. Moze raz zaciśnij zęby i puść dla twojej macierzy SVD,
to da ci prawdziwy współczynnik uwarunkowania.
Cytat:I jeszcze jedno: Jak rozumiem, macierz moze się zmieniać w czasie
działania całego programu (rózne iteracje metody Newtona). Masz
pewność, że w którymś przypadku uwarunkowanie ci się nie popsuje?
Bo jesli faktycznie rozwiązujesz bardzo-wielowymiarowe równanie
algebraiczne Newtonem (współczuję), to łatwo możesz przechodzić
przez jakieś lokalne siodła, gdzie Jakobian będzie dramatycznie
źle uwarunkowany.
sum alfa_i x_i*|x_i|
Czyli takie kwadratowe ale jeden wyraz w module. Póki co i tak metoda
Newtona jest jakieś 100 razy szybsza niż poprzednia, którą nakazuje tradycja
w tych problemach. I czy warto dekomponować LU "rzadkim" algorytmem?
Jeszcze raz wielkie dzięki za wszelkie wskazówki. I przepraszam, że się tak
dopytuję. Nie mam wielkiej praktyki w trudniejszych obliczeniach
numerycznych (małe macierze to LU i nie ma nad czym myśleć :)) Więc jeszcze
raz tym bardziej dziękuję.
Piotr Kaczyński
czy ktos moze ma gdzies zrodlo takiego programu lub jest w stanie mi jakos pomoc?
z gory wielkie dzieki
#include <iostream.h
#include <math.h
const int N=3;
double x[N];
double a[N][N+1]=
{
{5 , 0, 1, 9},
{1 , 1,-1, 6},
{2, -1, 1, 0}
Cytat:};
Cytat:};
for(j=i+1;j<N;j++)
for(k=N;k=i;k--) // mnożenie wiersza j przez współczynnik "zerujący":
a[j][k]=a[j][k]-a[i][k]*a[j][i]/a[i][i];
}
#ifdef TEST
cout << "MACIERZ TRÓJKĄTNA
";
for(i=0;i<N;i++)
{
for(j=0;j<=N;j++)
cout << a[i][j] << ", ";
cout << endl;
}
#endif
// reduckja wsteczna
for(int j=N-1;j=0;j--)
{
tmp=0;
for(int k=j+1;k<=N;k++)
tmp=tmp+a[j][k]*x[k];
x[j]=(a[j][N]-tmp)/a[j][j];
}
return 1; // wszystko w porządku!
Cytat:}
Cytat:}
Cytat:mam zrodlo w C
moze mi ktos pomoc w przetlumaczeniu tego na jave
bo nei wiem np co w tym kodzie robia nastepujace linijki
fabs(a[j][i])
#ifdef TEST
#endif
O to cytat:
Cytat:---------------===================== O Autorze
Moja ksywa brzmi Fasiu. Jestem poczatkujacym programista w jezyku C/C++.
www: www.fasiu.z.pl - verry under construction :-)
Dziekuje za korzystanie z mojego darmowego programu.
Podsumujmy:
1. Nie potrafisz zrozumieć prostego programu C.
3. Nie potrafisz posłużyć się google.
4. Spamujesz - ten sam mail "metoda eliminacji Gaussa - uklad rownan
liniowych" poszedł na 8 albo więcej grup, w tym
alt.pl.ogloszenia.matrymonialne. No i ten głupi sklep z bielizną, dla
którego też spamujesz gdzie popadnie:
<http://groups.google.com/groups?hl=pl&lr=&ie=UTF-8&selm=c3if8i%24232s...
<http://koleje.toplista.pl/
<http://4liga.top-100.pl/
5. Prawdopodobnie próbujesz oszukać nauczyciela, udając że sam odrobiłeś
pracę domową (no chyba, że próbujesz zbić majątek na programach do
rozwiązywania układów równań metodą Gaussa).
6. Z ortografią się nie lubisz.
7. Swoje wypociny uważasz za dzieło geniusza, które każdy próbuje ukraść:
<http://niusy.onet.pl/niusy.html?t=artykul&group=pl.comp.lang.php&aid=...
<http://groups.google.com/groups?hl=pl&lr=&ie=UTF-8&selm=c9vosd%242mt9...
8. Za to kradniesz cudze i nimi handlujesz:
<http://groups.google.com/groups?hl=pl&lr=&ie=UTF-8&selm=9qsmvh%244dd%...
<http://groups.google.com/groups?hl=pl&lr=&ie=UTF-8&selm=9rhrpi%24phn%...
9. Acha, z matematyki też kiepsko:
<http://groups.google.com/groups?hl=pl&lr=&ie=UTF-8&selm=F7qz4.798%24K...
Chłopie z takim podejściem i inteligencją to do końca życia pozostaniesz
na poziomie takich arcydzieł jak to:
<http://programy.onet.pl/75,60,8546,programy.html
Pozostaje mi tylko dołączyć się do prośby z listu:
<http://groups.google.com/groups?hl=pl&lr=&ie=UTF-8&selm=9rjn9q%246va%...
którą w łagodniejszej postaci można wyrazić
...proszę odejść bardzo szybko i jak najdalej...
Ale wątpię byś posłuchał, bo dres z Ciebie jakich mało.
PLONK
GM
kod musi byc przejrzysty i najlepiej jak najkrutszy zebym mogl go szybko zrozumiec :)
i musi przy kazdej linijce miec wyczerpujacy komenttarz - opisujacy co dana linijka robi
! zaplace za takowy program !
%Funkcja ma za zadanie obliczyc wspolczynniki "c" metada eliminacji Gaussa
%Rownanie ma postac: F'*c=F
%Argumenty funkcji to F(x0) i F'(x0)
function f=gauss(Fp,F,n)
%Pierwszym etapem jest doprowadzenie rownania do postaci trojkatnej!
C=[Fp F];
for s= 1:n-1,
for i = s+1:n,
for j=s+1:n+1,
% disp(['s=',num2str(s),' i=',num2str(i),' j=',num2str(j),]);
C(i,j)=C(i,j)- ( C(i,s)./C(s,s) ).*C(s,j) ;
end
C(i,s)=0;
end
end
%etap drugi - rozwiazanie trojkatnego ukladu rownan!
%Wydzielam wartosci ai i bi z macierzy C
rozm=[];
for i=1:n,
rozm=[rozm i];
end
A=C(:,rozm);
B=C(:,n+1);
%tu algorytm obliczania
i=n-1;
x=zeros(n,1); %inicjuje x zerami.
x(n)=B(n)./A(n,n);
while (i =1),
suma=0;
for s=i+1:n,
suma=suma+A(i,s).*x(s);
end
x(i)=( B(i)-suma )./A(i,i);
i=i-1; % zmniejszaj i o 1
end
f=x; %zwrocenie wspolczynnikow
PZDR;
Sergiusz.
Cytat:| kod musi byc przejrzysty i najlepiej jak najkrutszy zebym mogl go szybko
zrozumiec :)
| i musi przy kazdej linijce miec wyczerpujacy komenttarz - opisujacy co
dana linijka robi| ! zaplace za takowy program !
stary, ile razy mozna Ci mowic, ze *nie rozwiazujemy zadan domowych* ?
przyslalem Ci ilestam linkow do programow w javie, ktore to robia.
jesli szukasz frajera, ktory Ci to napisze za Ciebie, to szukaj gdzie
indziej.nie pozdrawiam
a.
Cytat:Witajcie,
Nie bede wiele pisal...
Nie znam sie na programowaniu w C++ ani w Pascalu (ani chyba w zadnym innym
jezyku), a mam do zaliczenia przedmiot "Metody numeryczne" i aby go zaliczyc
trzeba rozwiazac 2 z 3 tematow cwiczen:
1. Rozwiązywanie równań nieliniowych
2. Odwracanie macierzy i obliczanie wyznaczników
3. Szybka transformata FourieraOpisy do tych zadan znajduja sie na stronie:
http://castor.am.gdynia.pl/~luksza/metody/index.htmNalezy wejsc na te strone, nastepnie na link Ćwiczenia i nastepnie na link
z poszczegolnych cwiczen.Mozne znajdzie ktos z Was czas by sprobowac to zrobic (2 z tych trzech).
Bede bardzo wdzieczny za wszelka pomoc
Z gory dzieki
Dykos
Gdy ja studiowałem (dawno!) to o niesamodzielnym rozwiązywaniu takich
zadań nie mogło być mowy, bo prowadzący bardzo dokładnie "konsultował"
kod programu ze studentem i żądał uzasadnienia wyboru takiej a nie innej
strategii rozwiązywania (na przykład - przy obliczaniu wyznacznika -
poszukiwania elementu wiodącego tylko w jednej kolumnie, zamiast wśród
wszystkich nieskreślonych elementów). Jeśli student nie miał pojęcia o
numerycznym obliczaniu wyznaczników, a przedstawił program (poprawny!)
obliczający wyznacznik, to oszustwo było oczywiste i ewentualne kolejne
próby zaliczenia student mógł juz sobie darować.
Czego marnemu z programowania studentowi jak najbardziej życzę. Nic tak
nie rozwija umiejętności jak wnikliwa dyskusja z pedantycznym belfrem.
Zresztą, są ludzie, którzy przez całe życie nie słyszeli o FFT czy
metodzie nadrelaksacji (że o eliminacji Gaussa-Jordana czy nawet samym
wyznaczniku nie wspomnę) a żyją nadal i to nieźle. Więc może nie warto
się wysilać?
Cytat:To sie nazywa metoda eliminacja Gaussa.
MM
Jacek
Cytat:roolin moglbys przypomniec zadania, bo widzialem ze miales zapisane?
Cytat:
Być może nie rozumie Pan różnicy między rozwiązaniem analitycznym a numerycznym.
Rozwiązanie analityczne polega na znalezieniu konkretnego wzór pozwalającego obliczyć poszukiwaną wartość. Przykładem jest rozwiązywanie układu równań liniowych.
Rozwiązanie numeryczne polega na tym, że nie mamy wzoru na obliczenia naszej niewiadomej. Mamy natomiast pewne kryterium, np. poszukiwana wartość minimalizuje jakąś funkcję. Wówczas próbujemy różnych wartości niewiadomych, aż natrafimy na jakieś minimum wspomnianego kryterium. Innymi dopasowując, a nie obliczając parametry do funkcji, stosował Pan metodę numeryczną. Być może o tym nie wiedząc.
Cytat:Dubitacjuszu,
podziwiam wytrwałość, ale nie sadzę byś doczekał się od GR konkretnych odpowiedzi na zadane pytania. To drążenie - to syzyfowa praca.
Dlatego nieśmiało postuluję byś tu dał sobie spokój a zaoszczędzoną energię skierował na tematy polityczne.
Cytat: Kiedys skonczylem Politechnike z dosc dobrym kursem matematyki (w kilku roznych odmianach), pozniej mialem duzo wspolnego z Akademia Ekonomiczna i mimo to chyba trudno mi zrozumiec Twoj sposob rozumowania -aczkolwiek nie twierdze, ze jest bledny. Moze to ja jestem troche leniwy
Wyjasnie prosto skad sie wzielo to moje 40%.
Mieszkajac w PL wydawalem rocznie X plz.
Mieszkajac w UK wydaje rocznie 1,4X plz.
dlatego twierdze, ze moje zycie w UK jest o 40% drozsze od zycia, ktore prowadzilem w PL.
Cytat:
Obecnie uklad ten rozwiazuje za
pomoca metody eliminacji Gaussa-Jordana (jesli bedzie trzeba uzyje
lepszej).
[...]
Znajac bledy wyznaczenia wspolzednych punktow ktore posluzyly
mi do policzenia wspolczynnikow potrzebuje oszacowac blad wspolrzednych
wyliczanych w wyniku przeksztalcenia.
$vec a = f(vec x)$.
Masz jednak błędy, a więc
$vec a + veceta = F(vec x + vecvarepsilon)
simeq f(vec x) + Jvecvarepsilon$,
gdzie zakładam, że $vecvarepsilon$ są małe, wystarczy rozwinięcie
do pierwszego rzędu, $J$ oznacza jakobian. Wobec tego macierz
kowariancji błędów estymatorów
$<vecetaveceta^T= <Jvecvarepsilonvecvarepsilon^TJ^T
=J<vecvarepsilonvarepsilon^TJ^T = JCJ^T$
gdzie <...oznacza wartoąść oczekiwaną, ${}^T$ transpozycję,
$C = <vecvarepsilonvecvarepsilon^T$ oznacza macierz kowariancji
pomiarów. Zauważ, że nawet jeśli pomiary są nieskorelowane ($C$ jest
diagonalna), błędy estymatorów na ogół będą skorelowane.
Myślę, że notacja TeXowa wyżej jest jasna. Po więcej, w szczególności
po wyjście poza przybliżenie liniowe (może nie będzie konieczne?),
zobacz u Brandta.
Cytat:Chcialbym rowniez znac metode na
oszacowanie bledow ktore wprowadzaja same obliczenia numeryczne.
Ogólnie błąd numeryczny będzie zdominowany przez błędy wprowadzone
przez dzielania z małymi dzielnikami. Oprócz ksiązek wymienionych
przez A.L., zobacz także początkowe rozdzaiły "wstepu do analizy
numerycznej" Ralstona.
Paweł Góra
Institute of Physics, Jagellonian University, Cracow, Poland
A physical entity does not do what it does because it is what it is,
but is what it is because it does what it does.