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