marcusp 0 Denunciar post Postado Setembro 9, 2006 olá alguem pode me ajudar pra fazer o calculo da decomposição LU de uma matriz em PASCALuma matriz 20x20 , fazendo pivotação , depois calcula-se LY=PB (aonde achasse os y ) e depois calcula-se UX=Y pra acharmos os x .nao estou conseguido fazer esse trabalho de jeito nehum.c alguem puder ajudar...ficarei grato!OBRIGADO PELA ATENÇÃO! Compartilhar este post Link para o post Compartilhar em outros sites
vinnydracon 0 Denunciar post Postado Setembro 9, 2006 cara ñ entendi mta coisa desse treco q você pssou ai cara explica melhor oq seria esse lance de Pivotação!?explique melhor cara!?:D abraços e aguardo resposta! Compartilhar este post Link para o post Compartilhar em outros sites
Cypher 0 Denunciar post Postado Setembro 10, 2006 Afinal o que é o LU????? Compartilhar este post Link para o post Compartilhar em outros sites
marcusp 0 Denunciar post Postado Setembro 13, 2006 http://www2.brazcubas.br/professores1/arqu...e%20matrizes%22 da uma olhadinha no link! axu q vai ajudar! vlw pela ajuda! ^^ Compartilhar este post Link para o post Compartilhar em outros sites
Robex 171 0 Denunciar post Postado Setembro 13, 2006 Cara nem vou tentar te ajudar pq isso é muito dificil... boa sorte!!! Compartilhar este post Link para o post Compartilhar em outros sites
marcusp 0 Denunciar post Postado Setembro 15, 2006 program calculo; uses wincrt; const n = 2; type tpmatriz = array [1..n,1..n] of real; tpvetor = array [1..n] of real; var ma,ml,mc : tpmatriz; vb,vy,vx : tpvetor; {##### SUBPROGRAMA #####} PROCEDURE ler_matriz (var a: tpmatriz; var b: tpvetor); var i,j: integer; begin write ('Digite a matriz a: Digite a matriz b:'); writeln; for i:=1 to n do begin for j:=1 to n do begin gotoxy (j*5,i*2); readln (a[i,j]); end; end; for i:=1 to n do begin gotoxy (50,i*2); readln (b); end; end; PROCEDURE copia (var a,c: tpmatriz); var i,j:integer; begin for i:=1 to n do begin for j:=1 to n do begin c[i,j]:=a[i,j]; end; end; end; PROCEDURE calculo_lu (var a,b : tpmatriz); var i,j,k : integer; passa : boolean; m : tpvetor; begin j:=1; passa:=true; repeat for i:=1 to n do begin m:=0; end; if (a[j,j]=0) then begin writeln ('Pivo i zero, logo nco i possivel resolver.'); passa:=false; end else begin for i:= (j+1) to n do begin m:=(a[i,j]/a[j,j]); end; for i:=(j+1) to n do begin for k:= j to n do begin a[i,k]:=(a[i,k]-(m*a[j,k])); end; end; for i:= 1 to n do begin b[i,j]:=m; b[i,i]:=1; end; end; j:=j+1; until ((j=n) or (passa=false)); end; PROCEDURE achar_y (var a,b : tpvetor; var c: tpmatriz); var i,j : integer; soma: real; begin a[1]:=b[1]; for i:= 2 to n do begin soma:=0; for j:= 1 to n do begin if (i>j) then begin soma:=soma+(c[i,j]*a[j]); end; end; a:=b-soma; end; end; PROCEDURE achar_x (var a,b: tpvetor; var c: tpmatriz); var i,j,k : integer; soma: real; begin k:=n; i:=n; a[n]:=b[n]/c[n,n]; while (i>0) do begin soma:=0; for j:= 1 to n do begin if (i<j) then begin soma:=soma+(c[i,j]*a[i+1]); end; end; a:=(b-soma)/c[k,k]; k:=k-1; i:=i-1; end; end; PROCEDURE imprimir (a : tpmatriz); var i,j : integer; begin for i:=1 to n do begin for j:=1 to n do begin gotoxy (j*10,i*2); write (a[i,j]:5:2); end; end; end; PROCEDURE imprimir_v (a : tpvetor); var i,j : integer; begin for i:=1 to n do begin gotoxy (10,i*2); write (a:5:2); end; end; {##### PROGRAMA PRINCIPAL #####} begin ler_matriz (ma,vb); copia (ma,mc); calculo_lu (ma,ml); achar_y (vy,vb,ml); achar_x (vx,vy,ma); readkey; clrscr; imprimir (ml); readkey; clrscr; imprimir (ma); readkey; clrscr; imprimir_v (vy); readkey; clrscr; imprimir_v (vx); readkey; clrscr; end. consegui issu...mas tem algumas coisas erradas... alguem pode ajudar? CONSEGUI ISSU ...MAS TEM ALGUMAS COISAS ERRADAS ALGUEM PODE AJUDAR?? program calculo; uses wincrt; const n = 2; type tpmatriz = array [1..n,1..n] of real; tpvetor = array [1..n] of real; var ma,ml,mc : tpmatriz; vb,vy,vx : tpvetor; {##### SUBPROGRAMA #####} PROCEDURE ler_matriz (var a: tpmatriz; var b: tpvetor); var i,j: integer; begin write ('Digite a matriz a: Digite a matriz b:'); writeln; for i:=1 to n do begin for j:=1 to n do begin gotoxy (j*5,i*2); readln (a[i,j]); end; end; for i:=1 to n do begin gotoxy (50,i*2); readln (b); end; end; PROCEDURE copia (var a,c: tpmatriz); var i,j:integer; begin for i:=1 to n do begin for j:=1 to n do begin c[i,j]:=a[i,j]; end; end; end; PROCEDURE calculo_lu (var a,b : tpmatriz); var i,j,k : integer; passa : boolean; m : tpvetor; begin j:=1; passa:=true; repeat for i:=1 to n do begin m:=0; end; if (a[j,j]=0) then begin writeln ('Pivo i zero, logo nco i possivel resolver.'); passa:=false; end else begin for i:= (j+1) to n do begin m:=(a[i,j]/a[j,j]); end; for i:=(j+1) to n do begin for k:= j to n do begin a[i,k]:=(a[i,k]-(m*a[j,k])); end; end; for i:= 1 to n do begin b[i,j]:=m; b[i,i]:=1; end; end; j:=j+1; until ((j=n) or (passa=false)); end; PROCEDURE achar_y (var a,b : tpvetor; var c: tpmatriz); var i,j : integer; soma: real; begin a[1]:=b[1]; for i:= 2 to n do begin soma:=0; for j:= 1 to n do begin if (i>j) then begin soma:=soma+(c[i,j]*a[j]); end; end; a:=b-soma; end; end; PROCEDURE achar_x (var a,b: tpvetor; var c: tpmatriz); var i,j,k : integer; soma: real; begin k:=n; i:=n; a[n]:=b[n]/c[n,n]; while (i>0) do begin soma:=0; for j:= 1 to n do begin if (i<j) then begin soma:=soma+(c[i,j]*a[i+1]); end; end; a:=(b-soma)/c[k,k]; k:=k-1; i:=i-1; end; end; PROCEDURE imprimir (a : tpmatriz); var i,j : integer; begin for i:=1 to n do begin for j:=1 to n do begin gotoxy (j*10,i*2); write (a[i,j]:5:2); end; end; end; PROCEDURE imprimir_v (a : tpvetor); var i,j : integer; begin for i:=1 to n do begin gotoxy (10,i*2); write (a:5:2); end; end; {##### PROGRAMA PRINCIPAL #####} begin ler_matriz (ma,vb); copia (ma,mc); calculo_lu (ma,ml); achar_y (vy,vb,ml); achar_x (vx,vy,ma); readkey; clrscr; imprimir (ml); readkey; clrscr; imprimir (ma); readkey; clrscr; imprimir_v (vy); readkey; clrscr; imprimir_v (vx); readkey; clrscr; end. consegui issu...mas tem algumas coisas erradas... alguem pode ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
Cypher 0 Denunciar post Postado Setembro 19, 2006 antes de mais a identação ....pergunto me se alguem se deu ao trabalho de ler este ultimo tópico da maneira que se encontra !!!XD axo que não !!! Compartilhar este post Link para o post Compartilhar em outros sites