Prova MatLab
Prova MatLab
Cognome Matr.
Nome N. lista
Il tempo concesso per svolgere lesame e di 60 minuti.
Salvo diversa indicazione, riportare negli appositi spazi solamente i comandi MATLAB necessari a
risolvere i problemi e leventuale risultato numerico.
Non verranno ritirati altri fogli oltre al presente.
E consigliato, tra un esercizio e laltro, cancellare tutti i dati salvati utilizzando il comando clear all.
La terzultima cifra del mio numero di matricola e K = . (Questo valore andra usato nei problemi seguenti.)
1. Disegnare il grafico della funzione f (x) = x cos(2|x|) nellintervallo [2, 2] con un linea rossa. Affiancare poi nella
stessa finestra grafica uno zoom della funzione nellintervallo [0.5, 0.5].
13 13
y = x2 x +
2. Fornire una stima dellarea compresa tra i grafici delle parabole di equazioni 3 3 utilizzando
y = x2 + x 11
17
3 3
una tecnica di tipo hit or miss.
syms x
f = sqrt(x^4-2)/abs(x-3)
limit(f, x, 3, left), limit(f, x, 3, right) % x = 3 asintoto verticale
limit(f, x, inf), m = limit(f/x, x, inf), q = limit(f - m*x, x, inf)
% Asintoto obliquo per x -> +inf, y = x + 3
limit(f, x, -inf), m = limit(f/x, x, -inf), q = limit(f - m*x, x, -inf)
% Asintoto obliquo per x -> -inf, y = -x - 3
4. Rappresentare
( la curva parametrica detta cicloide, i cui punti hanno coordinate definite dalle equazioni
x(t) = r(t sin t)
per t [0, 6] e r = K + 1.
y(t) = r(1 cos t),
Creare poi una animazione nella quale un punto si muove lungo la traiettoria prima da sinistra verso destra e poi in
senso contrario.
kappa = 0; r = kappa+1;
cicloide = @(t) [r*(t - sin(t)); r*(1 - cos(t))];
t = linspace(0, 6*pi, 100); punti = cicloide(t);
figure, plot(punti(1,:), punti(2,:), b-, Linewidth, 2), axis equal, hold on
for ii = 1:numel(theta)
h = plot(punti(1,ii), punti(2,ii), o-, Markersize, 8, LineWidth, 2);
pause(0.02), delete(h)
end
for ii = numel(theta):-1:1
h = plot(punti(1,ii), punti(2,ii), o-, Markersize, 8, LineWidth, 2);
pause(0.02), delete(h)
end
utilizzando il pacchetto simbolico di MATLAB. Rappresentare poi le soluzioni ottenute sul piano di Gauss.
syms k z
eq = z^3 - (k*(1+1i) + 2 - 1i)*z^2 + (k^2*1i + (3+2i)*k - 2i)*z - 2*k^2*1i - 2*k;
sol = solve(eq)
kappa = 1;
sol1 = subs(sol(1),k,kappa), sol2 = subs(sol(2),k,kappa), sol3 = subs(sol(3),k,kappa)
figure, hold on, plot(real(sol1), imag(sol1), xr, real(sol2), imag(sol2), xr, ...
real(sol3), imag(sol3), xr)
sol = 2, k*i, k - i
6. Descrivere il funzionamento del comando prod e fornire un esempio del suo utilizzo diverso da quelli presenti nellhelp
di MATLAB.
help prod
Sintassi: P = prod(X)
Il comando prod applicato a una lista di valori ritorna il prodotto degli elementi della lista
stessa.
Se applicato a una tabella...
7. Scrivere una funzione che, data in ingresso una lista a di n valori ai , i = 1, 2, . . . , n, calcoli la media geometrica di
questi ultimi, definita come a = n a1 a2 a3 . . . an .
Applicare poi la funzione alla lista di numeri a = [1, 2, 3, . . . , 10 + K] e riportare il risultato ottenuto in formato short.
a(1) = 1;
for ii = 1:10
a(ii+1) = a(ii)/2 + 1/a(ii);
end
figure, plot(1:numel(a), a, xb)
hold on, plot(1:numel(a), sqrt(2)+0*a, r--)
5
9. Determinare i valori positivi x e y tali che la quantita f = x2 +2y 2 xy sia minimizzata, sotto il vincolo xy = 10+K.
2
Effettuare ciascun passaggio utilizzando il pacchetto simbolico di MATLAB.
syms x y
f = x^2 + 2*y^2 - x*y
% Inserire il numero kappa corrispondente
y_x = solve(x - y = 10 + 1, y), f_x = subs(f, y, y_x), f_x = expand(f_x)
df_x = diff(f_x, x)
solve(df_x, x)
0: x = 15 1: x = 33/2 2: x = 18 3: x = 39/2 4: x = 21 5: x = 45/2 6: x = 24
y = 5 y = 11/2 y = 6 y = 13/2 y = 7 y = 15/2 y = 8
7: x = 51/2 8: x = 27 9: x = 57/2
y = 17/2 y = 9 y = 19/2
1 2 3 ... n
0 1 2 ... n 1
10. Scrivere una funzione che, dato in ingresso un valore n, ritorni la tabella di nn valori T =
0 0 1 ... n 2 .
.. .. .. . . ..
. . . . .
0 0 0 ... 1
function T = triangolare(n)
T = zeros(n);
for ii = 1:n
T(ii, ii:n) = 1:n-ii+1;
end
end