Anteprima
Vedrai una selezione di 14 pagine su 65
Appunti di teoria e uso MatLab presi a lezione di Metodi numerici per ingegneria navaleavale, a.a. 23-24  Pag. 1 Appunti di teoria e uso MatLab presi a lezione di Metodi numerici per ingegneria navaleavale, a.a. 23-24  Pag. 2
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Appunti di teoria e uso MatLab presi a lezione di Metodi numerici per ingegneria navaleavale, a.a. 23-24  Pag. 6
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Appunti di teoria e uso MatLab presi a lezione di Metodi numerici per ingegneria navaleavale, a.a. 23-24  Pag. 11
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Appunti di teoria e uso MatLab presi a lezione di Metodi numerici per ingegneria navaleavale, a.a. 23-24  Pag. 16
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Appunti di teoria e uso MatLab presi a lezione di Metodi numerici per ingegneria navaleavale, a.a. 23-24  Pag. 21
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Appunti di teoria e uso MatLab presi a lezione di Metodi numerici per ingegneria navaleavale, a.a. 23-24  Pag. 26
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Appunti di teoria e uso MatLab presi a lezione di Metodi numerici per ingegneria navaleavale, a.a. 23-24  Pag. 31
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Appunti di teoria e uso MatLab presi a lezione di Metodi numerici per ingegneria navaleavale, a.a. 23-24  Pag. 36
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Appunti di teoria e uso MatLab presi a lezione di Metodi numerici per ingegneria navaleavale, a.a. 23-24  Pag. 41
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Appunti di teoria e uso MatLab presi a lezione di Metodi numerici per ingegneria navaleavale, a.a. 23-24  Pag. 46
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Appunti di teoria e uso MatLab presi a lezione di Metodi numerici per ingegneria navaleavale, a.a. 23-24  Pag. 51
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Appunti di teoria e uso MatLab presi a lezione di Metodi numerici per ingegneria navaleavale, a.a. 23-24  Pag. 56
Anteprima di 14 pagg. su 65.
Scarica il documento per vederlo tutto.
Appunti di teoria e uso MatLab presi a lezione di Metodi numerici per ingegneria navaleavale, a.a. 23-24  Pag. 61
1 su 65
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

UNIVERSITÀ DEGLI STUDI DI GENOVA

SCUOLA POLITECNICA

DITEN

Dipartimento di Ingegneria Navale, Elettrica,

Elettronica e delle Telecomunicazioni

DELL’INSEGNAMENTO DI METODI

APPUNTI MATLAB

NUMERICI PER L’INGEGNERIA NAVALE Filippo Bosia

Anno Accademico 2023/2024

INDICE

1-INTRODUZIONE

1.2-Grafici bidimensionali

1.3-Grafici tridimensionali

1.4-Importare dati da Excel

1.5-Functions

1.6-Array multidimensionali

1.7-Creare files di dati

2-APPROSSIMAZIONE DI FUNZIONI

2.1-Interpolazione lineare

2.2-Interpolazione polinomiale

2.3-Spline

2.4-Minimi quadrati (Regressione)

3-CICLI

3.1-Ciclo for

3.2-Esempio

3.3-Ciclo while

3.4-Esempio

4-APPLICAZIONI

4.1-Introduzione

4.2-Debugging

4.3-Esercitazione applicazione lineare con App

4.4-Variabile visibile in tutto il codice

4.5-Strutture

4.6-Callbacks per altre componenti

4.7-Condivisione App

5-SIMULAZIONE E VIDEO

5.1-Introduzione

6-EQUAZIONI DIFFERENZIALI ORDINARIE (ODE)

6.1-Codice Eulero esplicito

6.2-Runge-Kutta (4) (ODE45)

7-SERIE E TRASFRMATA DI FOURIER

7.1-Introduzione

7.2-Esempio

7.3-Segnale campionato con tempo diverso da 1 s

8-SISTEMI DI EQUAZIONI NON LINEARI

8.1-Metodo di bisezione (ordine 1)

8.2-Metodo di Newton-Raphson o della tangente (ordine 2)

8.3-Funzioni già in MatLab

8.4-Esempio 1: radice partendo da un punto

8.5-Esempio 2: radice in un intervallo iniziale

8.6-Esempio 3: funzione da definire

8.7-Sistema di equazioni non lineari

9-OTTIMIZZAZIONE

9.1-Introduzione

9.2-Vincolo con disuguaglianza lineare

9.3-Vincolo con disuguaglianza ed uguaglianza lineare

9.4-Limiti superiori e inferiori

9.5-Vincoli non lineari

9.6-Osservazione

1-INTRODUZIONE MATLAB

All’interno dell’editor si scrive il codice, nella command window si possono dare istruzioni o definire

variabili, nel workspace sono visualizzati i valori di tutte le variabili.

Con un simbolo percentuale % è possibile inserire commenti affianco al codice, con due simboli percentuale

%% si crea una sezione.

