Calcolare E Plottare Una Funzione In Matlab

Calcolatore e Plotter di Funzioni MATLAB

Inserisci i parametri della tua funzione per calcolare i valori e visualizzare il grafico corrispondente in MATLAB.

Guida Completa: Come Calcolare e Plottare una Funzione in MATLAB

MATLAB (MATrix LABoratory) è uno degli strumenti più potenti per l’analisi numerica, la visualizzazione dei dati e lo sviluppo di algoritmi. Una delle operazioni fondamentali in MATLAB è la capacità di calcolare e plottare funzioni matematiche, che risulta essenziale per ingegneri, matematici, fisici e data scientist.

In questa guida approfondita, esploreremo:

  • I fondamenti del plotting in MATLAB
  • Come definire diverse tipologie di funzioni (polinomiali, esponenziali, trigonometriche)
  • Tecniche avanzate di visualizzazione
  • Ottimizzazione delle prestazioni per funzioni complesse
  • Esempi pratici con codice pronto all’uso

1. Introduzione al Plotting in MATLAB

Il plotting in MATLAB si basa principalmente su tre funzioni fondamentali:

  1. plot(): per grafici 2D di base
  2. fplot(): per plottare funzioni matematiche
  3. ezplot(): interfaccia semplificata per plotting (deprecata nelle versioni recenti)
x = -10:0.1:10;
y = x.^2 + 3*x – 2;
plot(x, y, ‘b-‘, ‘LineWidth’, 2)
xlabel(‘Asse X’)
ylabel(‘Asse Y’)
title(‘Grafico di una funzione quadratica’)
grid on

2. Tipologie di Funzioni e Loro Implementazione

2.1 Funzioni Polinomiali

Le funzioni polinomiali sono tra le più comuni in MATLAB. Possono essere definite usando:

  • L’operatore . per operazioni elemento-per-elemento
  • La funzione polyval() per valutare polinomi
  • Il toolbox Symbolic Math per manipolazioni simboliche
% Definizione di un polinomio di 3° grado
p = [1 -3 0 2]; % rappresenta x³ -3x² +2
x = linspace(-5, 5, 100);
y = polyval(p, x);
plot(x, y, ‘r–‘, ‘LineWidth’, 2)
legend(‘y = x^3 -3x^2 +2’)

2.2 Funzioni Esponenziali e Logaritmiche

MATLAB gestisce nativamente le funzioni esponenziali attraverso:

  • exp(x) per l’esponenziale naturale ex
  • log(x), log10(x), log2(x) per i logaritmi
  • Operatori .^ per elevamenti a potenza elemento-per-elemento
Funzione Sintassi MATLAB Esempio di Plot
Esponenziale naturale y = exp(x) fplot(@exp, [-2 2])
Logaritmo naturale y = log(x) fplot(@log, [0.1 10])
Esponenziale con base arbitraria y = a.^x fplot(@(x)2.^x, [-3 3])

2.3 Funzioni Trigonometriche

MATLAB supporta tutte le principali funzioni trigonometriche con argomenti in radianti:

x = linspace(0, 2*pi, 1000);
y1 = sin(x);
y2 = cos(x);
y3 = tan(x);
plot(x, y1, ‘b’, x, y2, ‘r’, x, y3, ‘g–‘)
legend(‘sin(x)’, ‘cos(x)’, ‘tan(x)’)
axis([0 2*pi -2 2]) % Limita gli assi per tan(x)

3. Tecniche Avanzate di Visualizzazione

3.1 Personalizzazione dei Grafici

MATLAB offre estese possibilità di personalizzazione:

  • LineSpec: specifica colore, stile e marker (es: 'r--o')
  • LineWidth: spessore della linea
  • MarkerSize: dimensione dei marker
  • FaceColor/EdgeColor: per aree riempite

3.2 Grafici Multipli e Subplot

Per confrontare più funzioni:

x = linspace(0, 2*pi, 100);
subplot(2,2,1); plot(x, sin(x)); title(‘Seno’)
subplot(2,2,2); plot(x, cos(x)); title(‘Coseno’)
subplot(2,2,3); plot(x, tan(x)); title(‘Tangente’)
subplot(2,2,4); plot(x, exp(sin(x))); title(‘Composizione’)

3.3 Grafici 3D e Superfici

Per funzioni di due variabili:

