% 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');