logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Rozwiązanie układu równań metodą eliminacji Gaussa

maciek11 16 Sty 2007 17:42 2429 7
REKLAMA
  • #1 3449731
    maciek11
    Poziom 17  
    Posty: 299
    Pomógł: 3
    Ocena: 7
    Czy ktoś już pisał podobny program w Pascalu i mógłby mi wytłumaczyć o co w nim chodzi? Proszę o szybką odpowiedź.
  • REKLAMA
  • #2 3451814
    jankolo
    Spoczywaj w Pokoju
    Posty: 32197
    Pomógł: 1792
    Ocena: 583
    Proszę pokazać nam napisany przez siebie program i opisać powstałe z nim problemy. Będziemy starali się pomóc.
    Proszę nie liczyć na to, że Forum napisze program za kolegę. Na to zgody nie będzie.
  • REKLAMA
  • #3 3457360
    _Gothic_
    Poziom 13  
    Posty: 68
    nie w pascalu, ale w scilabie jakis czas temu pisalem to razem z dziewczyna dla niej na zaliczenie, jesli jeszcze bedzie to miala to wrzuce
  • REKLAMA
  • #4 3459714
    maciek11
    Poziom 17  
    Posty: 299
    Pomógł: 3
    Ocena: 7
    Program mam, tylko chodzi mi o wytłumaczenie co z czym i dlaczego :D

    Zamieszczam go tutaj:

    program gauss;
    uses crt;
    const n=3;
    type tab2=array[1..n,1..n] of real;
    type tab=array[1..n] of real;
    var ta,tk,tj:tab2;
    tb,tx:tab;
    pl:text;

    procedure wpisz_a(var ta:tab2);
    {var i,j:integer;}
    begin
    ta[1,1]:=1;
    ta[1,2]:=3;
    ta[1,3]:=2;
    ta[2,1]:=2;
    ta[2,2]:=-2;
    ta[2,3]:=2;
    ta[3,1]:=3;
    ta[3,2]:=-1;
    ta[3,3]:=1;
    end;

    procedure wpisz_b(var tb:tab);
    begin
    tb[1]:=1;
    tb[2]:=2;
    tb[3]:=3;
    end;

    procedure wyswietl_a(var ta:tab2);
    var i,j:integer;
    begin
    for i:=1 to n do
    begin
    for j:=1 to n do
    write(ta[i,j]:1:1,' ');
    writeln;
    end;
    end;

    procedure wyswietl_b(var tb:tab);
    var i:integer;
    begin
    for i:=1 to n do
    writeln(tb[i]:1:1);
    end;

    procedure gaus(var ta:tab2;var tb:tab;var tx:tab);
    var i,j,k:integer;
    w:real;
    begin
    for k:=1 to n-1 do
    for i:=k+1 to n do
    begin
    tb[i]:=tb[i]-((ta[i,k]*tb[k])/ta[k,k]);
    for j:=k+1 to n do
    ta[i,j]:=ta[i,j]-((ta[i,k]*ta[k,j])/ta[k,k]);
    end;
    tx[n]:=tb[n]/ta[n,n];
    for k:=n-1 downto 1 do
    begin
    w:=0;
    for i:=k+1 to n do
    w:=w+ta[k,i]*tx[i];
    tx[k]:=(tb[k]-w)/ta[k,k];
    end;
    end;

    procedure odwroc(var ta:tab2;var tk:tab2);
    var i,j:integer;
    begin
    for i:=1 to n do
    begin
    for j:=1 to n do
    tb[j]:=0;
    tb[i]:=1;
    wpisz_a(ta);
    gaus(ta,tb,tx);
    for j:=1 to n do
    tk[j,i]:=tx[j];
    end;
    end;

    procedure mnozenie(var ta:tab2;var tk:tab2;var tj:tab2);
    var i,j,k:integer;
    temp:real;
    begin
    for i:=1 to n do
    begin
    for k:=1 to n do
    temp:=0;
    for j:=1 to n do
    tj[i,k]:=ta[i,j]*tk[j,k];
    end;
    end;

    procedure plik(var tj:tab2);
    var i,j:integer;
    begin
    assign(pl,'c:\tmp\gaus.txt');
    rewrite(pl);
    for i:=1 to n do
    begin
    for j:=1 to n do
    write(pl,tj[i,j]:1:1,' ');
    writeln(pl,' ');
    end;
    close(pl);
    end;

    BEGIN
    clrscr;
    wpisz_a(ta);
    wpisz_b(tb);
    wyswietl_a(ta);
    writeln;
    wyswietl_b(tb);
    gaus(ta,tb,tx);
    writeln;
    wyswietl_b(tx);
    odwroc(ta,tk);
    wyswietl_a(tk);
    mnozenie(ta,tk,tj);
    wyswietl_a(tj);
    plik(tj);
    END.
  • #5 3459896
    jankolo
    Spoczywaj w Pokoju
    Posty: 32197
    Pomógł: 1792
    Ocena: 583
    maciek11 napisał:
    chodzi mi o wytłumaczenie co z czym i dlaczego

    Nie rozumiem pytania. Z którym fragmentem programu kolega ma kłopoty i jakie?
  • #6 3460158
    Platon
    Poziom 42  
    Posty: 9185
    Pomógł: 744
    Ocena: 169
    To masz problem (1) z pascalem i implementacja algorytmu, czy po prostu (2) nie rozumiesz tej metody rozwiązywania równań?

    Jeżeli (1), to której częsci nie rozumiesz?
    Jeżeli (2) to pomyliłeś dział. Wyjaśnienie jest w podręcznikui do matematyki i w internecie.
  • REKLAMA
  • #7 3466971
    maciek11
    Poziom 17  
    Posty: 299
    Pomógł: 3
    Ocena: 7
    Nie do końca wiem, o co chodzi w procedurze Gaus. Algorytm rozumiem, ale z kodem juz gorzej :cry: (na szczęście tylko w tym fragmencie)
  • #8 3517299
    maciek11
    Poziom 17  
    Posty: 299
    Pomógł: 3
    Ocena: 7
    Widzę że nie ma w ostatnim czasie zainteresowania tym postem. W związku z tym zamykam temat.

Podsumowanie tematu

✨ Dyskusja dotyczy programu w Pascalu implementującego metodę eliminacji Gaussa do rozwiązania układu równań liniowych. Autor posiada kod programu i prosi o wyjaśnienie działania poszczególnych fragmentów, zwłaszcza procedury gaus, gdyż rozumie algorytm matematyczny, ale ma trudności z interpretacją kodu. Uczestnicy forum sugerują pokazanie własnego kodu i wskazanie konkretnych problemów, podkreślając, że nie będą pisać programu za autora. Jeden z użytkowników wspomina o podobnym rozwiązaniu w Scilabie. W odpowiedziach pojawia się prośba o sprecyzowanie, czy problem dotyczy implementacji w Pascalu, czy zrozumienia metody eliminacji Gaussa. Ostatecznie temat zostaje zamknięty z powodu braku dalszego zainteresowania.
Wygenerowane przez model językowy.
REKLAMA