[x,y] = meshgrid(-2:.2:2);
z = x.*exp(-x.^2 – y.^2);
surf(x,y,z)
xlabel(‘X’); ylabel(‘Y’); zlabel(‘Z’)

4. Ottimizzazione delle Prestazioni

Per funzioni complesse o grandi dataset:

  1. Usare linspace invece di : per controllo preciso sui punti
  2. Preallocare gli array con zeros() o ones()
  3. Evitare loop quando possibile (vettorizzazione)
  4. Usare fplot per funzioni definite analiticamente
  5. Per dati molto grandi, considerare plot3 o scatter3 con opzione 'Marker','.'
% Esempio di vettorizzazione efficiente
x = linspace(0, 10, 1e6); % 1 milione di punti
y = sin(x)./(x + eps); % eps evita divisione per zero
plot(x, y) % MATLAB gestisce efficientemente grandi dataset

5. Esportazione e Condivisione

MATLAB offre diverse opzioni per esportare i grafici:

Formato Comando MATLAB Uso Tipico Qualità
PNG print('graph.png', '-dpng', '-r300') Web, presentazioni Buona (300 DPI)
PDF print('graph.pdf', '-dpdf') Documenti accademici Eccellente (vettoriale)
EPS print('graph.eps', '-depsc') Pubblicazioni scientifiche Eccellente (vettoriale)
FIG savefig('graph.fig') Archiviazione per modifiche future Perfetta (formato nativo)

6. Errori Comuni e Soluzioni

Alcuni errori frequenti nel plotting di funzioni:

  1. Dimensioni incompatibili: Assicurarsi che x e y abbiano le stesse dimensioni
    % ERRATO:
    x = 1:10;
    y = [1:9]; % dimensione diversa
    plot(x,y) % Errore: “Vectors must be the same length”
  2. Divisione per zero: Usare eps per valori vicini a zero
    % CORRETTO:
    y = 1./(x + eps); % evita divisione per zero
  3. Funzioni non vettorializzate: Usare .^, .*, ./ invece di ^, *, /
    % ERRATO:
    y = x^2; % solo per scalari
    % CORRETTO:
    y = x.^2; % operazione elemento-per-elemento

7. Risorse Esterne e Approfondimenti

Per approfondire l’uso di MATLAB per il calcolo e plotting di funzioni:

8. Esempi Pratici Completi

8.1 Studio di Funzione Completo

Analisi di f(x) = (x³ - 3x² + 4)/(x² - 1):

% Definizione della funzione
f = @(x) (x.^3 – 3*x.^2 + 4)./(x.^2 – 1);

% Dominio (evitando x = ±1)
x = linspace(-5, 5, 1000);
x(x > -1.1 & x < -0.9) = NaN; % rimuove punti vicino a -1
x(x > 0.9 & x < 1.1) = NaN; % rimuove punti vicino a 1

% Calcolo e plot
y = f(x);
plot(x, y, ‘b-‘, ‘LineWidth’, 2)
hold on
plot([-1 1], [0 0], ‘ro’) % segna asintoti verticali
xlabel(‘x’); ylabel(‘f(x)’)
title(‘Studio di funzione con asintoti’)
grid on

% Asintoto orizzontale (per x → ±∞)
y_asintoto = x.*NaN + 1; % y=1
plot(x, y_asintoto, ‘k–‘)
legend(‘f(x)’, ‘Asintoti verticali’, ‘Asintoto orizzontale’)

8.2 Animazione di una Funzione Parametrica

Animazione di f(x,t) = sin(x - t):

x = linspace(0, 2*pi, 1000);
h = animatedline(‘Color’, ‘b’, ‘LineWidth’, 2);
axis([0 2*pi -1.5 1.5])
xlabel(‘x’); ylabel(‘sin(x-t)’); title(‘Onda mobile’)

for t = 0:0.1:2*pi
y = sin(x – t);
clearpoints(h)
addpoints(h, x, y)
drawnow
pause(0.05)
end

9. Confronto tra MATLAB e Alternative

MATLAB è lo standard de facto per il calcolo numerico, ma esistono alternative:

Strumento Vantaggi Svantaggi Costo Plotting
MATLAB
  • Ambiente integrato completo
  • Toolbox specializzati
  • Supporto tecnico professionale
  • Prestazioni ottimizzate
  • Costo elevato
  • Curva di apprendimento
  • Licenza richiesta