Per far andare il codice si schiaccia su run, oppure run section per far eseguire una singola sezione.

All’inizio del codice si inseriscono:

per cancellare le variabili precedentemente salvate nel workspace;

clear all; per chiudere tutti i grafici aperti;

close all;

per cancellare la command window.

clc; doc

Per cercare nel manuale MatLab si può scrivere nella command window seguito dalla funzione, oppure

in alto a destra in search documentation.

1.1-Definizione variabili e comandi più usati

In MatLab tutte le variabili sono viste come matrici.

matrice_riga=[1 2 3];

matrice_colonna=[1;2;3];

matrice_colonna_trasposta=matrice_colonna';

matrice_quadrata=[1 2 3;4 5 6;7 8 9];

Per selezionare un elemento o più di una matrice:

matrice_quadrata(1,2)=2; %il primo numero indica la riga, il secondo la colonna

B=matrice_quadrata(1:2,2:3); %due punti indicano da dove a dove

C=matrice_quadrata(1:end,:); % i due punti significano tutte le righe/colonne

D=matrice_quadrata(1:end,end); %and significa ultima riga/colonna

Per sapere la lunghezza di un vettore o le dimensioni in righe e colonne di una matrice:

v=[2 5 6 7];

A=[1 2 3;4 5 6;7 8 9];

n=length(v); % funzione che dice quanto è lungo il vettore

[m,n]=size(A); % funzione che dice dimensioni matrice

% se c’è più di un output si mettono le parentesi quadre

Per eseguire un’operazione su ogni elemento della matrice o vettore si mette un punto . prima

dell’operatore:

matrice_riga=[1 2 3];

matrice_colonna=[1;2;3];

matrice_riga.*matrice_colonna=[1 2 3;2 4 6;3 6 9]

matrice_riga*matrice_colonna=14 %senza punto è il normale prodotto tra matrici

x=5;

esponenziale=exp(x); %e elevato a x

x_5=exp(B); %esponenziale di ciascun elemento della matrice B

radice_quadrata=sqrt(x); %radice quadrata della variabile x

logaritmo_naturale=log(x); %logaritmo naturale della variabile x

logaritmo_base_dieci=log10(x); %logaritmo in base dieci della variabile x

C=[A B]; %affianca le due matrici

D=[A,B]; %affianca le due matrici

E=[A;B]; %mette una matrice e sotto l'altra

F=3*A+1; %aggiunge 1 ad ogni elemento

A=zeros(3,2); %matrice di tutti 0 di dimensione 2x3

A=ones(2,3); %matrice di tutti 1 di dimensioni 2x3

A([1 3],2) %prendo riga 1,3 e la colonna 2

I=eye(2,2); %matrice identita dimensioni 2x2

det_a=det(A); %determinante della matrice

inv_a=inv(A); %inverso matrice oppure D^(-1)

[autovettori,autovalori_e]=eig(E); %colonna con autovalori e matrice dei relativi auto

vettori di E

Per creare un vettore:

A=linspace(1,20,20);%vettore di 20 elementi equi spaziati da 1 a 20 (inizio, fine,

numero elementi)

A_1=1:1:20; %stessa cosa (inizio:passo:fine)

B_1=20:-1:1; %vettore da 20 a 1 con passo 1, il meno serve perchè si va a decrescere

1.2-Grafici bidimensionali

Dopo aver definito un vettore dominio X e una funzione Y si grafica nel seguente modo:

x=linspace(0,2*pi); %vettore dominio

y=sin(x); %funzione

figure() %apre una nuova finestra dove visualizzare il grafico

plot(x,y) %comando per plottare

grid on; %aggiunge il grigliato

box on; %racchiude il grafico

hold on; %comando per graficare la prossima funzione nella stessa figure

plot(x,cos(x))

Si possono modificare i grafici a piacimento con i seguenti comandi:

plot(x,y,'Color','r','LineWidth',3,'Marker','o','LineStyle', '--'

); %colore rosso, spessore 3, marker rotondi e linea tratteggiata

title('Grafico'); %titolo grafico

xlabel('asse x'); %titolo asse x

ylabel('asse y'); %titolo asse y

xlim([0 1200]); % modifico limiti dell'asse x

ylim([0 0.07]); % modifico limiti dell'asse y

xticks([200 250 300]); %si può mettere anche un vettore già creato, mette qui valori

sulle x

xticklabels('x=T0'); %da un nome al punto sull'asse x

Altri comandi utili:

plot(x,y,'--gs',... % verde con square come markers

'LineWidth',2,...

'MarkerSize',10,... %dimensione markers

'MarkerEdgeColor','b',... %colore bordo dei markers

'MarkerFaceColor',[0.5,0.5,0.5]) %colore interno del markers con RGB in percentuale

Il comando è usato per plottare su una figure due o più grafici differenti:

subplot()

x=linspace(0,2*pi);

subplot(2,1,1); %grafico con due righe e una colonna, metto al posto 1

y1=sin(x);

