neoziom Opublikowano 15 Listopada 2005 Zgłoś Opublikowano 15 Listopada 2005 Witam !! Szukałem na tym forum rozwiązania mojeo problemu i niestety nie znalazłem :cry: . Mianowicie mam do napisania program w pascalu który będzie rozwiązywał czteroliniowy układ równań metodą wyznacznikowa. Jeżeli ktoś wie jak stworzyć taki program, prosze o pomoc B) Z góry dziękuję :wink: Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
MeHow Opublikowano 15 Listopada 2005 Zgłoś Opublikowano 15 Listopada 2005 a ja Ci rzuce hinta. O ile pamietam to jakos na macierzach sie gmeralo. Prosze - wczytaj rownania do tablicy znakow, potem wspolczynniki przerzuc do macierzy i wykonaj na niej odpowiednie obliczenia :] Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
neoziom Opublikowano 15 Listopada 2005 Zgłoś Opublikowano 15 Listopada 2005 Z napisaniem programu bym sobie dał rade tylko nie wiem jak rozwiązać taki układ równań Oki to jak mam np. a1X + b1Y = c1 a2X + b2Y = c2 a3X + b3Y = c3 a4X + b4Y = c4 To mi daje : [ a1 b1] [c1 b1] [a1 c1] [ a2 b2] [c2 b2] [a2 c2] [ a3 b3] [c3 b3] [a3 c3] [ a4 b4] [c4 b4] [a4 c4] I teraz nie wiem jak jest z tymi wyznacznikami czyli wyznacznik główny ( WG ) ,Wyznacznik x-owy ( Wx ) i Wyznacznik y-owy ( Wy ). Nie wiem co z czym pomnożyć i co od czego odjąć. Bardzo prosze o pomoc, jesteście moją ostatnią deską ratunku . Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Haquim Opublikowano 16 Listopada 2005 Zgłoś Opublikowano 16 Listopada 2005 Z napisaniem programu bym sobie dał rade tylko nie wiem jak rozwiązać taki układ równań Oki to jak mam np. a1X + b1Y = c1 a2X + b2Y = c2 a3X + b3Y = c3 a4X + b4Y = c4 Ten ukłąd równań jest zapisaby nieprawidłowo - jak ma się 2 niewiadome i 4 równania to cos jest nie tak :lol: ? to chyba powinno wyglądać tak : a11 X1 +a12 X2+a13 X3 + a14 X4 = b1 a21 X1 +a22 X2+a23 X3 + a24 X4 = b2 a31 X1 +a32 X2+a33 X3 + a34 X4 = b3 a41 X1 +a42 X2+a43 X3 + a44 X4 = b4 Układ równań n z n niewiadomymi rozwiązuje się za pomocą wyznaczników tak samo niezależnie czy n=2,3,4 itp. . Ale róznie liczy się wyznaczniki : Obliczamy wyznacznik główny dla macierzy 4x4: W: |a11 a12 a13 a14 | |a21 a22 a23 a24 | |a31 a32 a33 a34 | |a41 a42 a43 a44 | i taki wyznacznik obliczamy korzystając z własności wyznaczników (działa ona także dla wyznacznika macierzy 3x3 :)): wybieramy kolumne lub wiersz (ja wybrałem 1 wiersz) W: |a11 a12 a13 a14 | |a21 a22 a23 a24 | |a31 a32 a33 a34 | |a41 a42 a43 a44 | Teraz obliczamy sume n wyznaczników stopnia (n-1) dla kazdego z elementów tego wiersz najpierw dla a11 nowy wyznacznik liczymy z macierzy powstałej z wykreslenia elementów które są w tej samej kolumnie lub wierszu co aij (jesli suma indeksów kolumny i wiersza elementu aij jest nieparzysta to mnożymy przez -1): W(a11): |a11 a12 a13 a14 | |a21 a22 a23 a24 | |a22 a23 a24 | |a31 a32 a33 a34 |-> |a32 a33 a34 |*a11 |a41 a42 a43 a44 | |a42 a43 a44 | teraz: W(a12) |a11 a12 a13 a14 | |a21 a22 a23 a24 | |a21 a23 a24 | |a31 a32 a33 a34 |-> |a31 a33 a34 |*a12*(-1) |a41 a42 a43 a44 | |a41 a43 a44 | z a13 i a14 postępujemy analogicznie : a W = W(a11) +W(a12)+W(a13)+W(a14) wyznaczniki Wx1,Wx2,Wx3,Wx4 otrzynujemy poprzez zamianę kolumny z współczynnikiami przy odpowiedniej niewiadomej za pomocą wyrazów wolnych np dla x2 wyznacznik macierzy wygląda tak: Wx2: |a11 b1 a13 a14 | |a21 b2 a23 a24 | |a31 b3 a33 a34 | |a41 b4 a43 a44 | aby go policzyć postepujemy tak jak przy liczeniu wyznacznika głównego ,ALE LICZYMY Z TEJ NOWEJ MACIERZY Wx2 = W(a11)+W(b1)+W(a13)+W(a14); *z tym że b1 ma sumę indeksów nieparzystą bo to 1 wiersz i 2 kolumna czyli razem 3 analogicznie postępujemy i obliczemy Wx1,Wx3,Wx4 x1 = Wx1/W x2 = Wx2/W itd. PS:W razie wątpliwości polecam Poradnik Encyklopedyczny - Bronsztajna , Algebrę Liniową -Skoczylasa albo spróbuj na Wikipedii , ewentualnie spytaj nauczyciela Matematyki Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
neoziom Opublikowano 16 Listopada 2005 Zgłoś Opublikowano 16 Listopada 2005 Haqim -> bardzo dziękuje za pomoc . Niestety, próbowałem to przerobić na kod źródłowy i poległem :sad: , czy ktoś mógłby mi pomóc ?? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Haquim Opublikowano 16 Listopada 2005 Zgłoś Opublikowano 16 Listopada 2005 Haqim -> bardzo dziękuje za pomoc . Niestety, próbowałem to przerobić na kod źródłowy i poległem :sad: , czy ktoś mógłby mi pomóc ??Rozwiąż choć jeden taki układ na papierze a wszystko stanie się proste , poza tym jak masz tylko układ równań 4x4 to kod w C wyglądałby mniej więcej tak wyznacznik4(int A[][],int nrNiewiadomej,int B[]){int pomA[3][3];int sum=0; if (0!=nrNiewiadomej)//wyznacznik główny { nrNiewiadomej--; for(j=0;j<wymiar;j++) //przepisujemy odpowiednie wyrazy wolne // w C wszystkie tablice indeksujemy od 0 A[j][nrNiewiadomej] = B[j] ; } for(int i=0;i<4;i++)//po kolumnach { for (int j=1;j<4;j++) //po wierszach { int ni=0; for(int k=0;k<4;k++) { if (k==i) continue; pomA=[j][ni];//uzupełnienie nowej macierzy 3x3 ni++; } } sum = sum+wyznacznik(pomA,i); }}int wyznacznik3(int A[][],int m){int wynik;int dodatnie = A[0][0]*A[1][1]*A[2][2]+A[0][1]*A[1][2]*A[2][0]+A[0][2]*[1][0]*[2][1];int ujemne = A[0][0]*A[1][2]*A[2][1]+A[0][1]*A[1][0]*A[2][2]+A[0][2]*[1][1]*[2][0];wynik = dodatnie- ujemne; if (1==(m%2) ) wynik = -wynik;return wynik;}main(){int A[4][4];int B[4];int W[5]; ??wczytaj dane for (int i=0;i<5;i++) W[i] = wyznacznik4(A,i,B); //masz obliczone wszystkie wyznaczniki dalej poradziszsobie sam :)}Powodzenia Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...