$$$ ⭐⭐⭐⭐⭐
Python (NumPy/SciPy/Matplotlib)
  • Gratuito e open-source
  • Grande comunità
  • Integrazione con altri tools
  • Meno ottimizzato per calcoli pesanti
  • Mancanza di ambiente integrato
  • Documentazione meno strutturata
Gratis ⭐⭐⭐⭐
Octave
  • Sintassi compatibile con MATLAB
  • Gratuito
  • Buona per prototipazione
  • Prestazioni inferiori
  • Mancanza di toolbox
  • Supporto limitato
Gratis ⭐⭐⭐
Wolfram Mathematica
  • Capacità simboliche superiori
  • Visualizzazione avanzata
  • Documentazione eccellente
  • Costo molto elevato
  • Meno diffuso in industria
  • Sintassi meno intuitiva
$$$$ ⭐⭐⭐⭐⭐

10. Best Practices per il Plotting Professionale

Per creare grafici di qualità pubblicabile:

  1. Scegliere il tipo di grafico appropriato:
    • Linee per trend continui
    • Barre per confronti discreti
    • Scatter plot per correlazioni
    • Istogrammi per distribuzioni
  2. Ottimizzare gli assi:
    • Usare xlim e ylim per focalizzare l’area di interesse
    • axis equal per mantenere le proporzioni
    • set(gca, 'XScale', 'log') per scale logaritmiche
  3. Aggiungere annotazioni:
    plot(x, y)
    text(pi/2, 0.5, ‘Punto di interesse’, ‘HorizontalAlignment’, ‘center’)
    annotation(‘arrow’, [0.3 0.2], [0.7 0.8]) % freccia personalizzata
  4. Esportare in formato vettoriale per pubblicazioni:
    print(‘-depsc’, ‘-tiff’, ‘-r300’, ‘figure.eps’) % EPS + TIFF incorporato
  5. Usare colormap appropriate:
    imagesc(magic(20))
    colormap(parula) % o: hot, jet, hsv, cool, etc.

11. Integrazione con Altri Strumenti

MATLAB può essere integrato con:

  • LaTeX: Esportare grafici in EPS/PDF per documenti accademici
    % In MATLAB:
    print(‘-depsc’, ‘graph.eps’)
    % In LaTeX:
    \begin{figure}[h]
    \centering
    \includegraphics[width=0.8\textwidth]{graph.eps}
    \caption{Grafico generato da MATLAB}
    \label{fig:matlabgraph}
    \end{figure}
  • Excel: Scambio dati tramite xlsread/xlswrite o writetable
  • Python: Tramite MATLAB Engine API for Python
  • Database: Connessione diretta con database toolbox

12. Futuro del Plotting in MATLAB

Le recenti versioni di MATLAB hanno introdotto:

  • Live Scripts: Documenti interattivi che combinano codice, output e testo formattato
  • App Designer: Creazione di interfacce utente professionali senza bisogno di GUI guide
  • Cloud Integration: Esecuzione di codice MATLAB su MATLAB Online o su cloud provider
  • Deep Learning Toolbox: Visualizzazione di reti neurali e feature maps
  • Reality Capture: Importazione di dati da sensori e dispositivi IoT

Conclusione

Il plotting di funzioni in MATLAB rappresenta una competenza fondamentale per qualsiasi professionista che lavori con dati numerici. Questa guida ha coperto:

  • Le basi del plotting 2D e 3D
  • Tecniche avanzate per diversi tipi di funzioni
  • Ottimizzazione delle prestazioni
  • Best practices per visualizzazioni professionali
  • Integrazione con altri strumenti e linguaggi

Per padronanza completa, si consiglia di:

  1. Sperimentare con i numerosi esempi nella documentazione MATLAB
  2. Esplorare i toolbox specifici per il proprio dominio (Signal Processing, Image Processing, etc.)
  3. Partecipare a comunità online come MATLAB Central
  4. Seguire corsi avanzati su Coursera o edX

Ricordate che la visualizzazione efficace dei dati non è solo una questione tecnica, ma anche artistica: un buon grafico deve essere sia accurato che chiaro nella comunicazione del messaggio sottostante.

Leave a Reply

Your email address will not be published. Required fields are marked *