 |
Coders' city Nasza pasja to programowanie!
|
| Zobacz poprzedni temat :: Zobacz następny temat |
| Autor |
Wiadomość |
Maro88 Gość
|
Wysłany: Pon Sty 16, 2012 1:44 am Temat postu: Bardzo złożone losowanie. |
|
|
Witam. Mam problem, bo potrzebuję napisać funkcję, która zwraca kwadratową macierz. Macierz ta musi spełniać następujące punkty: a) nie być osobliwa (to nie problem) b) być symetryczna (nie problem) c) zawierać zarówno liczby dodatnie, ujemne, rzeczywiste i całkowite (w sumie też nie problem) d) spełniać taką zależność, że liczby na przekątnych będą większe od poprzedników w danym rzędzie e) w jednym losowaniu posiadać elementy tego samego rzędu, a w innym rzędów odległych. Na razie doszedłem do czegoś takiego i o ile algorytm Gaussa bez wyboru elementu podstawowego do rozwiązywania układów równań radzi sobie dobrze, o tyle już z pełnym wyborem jest problem. I tu proszę o pomoc. Oto losowanie:
| Kod: |   function losuj(n : Integer) : matrix;
  var
  i, j, k: Integer;
  macierz : matrix;
  temp, suma: Extended;
  begin
  SetLength(macierz, n+1, n+2);
  Randomize();
 
  for i:=1 to n do
  begin
  for j:=i to n+1 do
  begin
  if j = n+1 then
  while macierz[i][j] <= 0 do
  macierz[i][j] := random(1000)/10
  else
  macierz[i][j] := -1;
  end;
  end;
 
  for i:=1 to n do
  begin
  suma := 0;
  for j:=1 to i do
  begin
  while macierz[i][j] <= 0 do
  begin
  macierz[i][j] := random(1000)/10;
  temp := random(100);
  macierz[i][j] := macierz[i][j] * temp;
  if macierz[i][i] <= 0 then
  begin
  while macierz[i][i] = 0 do
  begin
  macierz[i][i] := random(1000)/10;
  end;
  end;
  end;
  if i > 1 then
  begin
  for k:=1 to i-1 do
  begin
  suma := suma + power(macierz[i][k],2);
  end;
  while (sqr(macierz[i][i]-suma))<=0 do
  begin
  macierz[i][i] := random(1000)/10;
  end;
  end;
  end;
  end;
 
  for i:=1 to n-1 do
  begin
  for j:=i+1 to n do
  begin
  macierz[i][j] := macierz[j][i];
  end;
  end;
 
  Result := macierz;
  end;
|
|
|
| Powrót do góry |
|
 |
|
|
kortyg
Dołączył: 15 Cze 2009 Posty: 49 Skąd: Wrocław
|
Wysłany: Czw Sty 26, 2012 4:38 pm Temat postu: |
|
|
Jakoś tego nie rozumiem. Definiujesz macierz: SetLength(macierz, n+1, n+2); a musi być kwadratowa. Pogaj jak zadeklarowałeś matrix. _________________ Ed |
|
| Powrót do góry |
|
 |
|
|
Możesz pisać nowe tematy Możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Możesz dodawać załączniki na tym forum Możesz pobierać pliki z tego forum
|
 Debug: strone wygenerowano w 0.06527 sekund, zapytan = 7
|