Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] wyznacznik i rząd macierzy
coco
post
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ę.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
thek
post
Post #2





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 (IMG:style_emoticons/default/blinksmiley.gif) Większość tu piszących powie Ci to samo. Wiele języków skryptowych ma składnię wzorowaną na C++ i PHP tu nie jest wyjątkiem. Umiejąc C++ łatwo nauczysz się PHP i vice versa. Mają podobne nazewnictwo, struktury danych, struktury kontrolne. Jedynie czasem masz nieco inne podejście do danych bo jawnie podajesz ich typ i to wszystko. PHP jest znacznie prostszy niż C++.
Dla tych znających choć podstawy C++ przepisanie kodu Gaussa z C++ na PHP z tych gotowców to będzie góra minutka (IMG:style_emoticons/default/smile.gif) Zmienią może kilka rzeczy, tu coś dopiszą, tam usuną i to wszystko. Powiedz mi, czy z kodu w moim ostatnim poście zrobiłbyś kod w PHP? Jeśli tak to mam niespodziankę dla Ciebie. To jest kod w C++, gdzie n, s, tmp, A, tab, i, j zostały by zadeklarowane poza tym przeklejonym fragmentem. To co Ty wkleiłeś to na oko moim zdaniem algorytm rozwinięcia Laplace'a, bo widzę rekurencję w nim i liczenie wyznacznika w wyznaczniku z mnożeniem i dodawaniem. Algorytm liczący, ale makabrycznie długo dla dużych tablic. O ile by Ci pamięci starczyło by nie sypnął się (IMG:style_emoticons/default/winksmiley.jpg)
A swoją drogą.. Przed chwilą spytałem wujka google i mi pokazał:
  1. /*Element maxymalny w wierszu*/
  2. max=M[0][0];
  3. for(j=0;j<n;j++)
  4. {if (M[0][j]>max) max=M[0][j];}
  5. /*Zamiana kolumn pierwszej z ta gdzie jest element maxymalny*/
  6. for (i=0; i<n; i++)
  7. {max=M[i][j];
  8. zm= M[i][0];
  9. M[i][0]=M[i][j];
  10. M[i][j]=zm;
  11. }
  12. /*Zerowanie do macierzy trojkatnej*/
  13. for( i=1; i<n; i++){
  14. for (j=0; j<n; j++){
  15. M[i][j]=M[i][j]-((M[i][0]/M[0][0])*M[0][j]);
  16. }
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:
  1. $wyznacznik = 1;
  2. for($i=0, $i<$n; $i++)
  3. $wyznacznik *=M[i][i];
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 11.10.2025 - 01:10