Calcolare Funzioni Su Matlab

Calcolatore Funzioni MATLAB

Inserisci i parametri della tua funzione per calcolare risultati e visualizzare grafici interattivi

Funzione Inserita:
Valore al Punto Specificato:
Intervallo Analizzato:
Massimo Assoluto:
Minimo Assoluto:

Guida Completa al Calcolo di Funzioni in MATLAB

MATLAB (MATrix LABoratory) è uno degli strumenti più potenti per il calcolo numerico, l’analisi dei dati e la visualizzazione grafica. Questo articolo ti guiderà attraverso tutti gli aspetti fondamentali per lavorare con le funzioni in MATLAB, dalle basi alla creazione di script avanzati.

1. Introduzione alle Funzioni in MATLAB

In MATLAB, una funzione è un blocco di codice che esegue un compito specifico e può restituire zero o più valori di output. Le funzioni possono essere:

  • Funzioni integrate: Fornite direttamente da MATLAB (es: sin, exp, log)
  • Funzioni anonime: Definite in una singola riga usando il comando @
  • Funzioni utente: Create in file .m separati
  • Funzioni inline: Simili alle anonime ma con sintassi diversa (meno usate nelle versioni recenti)

2. Creazione di Funzioni Base

Per creare una funzione semplice in MATLAB, puoi usare diverse approcci:

// Funzione anonima f = @(x) x.^2 + 3*x – 2; // Valutazione in un punto result = f(5); // Valutazione su un vettore x = -10:0.1:10; y = f(x); plot(x, y);

Per funzioni più complesse, è meglio creare un file .m separato:

function y = quadraticFunction(x, a, b, c) % QUADRATICFUNCTION Calcola un’equazione quadratica % y = quadraticFunction(x, a, b, c) calcola y = a*x^2 + b*x + c % Input: % x – valore o vettore di input % a, b, c – coefficienti % Output: % y – risultato y = a.*x.^2 + b.*x + c;

3. Operazioni Matematiche Comuni

Operazione Funzione MATLAB Esempio Risultato
Addizione + 5 + 3 8
Moltiplicazione matrice * [1 2; 3 4] * [5; 6] [17; 39]
Moltiplicazione elemento-wise .* [1 2] .* [3 4] [3 8]
Potenza matrice ^ [1 2; 3 4]^2 [7 10; 15 22]
Potenza elemento-wise .^ [1 2].^3 [1 8]
Radice quadrata sqrt sqrt(16) 4
Logaritmo naturale log log(exp(1)) 1

4. Funzioni Trigonometriche

MATLAB fornisce tutte le principali funzioni trigonometriche che lavorano sia in radianti che in gradi:

% Seno e coseno x = 0:pi/100:2*pi; y_sin = sin(x); y_cos = cos(x); plot(x, y_sin, x, y_cos); legend(‘sin(x)’, ‘cos(x)’); title(‘Funzioni Seno e Coseno’); % Conversione gradi-radianti degrees = 45; radians = deg2rad(degrees); sin_deg = sind(degrees); % Equivalente a sin(deg2rad(degrees))

5. Funzioni Esponenziali e Logaritmiche

Le funzioni esponenziali e logaritmiche sono fondamentali in molti campi scientifici:

% Funzione esponenziale x = -2:0.1:2; y = exp(x); plot(x, y); title(‘Funzione Esponenziale’); % Logaritmi x = logspace(-1, 1, 100); % 100 punti tra 0.1 e 10 y_nat = log(x); % Logaritmo naturale y_base10 = log10(x); % Logaritmo base 10 y_base2 = log2(x); % Logaritmo base 2

6. Ottimizzazione e Trovare Zeri di Funzione

MATLAB offre potenti funzioni per trovare zeri, minimi e massimi:

% Trovare lo zero di una funzione f = @(x) x.^3 – 6*x.^2 + 11*x – 6; zero = fzero(f, 2); % Cerca vicino a x=2 % Trovare il minimo di una funzione x = fminbnd(@(x) x.^2 + 3*sin(x), 0, 5); % Risolvere equazioni non lineari solve(‘x^3 – 6*x^2 + 11*x – 6 = 0’, ‘x’);

7. Integrazione e Derivazione Numerica

Per operazioni di calcolo integrale e differenziale:

% Derivata numerica f = @(x) x.^2 + 3*x + 2; x = 2; h = 0.0001; derivative = (f(x+h) – f(x))/h; % Integrale definito integral(@(x) x.^2, 0, 1); % ∫x² dx da 0 a 1 % Integrale di una funzione definita da punti x = linspace(0, pi, 100); y = sin(x); area = trapz(x, y); % Metodo dei trapezi

8. Visualizzazione Grafica Avanzata

La visualizzazione è uno dei punti di forza di MATLAB:

% Grafico 2D con personalizzazioni x = -pi:0.1:pi; y = sin(x); plot(x, y, ‘r-‘, ‘LineWidth’, 2); title(‘Funzione Seno’); xlabel(‘x (radianti)’); ylabel(‘sin(x)’); grid on; legend(‘sin(x)’); % Grafico 3D [X, Y] = meshgrid(-2:0.1:2); Z = X.*exp(-X.^2 – Y.^2); surf(X, Y, Z); title(‘Superficie 3D’); xlabel(‘X’); ylabel(‘Y’); zlabel(‘Z’);

