MATRICE INVERSA IN TURBO PASCAL

di il
11 risposte

MATRICE INVERSA IN TURBO PASCAL

Ciao,io dovrei fare un programma in turbo pascal per calcolare la matrice inversa....qualcuno l'ha mai fatta o sa come si fa?io l'ho fatta con excel e vi posso dire in excel come si fa....
inserire la matrice;
calcolare il determinante;
calcolare la matrice trasposta(si colcolacombiando le righe con le colonne);
calcolare la matrice aggiunta;
calcolare la matrice inversa(si calcoladivedendo ogni elemento per il determinante);
e per fare la verifica calcolare la matrice identità;
spero che mi siate d'aiuto....
grazie....

11 Risposte

  • Re: MATRICE INVERSA IN TURBO PASCAL

    Ciao.. da come hai scritto l'algoritmo per calcolare la matrice inversa lo conosci già.. la sintassi del pascal la conosci??

    se si.. ti basta inserire i tuoi dati in una matrice:

    type
    Matrice = Array of [1..10, 1..10] of Integer;

    in questo modo puoi definire una variabile di tipo Matrice.. ad es:

    Matrice miaMatr;

    In questo caso miaMatr acquisisce tutti i metodi del tipo Matrice.. quindi anke gli indici.. per assegnare ad es. un valore alla matrice nella posizione 1, 1 si scriverà:

    miaMatr[1, 1] := 3

    quindi per eseguire tutte le procedure da te elencate non devi vare altro che modificare la tua matrice.. magari anke appoggiandoti a vettori:

    type
    Vettore = Array of [1..10] of Integer;

    cmq.. se hai qualche dubbio.. basta chiedere...

    Saluti...
  • Re: MATRICE INVERSA IN TURBO PASCAL

    Ciao.. sono ancora io.. ti riporto qua un semplicissimo esempio in pascal per calcolare la matrice tasposta.. basta solo invertire gli indici..

    program trasp;

    type
    Matrice = Array [1..4, 1..4] of integer;

    var miaM : Matrice;
    var i : integer;
    var j : integer;

    begin
    miaM[1, 1] := 1;
    miaM[1, 2] := 2;
    miaM[1, 3] := 3;
    miaM[1, 4] := 4;

    miaM[2, 1] := 5;
    miaM[2, 2] := 6;
    miaM[2, 3] := 7;
    miaM[2, 4] := 8;

    miaM[3, 1] := 9;
    miaM[3, 2] := 10;
    miaM[3, 3] := 11;
    miaM[3, 4] := 12;

    miaM[4, 1] := 13;
    miaM[4, 2] := 14;
    miaM[4, 3] := 15;
    miaM[4, 4] := 16;

    writeln('Matrice');
    for i := 1 to 4 do begin
    for j := 1 to 4 do begin
    write(miaM[i, j]);
    write(' ');
    if j = 4 then writeln('');
    end;
    end;

    writeln('Matrice trasposta');
    for i := 1 to 4 do begin
    for j := 1 to 4 do begin
    write(miaM[j, i]);
    write(' ');
    if j = 4 then writeln('');
    end;
    end;
    end.

    Per gli altri passaggi.. ti posso dare una mano.. cmq fammi sapere se ti funziona questo codice...

    Saluti...
  • Re: MATRICE INVERSA IN TURBO PASCAL

    Si so come si fa in excel ma non so fare il codice pascal...praticamente dovrei fare per ogni operazione una procedura?quindi una procedura che carichi la matrice;
    una che calcoli in determinante;
    una la matrice trasposta;
    una quella aggiunta;una quella inversa;
    e alla fine la matrice identità...giusto?
    il mio problema e che non so fare le procedure.......
  • Re: MATRICE INVERSA IN TURBO PASCAL

    Ciao.. puoi fare o delle procedure o mettere tutto nel corpo del codice senza richiamare niente.. ma ti consiglio di fare delle procedure.. beh.. io l'input te l'ho dato cn la procedura della trasposta.. hai visto come si definisce una matrice e come si può utilizzare..
    eh eh.. nn posso mica scriverti tutto io.. se no.. ti toglierei il piacere!!
    cmq.. in internet troverai una valanga di esempi di codice.. così puoi imparare la sintassi.. e se avrai qualke problema o qualke dubbio.. sarò felice di aiutarti...

    Saluti...
  • Re: MATRICE INVERSA IN TURBO PASCAL

    La matrice detrminante l'ho gia fatta in un altro programma per0 per calcolarla ho fatto una procedura della matrice estesa e una procedura della matrice determinante nel programma della matrice inversa non li devo mettere queste due procedure?grazie.....
  • Re: MATRICE INVERSA IN TURBO PASCAL

    Ciao.. certo.. devi inserire tutte le procedure che ti servono per calcolare la matrice inversa.. ma ovviamente se sono scritte in un altro linguaggio di programmazione .. le devi tradurre in pascal...

    Saluti...
  • Re: MATRICE INVERSA IN TURBO PASCAL

    No sono scritte in pascal
  • Re: MATRICE INVERSA IN TURBO PASCAL

    Allora è perfetto.. basta che ti copi quel codice e lo incolli nel tuo progetto.. e così quelle funzioni le potrai utilizzare nel tuo programma...

    Saluti...
  • Re: MATRICE INVERSA IN TURBO PASCAL

    Ecco quello che ho fatto fino ad ora...la procedura per il caricamento della matrice,la matrice estesa e il calcollo del determinante....che vene pare?va bene fino a qui?grazie......

    Program gest_matr;
    const dim=20;
    type matrice=array[1..dim,1..dim] of integer;
    var n:integer;m:matrice;


    Procedure carica(var nx:integer;var mx:matrice9;
    var I,J:integer;
    begin
    repeat
    writeln('inserisci le dimensioni della matrice');
    readln(nx);
    until (nx>1) and (nx<=dim)
    for I:=1 to nx do
    for J:=1 to nx do
    begin
    writeln('inserisci l'elemento in posizione',I',J');
    readln(mx[I,J]);
    end;
    end;

    Procedure matrice_estesa(ny:integer;var my:matrice);
    var I;J;A:integer;
    begin
    for J:=1 to (ny-1) do
    begin
    A:=my+J;
    for I:=1 to my do
    my[I,A]:=my[I,J];
    end;
    end;

    prosedure determinante(nx:integer;mx:matrice;var dx:integer);
    var i,j,a,b:integer;prod:integer;
    begin
    dx:=0;
    for j:=1 to nx do
    begin
    prod:=1;
    for i:=1 to nx do
    prod:=prod*mx[i,j+i-1];
    dx:=dx+prod;
    end;
    for j:=1 to nx do
    begin
    prod:=-1;
    for i:=1 to nx do
    prod:=prod*mx[i,j-i+nx];
    dx:=dx-prod;
    end;
    end;
  • Re: MATRICE INVERSA IN TURBO PASCAL

    Ciao,ho trovato un altro modo per fare la matrice trasposta....eccolo:

    Matrice Trasposta(M:matrice;var m1:matrice;dim:integer);
    var I,J:integer;
    begin
    for I:=1 to nx do
    for J:=1 to nx do
    m1[I,J]:=m[J,I];
    end;

    nella procedura della matrice trasposta basta invertire gli indici...qualcuno di voi ha mai fatto la matrice aggiunta?è un casino,per chi non lo sa per calcolare la matrice aggiunta a ogni elemento della matrice bisogna escludere la sua righa e la sua colonna...fatemi sapere...grazie...
    ciao
  • Re: MATRICE INVERSA IN TURBO PASCAL

    Scusate ho letto questa discussione e siccome devo fare un programma in pascal dove devo sommare due matrici sono arrivato nel punto che non riesco a sommarle potete aiutarmi?? qui sotto c'è il programma che ho scritto fino ad ora
    Program Somma_tra_due_Matrici;
    const
    R=3;
    C=4;
    R1=3;
    C1=4;
    var
    VM: array[1...R, 1...C] of real;
    V1M1: array[1...R1, 1...C1] of real;
    j,k,y,w: integer;
    V2M2:real;
    Procedure Caricamento_Matrice;
    Begin
    writeln('Inserire 12 numeri');
    writeln;

    For j:=1 to R do
    for k:=1 to C
    do readln(VM[j,k]);
    end;
    Procedure Caricamento_Matrice2;
    Begin
    writeln('Inserire 12 numeri');
    writeln;

    For y:=1 to R do
    for w:=1 to C
    do readln(V1M1[y,w]);
    end;
    Begin
    writeln('Caricamento e somma delle due matrici');
    Caricamento_Matrice;
    writeln,
    Caricamento_Matrice2;
    writeln;
    if (R=R1) and (C=C1) then
    Begin
    writeln('somma possibile');
    V2M2:= VM[j,k]+V1M1[y,w];
    end
    else
    Begin
    if (R<>R1) and (C<>C1) then
    writeln('somma impossibile');
    end;
    readln;
    end.
Devi accedere o registrarti per scrivere nel forum
11 risposte