Pytanie odnośnie macierzy

0

witam,

nie mogę poradzić sobie z macierzą 17 wierszy na 3 do 8 kolumn. Chodzi o to, że macierz, wypełniona jest dużą ilością zer i to powoduje błąd dzielenia przez zero.

oto fragment kodu liczy macierz 4 na 4 (nie sprawdza się przy 17 na 17):

//********** ROZKLAD LU **************************

for i := 1 to n do
  begin
    for j := i to n do
      begin
        s1 := 0;
        s2 := 0;
        for k := 1 to i-1 do
          begin
            s1 := s1 + (l[i,k] * u[k,j]);
            s2 := s2 +(l[j,k] * u[k,i]);
          end;
          u[i,j] := a[i,j] - s1;
          if j = i then
            l[i,i] := 1;
          if j > i then
          l[j,i] := (a[j,i] - s2)/ u[i,i];
        end;

  end;

//********** ROZWIAZANIE LY=B ***********************

FOR i := 1 to n do
  begin
    s1 := 0;
    for k:= 1 to i-1 do
      s1 := s1 + (l[i,k]*y[k]);
    y[i] := (b[i] - s1)/l[i,i];
  end;

//************ ROZWIAZANIE UX=Y *********************

for i:=n downto 1 do
  begin
    s1 := 0;
    for k := i+1 to n do
      s1 := s1 + (u[i,k]*x[k]);
    x[i] := (y[i] - s1)/u[i,i];
  end;

I właśnie przy tej 17 na 17 wyskakuje błąd dzielenia przez zero.

Pytanie 2:
Czy można wykorzystać biblioteki matlaba do wykonywania operacji na macierzach (np. policzenie rzędu macierzy)

dzięki

0

wzorow nie sprawdzam (za dużo znaczkow aby mi się chciało) ale jakie masz dane? masz dzielenie przez u[i,i] co jak dobrze rozumiem jest polem tablicy. Jesli tam będzie zero to musi się wywalić z krzykiem.
Prawdopodobnie masz skopany algorytm, że probojesz dzielić przez zero - oryginalny algorytm na pewno albo nie dopuszcza do takiej sytuacji albo wie ze jeśli tam jest zero to .... Pomijam już fakt że dzielenei przez liczbę bez sprawdzenia czy nie jest zerem, lub obsłużenia komunikatu "dzielisz przez zero" to bład techniczny programisty.
Andrzej Dąbrowski

1 użytkowników online, w tym zalogowanych: 0, gości: 1