Informatica 5 Liceo Scientifico Scienze Applicate/Istruzioni Programmazione Octave/Esercizi
Aspetto
Es.1
Dato un vettore di 10 elementi calcola la media dei valori contenuti Sol.
v=[1 -4 -3 6 1 -1 7 1 3 2] n=10; somma=0; for i=1:n somma=somma+v(i); end media=somma/n
Es.2
Dato un vettore di 10 elementi calcola il massimo e la posizione del massimo Sol.
v=[1 -4 -3 16 1 -1 7 1 3 2] n=10; massimo=v(1); posmassimo=1; for i=2:n if(v(i)>massimo) massimo=v(i); posmassimo=i; end end fprintf("il massimo vale %i ", massimo) fprintf("e si trova nella posizione %i \n", posmassimo)
Es.3
Dato un vettore di 10 elementi calcola quante volte il numero 5 e' presente nel vettore Sol.
v=[1 -4 -3 16 5 -1 7 5 3 2] n=10; conta=0; for i=1:n if(v(i)==5) conta=conta+1; end end fprintf("il numero 5 e' presente %i volte \n", conta)
Es.3a
Disegna il grafico della funzione seno di ampiezza 5 (almeno un periodo) Sol.
t=0:0.1:8; y=5*sin(t); plot(t,y);
Es.4
Verifica se la matrice A e' simmetrica (non puoi utilizzare la trasposta) Sol.
A=[2 3 4 5; 3 7 8 9; 4 8 0 6; 5 9 6 4 ] nr=4; nc=4; for r= 1 : nr-1 for c= r+1 : nr if A(r,c)!=A (c,r) error('matrice non simmetrica') endif endfor endfor fprintf('matrici simmetriche')
Es 5
Dato un sistema di equazioni lineari del tipo Ax=b risolvi il sistema prima triangolarizzando il sistema e poi ricavando le incognite del vettore x Sol:
A=[2 3 4 5 6; 3 7 8 9 2; 4 8 0 6 1; 5 9 6 4 3; 5 2 -4 4 3] b=[2; 3; 6; 0; 3 ] nr=5; nc=5; % la soluzione e' questa sol1=inv(A)*b % noi la ricaviamo triangolarizzando il sistema for r= 1 : nr-1 for rx= r+1 : nr k= -A(r,r)/A(rx,r); A(rx,:)=k*A(rx,:)+A(r,:); b(rx,1)=k*b(rx,1)+b(r,1); end end % e poi iterativamente troviamo le incognite x(nr,1) = b(nr,1)/A(nr,nr); for r= nr-1:-1:1 somma=0; for k= r+1:nc somma=x(k,1)*A(r,k)+somma; end x(r,1)=( b(r,1)-somma)/A(r,r); end x
Es 6
Data una matrice trovare le coppie di righe che hanno la stessa somma
Sol:
A=[1 2 3; 4 5 6; 5 6 4; 2 2 2]; nr=4; nc=3; for i=1:nr v(i)=0; for j=1:nc v(i)=v(i)+A(i,j); end; end; for(i=1:nr-1) for(j=i+1:nr) if(v(i)==v(j)) printf("la riga %d e la riga %d hanno la stessa somma\n",i,j); endif endfor endfor