9. Lavorare con Funzioni di Più Variabili

Per funzioni multivariate, MATLAB offre strumenti potenti:

% Funzione di due variabili f = @(x,y) x.^2 + y.^2; % Valutazione result = f(3, 4); % Grafico 3D [x, y] = meshgrid(-5:0.1:5); z = f(x, y); surf(x, y, z); % Derivate parziali numeriche h = 0.0001; df_dx = @(x,y) (f(x+h,y) – f(x,y))/h; df_dy = @(x,y) (f(x,y+h) – f(x,y))/h;

10. Funzioni Ricorsive

MATLAB supporta anche funzioni ricorsive:

function y = factorial(n) % FATTORIALE Calcola il fattoriale di n % y = factorial(n) if n == 0 y = 1; else y = n * factorial(n-1); end

11. Funzioni di MATLAB per l’Ottimizzazione

Funzione Descrizione Esempio
fminunc Minimizzazione non vincolata x = fminunc(@(x) x(1)^2 + x(2)^2, [1;1])
fmincon Minimizzazione con vincoli x = fmincon(@objfun, x0, A, b)
fsolve Risoluzione di sistemi non lineari x = fsolve(@myfun, x0)
ode45 Risoluzione di equazioni differenziali [t,y] = ode45(@vdp1, [0 20], [2; 0])
integral Integrazione numerica q = integral(@(x) exp(-x.^2), 0, Inf)
fzero Trovare zeri di funzione x = fzero(@cos, 1)

12. Creazione di Funzioni Personalizzate con Input/Output Multipli

Le funzioni possono avere multiple input e output:

function [area, perimeter] = circleProps(radius) % CIRCLEPROPS Calcola area e perimetro di un cerchio % [area, perimeter] = circleProps(radius) area = pi * radius^2; perimeter = 2 * pi * radius;

Chiamata della funzione:

[a, p] = circleProps(5); fprintf(‘Area: %.2f, Perimetro: %.2f\n’, a, p);

13. Gestione degli Errori nelle Funzioni

È importante validare gli input:

function y = safeSqrt(x) % SAFESQRT Calcola la radice quadrata con controllo errori % y = safeSqrt(x) if x < 0 error('Input must be non-negative'); end y = sqrt(x);

14. Funzioni Nidificate e Handle di Funzione

MATLAB supporta funzioni nidificate e handle di funzione:

function y = nestedExample(x) % NESTEDEXAMPLE Esempio di funzione nidificata function z = square(u) z = u^2; end y = square(x) + 2*x; end % Handle di funzione fhandle = @sin; x = pi/2; result = fhandle(x);

15. Prestazioni e Ottimizzazione delle Funzioni

Per migliorare le prestazioni:

  • Preallocare gli array quando possibile
  • Usare operazioni vettoriali invece di loop
  • Evitare variabili globali
  • Usare tic/toc per misurare i tempi
  • Considerare l’uso di MEX files per codice critico
% Confronto prestazioni tic; for i = 1:10000 y = sin(i); end loopTime = toc; tic; x = 1:10000; y = sin(x); vectorTime = toc; fprintf(‘Tempo con loop: %.4f s\n’, loopTime); fprintf(‘Tempo vettoriale: %.4f s\n’, vectorTime);

Risorse Esterne Autorevoli

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

Domande Frequenti

Come definisco una funzione in MATLAB?

Puoi definire una funzione in tre modi principali:

  1. Funzione anonima: f = @(x) x.^2 + 3*x;
  2. Funzione in un file .m separato (migliore per funzioni complesse)
  3. Funzione locale all’interno di uno script

Come valuto una funzione in un punto specifico?

Se hai definito f = @(x) x.^2 + 2*x;, puoi valutarla in x=3 con f(3) che restituirà 15.

Come traccio il grafico di una funzione?

Usa questi passaggi:

x = -10:0.1:10; % Crea un vettore di valori x y = x.^2 + 3*x – 2; % Calcola y per ogni x plot(x, y); % Traccia il grafico title(‘Funzione Quadratica’); xlabel(‘x’); ylabel(‘f(x)’); grid on;

Come trovo gli zeri di una funzione?

Usa la funzione fzero:

f = @(x) x.^3 – 6*x.^2 + 11*x – 6; zero = fzero(f, 2); % Cerca uno zero vicino a x=2

Come calcolo l’integrale di una funzione?

Usa la funzione integral:

f = @(x) x.^2 + 3*x; area = integral(f, 0, 5); % Integrale da 0 a 5

Come creao una funzione con più output?

Definisci più output tra parentesi quadre:

function [sum, product] = sumAndProduct(a, b) sum = a + b; product = a * b; end

Come gestisco gli errori in una funzione?

Usa error, warning e try-catch:

function y = safeDivide(a, b) if b == 0 error(‘Division by zero’); end y = a / b; end

Leave a Reply

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