Informatica 5 Liceo Scientifico Scienze Applicate/Istruzioni Programmazione Octave/Esercizi

Indice del libro

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