plot(x,y1,'Color','r');

grid on;

box on;

subplot(2,1,2);

y2=sin(5*x);

plot(x,y2,'Color','b');

grid on;

box on; Figura 1: grafici plottati con il codice precedente

Un altro metodo per plottare sullo stesso grafico più funzioni aggiungendo una legenda:

x=linspace(0,10);

y1=sin(x);

y2=sin(5*x);

y3=cos(x);

plot(x,y1,'r',x,y2,'g--',x,y3,'b-');

legend('sin','5sin','cos');

hold on %significa continua a plottare sulla stessa finestra finché non metto HOLD OFF

axis equal % mette stessa scala sui due assi

grid on %mette il grigliato

Figura 2: grafici plottati con il codice precedente

1.3-Grafici tridimensionali

Prima di graficare una curva nello spazio, è necessario definire il dominio bidimensionale.

Si può per esempio definire in egual modo l’asse x e y.

x = -2:0.1:2;

y = x;

[X,Y] = meshgrid(x,y); %crea il grigliato

F = X.*exp(-X.^2-Y.^2); %funzione F(x,y)=z che si vuole graficare

surf(X,Y,F,'EdgeColor','none','FaceAlpha',0.7) %FACEALPHA è tra 0 e 1 e indica la

trasparenza

view(45,0) %ruota il grafico con 90° di azimut e 0 di elevazione del comando precedente

Figura 3: curva graficata

Altri metodi per graficare nello spazio:

contour(X,Y,F,'ShowText','on') %grafica le linee di livello con passo costante

contour3(X,Y,F,'ShowText','on') %grafica le linee di livello con passo costante ma

nello spazio Figura 4 e 5: grafici ottenuti con i comandi precedenti

Si possono plottare anche delle curve parametrizzate:

t = 0:pi/50:10*pi;

st = sin(t);

ct = cos(t);

plot3(st,ct,t) Figura 6: grafico del codice precedente

1.4-Importare dati da Excel

Si salva il foglio Excel nella stessa cartella del file MatLab, deve però essere chiuso quando è letto.

Figura 7: foglio Excel da esportare

M=readmatrix('Aletta_Sez_Rettangolare_Parte_1.xlsx','Sheet','Proprietà Termofisiche

Aria'); %leggo dalla pagina del file indicato e memorizzo la tabella nella matrice M

x=M(:,1); %salvo la prima colonna Temperatura

y=M(:,2); %salvo la seconda colonna Conducibilità

plot(x,y,'blue');

xlabel('Temperature [K]');

ylabel('Conducibilità [W/m*K]');

1.5-Functions

Si utilizzano le functions per facilitare la lettura del codice richiamando una determinata funzione

all’occorrenza.

Può essere scritta nello stesso foglio in cui la si vuole utilizzare, sempre al fondo, oppure la si può salvare in

un foglio a parte per poterla richiamare in un qualsiasi file MatLab.

La function deve essere salvata con il nome usato nel suo codice.

%% Esempio function 1

close all

clear all

clc

x=3;

j=f1(x);

function y=f1(x)

y=2*x.^2;

end

In questo caso la funzione è salvata come f1.m se in un foglio a parte.

%% Esempio function 2

% trovare valore massimo del vettore v

v=[5 6 3 67 8];

y=massimo(v);

function y=massimo(v)

y=max(v);

end

1.6-Array multidimensionali

non c’è limite alle dimensioni degli array che possono essere creati, ma le prime due dimensioni

In MatLab

corrispondono sempre alle righe e alle colonne della matrice mentre le ulteriori dimensioni sono dette

pagine. Ad esempio, un array tridimensionale può essere pensato come una sovrapposizione di matrici dove

dimensione (quota) consente di passare da una matrice all’altra. Un comando che consente di creare

la terza cat.

array di n dimensioni è

A=[1 1;2 2];

B=[0 0;2 2];

C=cat(3,A,B); % il 3 indica la dimensione dell’oggetto (immagino sia un cubo)

C(:,:,1)=[1 1;2 2];

C(:,:,2)=[0 0;2 2];

D=cat(4,C,C);

D(:,:,1,1)=[1 1;2 2];

D(:,:,2,1)=[0 0;2 2];

D(:,:,1,2)=[1 1;2 2];

D(:,:,2,2)=[0 0;2 2];

1.7-Creare files di dati

È possibile scrivere una serie di dati e variabili e salvarle in un file binario, così da poterlo caricare in un

altro codice MatLab.

a=5;

b=32;

c=[1 2 3];

save file1

In questo modo le informazioni sono salvate nel file1.mat, nella stessa cartella di lavoro MatLab.

Per caric

Dettagli
Publisher
A.A. 2023-2024
65 pagine
SSD Scienze matematiche e informatiche MAT/08 Analisi numerica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher bobby13 di informazioni apprese con la frequenza delle lezioni di Metodi numerici per l'ingegneria navale e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli studi di Genova o del prof Bagnerini Patrizia.