![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 17.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam napisać skrypty php:
1. liczący rząd dowolnej macierzy 3x3 2. obliczający wyznacznik dowolnej macierzy Co do 1 to nie wiem jaką metodę tu wybrać, aby było to w ogóle możliwe do napisania. W 2 wiem, że tutaj metodą może być rozwinięcie Laplace'a, ale nie mam pomysłu jak to rekurencyjnie napisać. Przyda mi się każda pomoc i za każdą z góry dziękuję. |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 2 592 Pomógł: 445 Dołączył: 12.03.2007 Ostrzeżenie: (0%) ![]() ![]() |
Co do pierwszego punktu to możesz to obliczyć metodą Gaussa
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
ad 1) Wikipedia i przeczytaj tam o rzędzie macierzy... Masz nawet przykład jak zastosować do tego eliminacje Gaussa.
ad 2) Znów Wikipedia i tam poczytaj o wyznacznikach macierzy. Dla Twojego przypadku zwróć uwagę na rozwinięcie Laplace'a (trudniejsze w implementacji) lub eliminację Gaussa. To drugie ma mnóstwo implementacji w necie. Najprostsza sekwencyjna to Kod for( s=0; s<n; ++s) Gdzie A to macierz, zaś tab to wiersz wynikowy popularnie oznaczany w algebrze jako b dla równania Ax = b { tmp = tab[i][s] / tab[s][s]; for ( i=s+1; i<n; ++i) { for ( j=s; j<=n; ++j) A[i][j] = A[i][j] - tmp * A[s][j]; } } ![]() ![]() ![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 17.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
z tym rzędem już mi się udało, ale wyznacznika nie umiem za nic. Udało mi się znaleźć w internecie skrypt JS na wyznacznik, próba przekształcenia na php dała to:
ale zgodnie z przewidywaniami nie działa. Gdyby ktoś był uprzejmy pomóc ... |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Mój błąd... Podałem rozwiązanie na liczenie Gaussa jako układu równań. Czyli masz wtedy jeszcze wektor wynikowy b. Ty zaś masz sam wyznacznik policzyć. Do tego też jest masę linków w google. Wpisz sobie: wyznacznik kod Gauss i pooglądaj tematy
![]() -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 17.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mój błąd... Podałem rozwiązanie na liczenie Gaussa jako układu równań. Czyli masz wtedy jeszcze wektor wynikowy b. Ty zaś masz sam wyznacznik policzyć. Do tego też jest masę linków w google. Wpisz sobie: wyznacznik kod Gauss i pooglądaj tematy ![]() Wpisuję i wpisuję, ale z php nie da się nic znaleźć, nawet po angielsku szukanie nic nie daje. Jedynie to są jakiś przydługawe programy z delphi czy C++ czego na pewno nie przerzucę na PHP, skoro nawet mi się nie udało "przetłumaczyć' z JS. Więc chyba nie tak łatwo i nie takie gotowce, bo od 3 godzin nie ruszam ani kroku w przód z tym. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
C++ jest tak proste do przerzucenia na PHP, że ja nie wiem gdzie widzisz problem
![]() Dla tych znających choć podstawy C++ przepisanie kodu Gaussa z C++ na PHP z tych gotowców to będzie góra minutka ![]() ![]() A swoją drogą.. Przed chwilą spytałem wujka google i mi pokazał: To sobie tylko do PHP przerób. Jeśli masz już macierz trójkątna to wyznacznik jest równy iloczynowi liczb na przekątnej, czyli masz wzór dodatkowy powiększony jeszcze o:
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 17.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
moja przeróbka:
z czego jest: Warning: Division by zero in ......, oraz wyświetla niepoprawną wartość wyznacznika 0. To jakieś fatum ![]() |
|
|
![]()
Post
#9
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Jeśli nie widzisz błędu to debuguj krok po kroku cały skrypt. Zobacz gdzie Ci wyskoczy to dzielenie przez zero. Może jakaś zmienna się nie inicjuje prawidłowo. W pętlach więc może sobie wyświetlaj co się dzieje. W ten sposób wykryjesz na jakim etapie błąd wyskakuje.
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 1 Dołączył: 12.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Trochę to tak napisane jak w szkole kazali (dawno temu) ale powinno działać (nie wiem na ile efektywnie).
Zaczynam się bawić w php i dlatego proszę bardziej doświadczonych o komentarz. |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 25 Pomógł: 0 Dołączył: 17.10.2009 Ostrzeżenie: (0%) ![]() ![]() |
Trochę to tak napisane jak w szkole kazali (dawno temu) ale powinno działać (nie wiem na ile efektywnie).
Zaczynam się bawić w php i dlatego proszę bardziej doświadczonych o komentarz. Działa. Zdecydowanie ładna sprawa. Dziękuję. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 26.04.2025 - 00:57 |