% Scheda di laboratorio n. 1/2007 % Vettori % Es. 1 % Crea un

Transcript

% Scheda di laboratorio n. 1/2007 % Vettori % Es. 1 % Crea un
%
%
%
%
%
%
%
Scheda di laboratorio n. 1/2007
Vettori
Es. 1
Crea un vettore x di N+1 numeri reali equispaziati
Costruisce un vettore f tale che f = x^2 e disegna la curva
5 Ottobre 2007
Ecate Nespoli
N
a
b
x
=
=
=
=
10; % Numero di partizioni nel vettore.
0;
1; % Estremi del vettore.
linspace(a,b, N+1); % Crea un vettore di N+1 punti equidistanziati compresi
% nell'intervallo I. NOTA: il comando x = linspace(a,b, N+1);
% e' equivalente all'istruzione x = a:(b-a)/N:b;
f = sqrt(x); % Assegna al vettore f il valore sqrt(x).
plot(x,f); % Disegna il grafico cartesiano della funzione f(x) = x^2.
%
%
%
%
%
%
%
%
%
Scheda 1, Es. 2
Legge oraria
Crea un funzione function [x,t] = Es2(omega, x0, v0, N)
che, avendo come input la frequenza del moto omega e la posizione x0
e la velocita' v0 iniziali e il numero di punti N, restituisca i vettori x e t che
rappresentano la legge oraria in un numero di punti sensato per un
intervallo di tempo che comprende 5 oscillazioni.
5 Ottobre 2007
Ecate Nespoli
function [x,t] = Es2(omega, x0, v0, N)
N_osc = 5; % numero di oscillazioni
t_max = N_osc * 2* pi / omega; % durata dell'osservazione del moto
t = linspace(0, t_max, N); % creo il vettore dei tempi
x = x0*cos(omega*t) + (v0/omega)*sin(omega*t); % creo il vettore delle coordinate
%==========================================
% Eventuale GRAFICO dell'Es. 3
plot(t,x);
xlabel('Tempo (s)')
ylabel('Posizione (m)')
grid on
%
%
%
%
%
%
%
%
%
%
Scheda 1, Es. 5
Legge oraria
Crea un funzione function [x,t,v,v_approx] = Es5(omega, x0, v0, N)
che, avendo come input la frequenza del moto omega e la posizione x0
e la velocita' v0 iniziali e il numero di punti N, restituisca i vettori
x,t,v e v_approx che rappresentano rispettivamente il vettore
spostamento, velocita' analitica e approssimata, calcolata in un
intervallo di tempo che comprende 5 oscillazioni.
5 Ottobre 2007
Ecate Nespoli
function [x,t,v,v_approx] = Es5(omega, x0, v0, N)
N_osc = 5; % numero di oscillazioni
t_max = N_osc * 2* pi / omega; % durata dell'osservazione del moto
t = linspace(0, t_max, N); % creo il vettore dei tempi
x = x0*cos(omega*t) + (v0/omega)*sin(omega*t); % creo il vettore delle coordinate
v = -omega*x0*sin(omega*t)+v0*cos(omega*t); % creo il vettore delle v analitiche
v_approx = (N-1)*diff(x)/t_max; % creo il vettore delle v approssimate
plot(t(1:N-1),v(1:N-1), '-pb', t(1:N-1),v_approx, '-or'); % disegno le due
% velocita', ricordandomi che v_approx ha N-1
% elementi
xlabel('Tempo (s)')
ylabel('Posizione (m)')
grid on
legend('v analitica','v approssimata')
%
%
%
%
%
%
%
%
%
%
Scheda di laboratorio n. 1/2007
Integrali
Es. 6
La funzione Es6, avendo come input il numero N di sottointervalli e gli
estremi di integrazione a e b, costruisce un vettore x di N+1 punti
equidistanziati e un vettore f tale che f = x^3. Restituisce il valore
dell'integrale della funzione f = x^3 nell'intervallo [a, b] usando il metodo
dei rettangoli.
5 Ottobre 2007
Ecate Nespoli
function I_approx = Es6(a,b,N)
dx = (b-a)/N; % Spaziatura fra due punti
x = linspace(a,b, N+1); % Crea un vettore di N+1 punti equidistanziati compresi
% nell'intervallo I.
f = x.^3; % Assegna al vettore f il valore x^3.
I_approx = dx*sum(f(1:N)); % Fornisce il valore approssimato dell'integrale della funzi
one
% f = x^3 nell'intervallo [a, b].
%
%
%
%
%
%
Scheda di laboratorio n. 1/2007
Integrali
Es. 7
Verifica come varia lo scarto fra soluzione approssimata e esatta dell'integrale
5 Ottobre 2007
Ecate Nespoli
a = 0;
b = 1; % Estremi del vettore.
N_min = 10; % Numero minimo di equipartizioni (utile quando si
% traccia il grafico dello scarto in funzione di N)
N_max = 1000; % Numero massimo di equipartizioni da considerare
for i = 1:N_max % Conta da 1 a 1000
% Numero di partizioni nel vettore.
I_approx(i) = Es6(a,b,i);
% Fornisce il valore approssimato dell'integrale della
% funzione f = x^3 nell'intervallo [a, b] e lo
% memorizza nell'N-esimo elemento del vettore I_approx
end
I_delta = abs(1/4 - I_approx);
% calcola l'errore fra soluzione approx e quella esatta
plot ((b-a)./[1:N_max], I_delta, '-pb');
% lo traccia
axis([0 (b-a)/N_min 0 I_delta(N_min)*1.2]); % Fissa i limiti degli assi in
% modo da condiderare solo le spaziature per N > N_min
% Scrive le informazioni necessarie nella finestra del grafico
title('Scheda 1, Esercizio 7');
xlabel('Spaziatura fra due punti (dx)');
ylabel('Scarto');
%
%
%
%
%
%
%
%
%
%
Scheda di laboratorio n. 1/2007
Integrali
Es. 8
La funzione Es8, avendo come input il numero N di sottointervalli e gli
estremi di integrazione a e b, costruisce un vettore x di N+1 punti
equidistanziati e un vettore f tale che f = x^3. Restituisce il valore
dell'integrale della funzione f = x^3 nell'intervallo [a, b] usando il metodo
dei trapezi.
5 Ottobre 2007
Ecate Nespoli
function I_approx2 = Es8(a,b,N)
dx = (b-a)/N; % Spaziatura fra due punti
x = linspace(a,b, N+1); % Crea un vettore di N+1 punti equidistanziati compresi
% nell'intervallo I. NOTA: il comando x = linspace(a,b, N+1);
% e' equivalente all'istruzione x = a:dx:b;
f = x.^3; % Assegna al vettore f il valore x^3.
I_approx2 = 1/2*dx*sum(f(1:N)+f(2:N+1));
% Fornisce il valore approssimato dell'integrale della funzione
% f = x^3 nell'intervallo [a, b].
%
%
%
%
%
%
Scheda di laboratorio n. 1/2007
Integrali
Es. 9
Verifica come varia lo scarto fra soluzione approssimata e esatta dell'integrale
5 Ottobre 2007
Ecate Nespoli
a = 0;
b = 1; % Estremi del vettore.
N_min = 10; % Numero minimo di equipartizioni (utile quando si
% traccia il grafico dello scarto in funzione di N)
N_max = 1000; % Numero massimo di equipartizioni da considerare
for i = 1:N_max % Conta da 1 a 1000
% Numero di partizioni nel vettore.
I_approx2(i) = Es8(a,b,i);
% Fornisce il valore approssimato dell'integrale della
% funzione f = x^3 nell'intervallo [a, b] e lo
% memorizza nell'N-esimo elemento del vettore I_approx
end
I_delta = abs(1/4 - I_approx2);
% calcola l'errore fra soluzione approx e quella esatta
plot ((b-a)./[1:N_max], I_delta, '-pb');
% lo traccia
axis([0 (b-a)/N_min 0 I_delta(N_min)*1.2]); % Fissa i limiti degli assi in
% modo da condiderare solo le spaziature per N > N_min
% Scrive le informazioni necessarie nella finestra del grafico
title('Scheda 1, Esercizio 9');
xlabel('Spaziatura fra due punti (dx)');
ylabel('Scarto');
%
%
%
%
%
%
%
%
Scheda di laboratorio n. 1/2007
Integrali
Es. 10
Verifica come varia lo scarto fra soluzione approssimata e esatta
dell'integrale e confronta i risultati ottenuti con il metodo dei
rettangoli e dei trapezi
5 Ottobre 2007
Ecate Nespoli
a = 0;
b = 1; % Estremi del vettore.
N_min = 10; % Numero minimo di equipartizioni (utile quando si
% traccia il grafico dello scarto in funzione di N)
N_max = 1000; % Numero massimo di equipartizioni da considerare
for i = 1:N_max % Conta da 1 a 1000
% Numero di partizioni nel vettore.
I_approx(i) = Es6(a,b,i); % rettangoli
I_approx2(i) = Es8(a,b,i); % trapezi
% Fornisce il valore approssimato dell'integrale della
% funzione f = x^3 nell'intervallo [a, b] e lo
% memorizza nell'N-esimo elemento del vettore I_approx
end
I_delta = abs(1/4 - I_approx);
I_delta2 = abs(1/4 - I_approx2);
% calcola l'errore fra soluzione approx e quella esatta
plot ((b-a)./[1:N_max], I_delta, '-pb');
hold on; % lo traccia
plot ((b-a)./[1:N_max], I_delta2, '-or');
% scriviamo il secondo plot assieme al primo
hold off;
axis([0 (b-a)/N_min 0 I_delta(N_min)*1.2]); % Fissa i limiti degli assi in
% modo da condiderare solo le spaziature per N > N_min
% Scrive le informazioni necessarie nella finestra del grafico
title('Scheda 1, Esercizio 10');
xlabel('Spaziatura fra due punti (dx)');
ylabel('Scarto');
legend ('rettangoli', 'trapezi');