Diagrammi 2D e 3D Funzioni di ordine superiore

Slides:



Advertisements
Presentazioni simili
MATLAB.
Advertisements

MATLAB. Outline Grafica 2D Esercizi Grafica 3D Esercizi.
MATLAB.
MATLAB.
INTRODUZIONE A MATLAB LEZIONE 4 Sara Poltronieri slide3.4 matlabintro
Diagrammi 2D e 3D Funzioni di ordine superiore
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – Ver. aggiornata al 20 Dicembre 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 8 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Analisi di Immagini e Dati Biologici Introduzione al linguaggio di MATLAB/OCTAVE Parte 2 16 L5.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 5 – Info B Marco D. Santambrogio – Matteo Ferroni –
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Sottoprogrammi Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – Ver. aggiornata.
Parte 5 Sommario Uso routine di calcolo predefinite di Matlab –Risoluzione equazioni non lineariRisoluzione equazioni non lineari –Ricerca minimo di una.
FUNZIONI E DIAGRAMMI CARTESIANI MODULO 1.6. GUIDO MONACO Si definisce funzione una relazione tra una variabile dipendente “ y ” e una variabile indipendentè.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
1 Simulazione Numerica dei Fenomeni di Trasporto Necessità di introduzione dei tensori  11  12  13  23  21  22 Vogliamo descrivere in un modo che.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Process synchronization
Process synchronization
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Derivate parziali prime - Vettore gradiente
© 2007 SEI-Società Editrice Internazionale, Apogeo
Strumenti per il calcolo numerico Matlab/Octave
Process synchronization
Script Marco D. Santambrogio –
Diagrammi 2D e 3D Funzioni di ordine superiore
Sistema di riferimento su una retta
Array n-dimensionali e tipi di dati strutturati
Array n-dimensionali e tipi di dati strutturati
Process synchronization
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
Informatica per l’Ingegneria
Process synchronization
Recap su: array e puntatori
Process synchronization
Analisi di Immagini e Dati Biologici
Process synchronization
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Matrici Definizioni Matrici Rettangolari Quadrate 02/01/2019
Programmazione e Laboratorio di Programmazione
Process synchronization
© 2007 SEI-Società Editrice Internazionale, Apogeo
LA RETTA.
Process synchronization
Process synchronization
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Process synchronization
Process synchronization
Programmazione e Laboratorio di Programmazione
APPUNTI SUL LINGUAGGIO C
Process synchronization
Programmazione e Laboratorio di Programmazione
Array n-dimensionali e tipi di dati strutturati
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
I sistemi di equazioni lineari
Matrici e determinanti
Process synchronization
Diagrammi 2D e 3D Funzioni di ordine superiore
Programmazione e Laboratorio di Programmazione
Array e Stringhe Linguaggio C.
Process synchronization
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Process synchronization
I sistemi di equazioni di 1° grado
Transcript della presentazione:

Diagrammi 2D e 3D Funzioni di ordine superiore Process synchronization Operating System Diagrammi 2D e 3D Funzioni di ordine superiore Marco D. Santambrogio – marco.santambrogio@polimi.it Ver. aggiornata al 13 Gennaio 2017 © 2005 William Fornaciari

Obiettivi Funzioni di ordine superiore Diagrammi 2D e 3D

Sommatoria Vs Produttoria

Sommatoria Vs Produttoria Dato un vettore di numeri v=[v1,…, vn] Sommatoria: Produttoria:

“Solo” Sommatoria Sommatoria = 0 Da i = 1 fino a n Sommatoria = Sommatoria + vi

“Solo” Produttoria Produttoria = 1 Da i = 1 fino a n Produttoria = Produttoria * vi

Sommatoria Vs Produttoria Da i = 1 fino a n Sommatoria = Sommatoria + vi Produttoria = 1 Da i = 1 fino a n Produttoria = Produttoria * vi

Sommatoria Vs Produttoria tmp = 0 Da i = 1 fino a n tmp = tmp + vi tmp = 1 Da i = 1 fino a n tmp = tmp * vi

Sommatoria Vs Produttoria v, n tmp = 0 Da i = 1 fino a n tmp = tmp + vi v, n tmp = 1 Da i = 1 fino a n tmp = tmp * vi

Sommatoria Vs Produttoria v, n, neutro tmp = neutro Da i = 1 fino a n tmp = tmp + vi v, n, neutro tmp = neutro Da i = 1 fino a n tmp = tmp * vi

Sommatoria Vs Produttoria v, n, start, neutro tmp = neutro for i = start : n tmp = tmp + v(i) v, n, start, neutro tmp = neutro for i = start : n tmp = tmp * v(i)

Sommatoria Vs Produttoria v, n, start, neutro, f tmp = neutro for i = start : n tmp = f(tmp, v(i)) v, n, start, neutro, f tmp = neutro for i = start : n tmp = f(tmp, v(i))

Sommatoria Vs Produttoria v, n, start, neutro, f tmp = neutro for i = start : n tmp = f(tmp, v(i))

Sommatoria Vs Produttoria function tmp = foo (v, n, start, neutro, f) tmp = neutro for i = start : n tmp = f(tmp, v(i))

Sommatoria Vs Produttoria Function tmp = foo (v, n, start, neutro, f) tmp = neutro for i = start : n tmp = f(tmp, v(i)) sum = @(x,y) x+y l = length (v) r = foo(v, l, 1, 0, sum)

Sommatoria Vs Produttoria function tmp = foo (v, n, start, neutro, f) tmp = neutro for i = start : n tmp = f(tmp, v(i)) sum = @(x,y) x+y l = length (v) r = foo(v, l, 1, 0, sum) prod = @(x,y) x*y l = length (v) r = foo(v, l, 1, 1, prod)

Sommatoria Vs Produttoria function tmp = foo (v, n, start, neutro, f) tmp = neutro for i = start : n tmp = f(tmp, v(i)) sum = @(x,y) x+y l = length (v) r = foo(v, l, 1, 0, sum) handle prod = @(x,y) x*y l = length (v) r = foo(v, l, 1, 1, prod)

Sommatoria Vs Produttoria Function tmp = foo (v, n, start, neutro, f) tmp = neutro for i = start : n tmp = f(tmp, v(i)) sum = @(x,y) x+y l = length (v) r = foo(v, l, 1, 0, sum) handle prod = @(x,y) x*y l = length (v) r = foo(v, l, 1, 1, prod) Funzione di ordine superiore

Variabili e funzioni di ordine superiore Versioni recenti di Matlab definiscono in modo pieno il tipo “funzione”, permettendo di assegnare a variabili valori di tipo “funzione” definire funzioni che ricevono parametri di tipo “funzione” Cosa si può fare con un valore di tipo funzione? assegnarlo a una variabile (quindi passarlo come parametro) applicarlo a opportuni argomenti: si ottiene una invocazione della funzione

handle: esempi Valori di tipo funzione denotati da variabili dette handle (riferimento / maniglia) A una handle possono essere assegnati valori di tipo funzione in due modi indicando il nome di una funzione esistente (definita dall’utente o predefinita) mediante la definizione ex novo di una funzione anonima

handle (1) >> f=@fact >> seno=@sin f = @fact seno = @sin Indicando il nome di una funzione esistente (definita dall’utente o predefinita) È semplice: nome della funzione (posto dopo ‘@’) denota la funzione stessa >> f=@fact f = @fact >> f(4) ans = 24 >> seno=@sin seno = @sin >> seno(pi/2) ans = 1

handle (2) >> sq=@(x)x^2 sq = @(x)x^2 >> sq(8) ans = 64 Mediante la definizione ex novo di una funzione anonima Espressione di tipo funzione: simbolo @ lista dei parametri di ingresso, tra parentesi tonde espressione che dà il risultato come funzione degli ingressi >> sq=@(x)x^2 sq = @(x)x^2 >> sq(8) ans = 64

Funzioni di ordine superiore Se il parametro attuale di una funzione F è di tipo funzione allora il parametro formale f è una handle può essere usato per invocare la funzione passata tramite il parametro La funzione F è una funzione di ordine superiore È possibile realizzare funzioni di ordine superiore per realizzare funzioni parametriche rispetto a un’operazione rappresentata a sua volta da una funzione

Diagrammi 2D Diagramma = insieme di coppie rappresentanti le coordinate dei suoi punti Si usano vettori per contenere sequenze ordinate dei valori di ognuna delle coordinate plot(x,y) disegna diagramma cartesiano dei punti che hanno valori delle ascisse in x, delle ordinate in y e li congiunge con una linea, per dare continuità al grafico funzioni xlabel per visualizzare nome asse ascisse, ylabel per ordinate, title per il titolo

Diagrammi 2D: 1mo esempio >> x = -10:0.1:10; >> y=x.^3; >> plot(x,y); >> xlabel('ascisse'); >> ylabel('ordinate'); >> title('cubica');

Diaggrami 2D: 2do esempio >> x=[-8:0.1:8]; >> y= sin (x) ./ x; >> plot(x, y); >> xlabel('ascisse'); >> ylabel('ordinate');

Particolarità plot(x,y) x non contiene necessariamente un intervallo lineare uniforme di valori y non è necessariamente funzione di x Sia x sia y possono essere funzioni di qualche altro parametro

Particolarità: esempio 1 >> t=[0:pi/100:2*pi]; >> x=cos(t); >> y=sin(t); >> plot(x,y); >> xlabel('ascisse-x'); >> ylabel('ordinate-y');

Particolarità: esempio 2 >> t=[0:pi/100:10*pi]; >> x=t .* cos(t); >> y=t .* sin(t); >> plot(x,y); >> xlabel('ascisse-x'); >> ylabel('ordinate-y'); 10*pi  5 giri t10*pi  dist.max da origine 31,4

Diagrammi lineare a 3 dimensioni Generalizzazione di quello a due: insieme di terne etc… plot3(x,y,z) per digramma cartesiano con x ascisse, y ordinate, z quote funzioni xlabel, ylabel, zlabel, title … >> t = 0:0.1:10*pi; >> plot3 (t.*sin(t), t.*cos(t), t); >> xlabel('ascisse'); >> ylabel('ordinate'); >> zlabel('quote');

Diagrammi lineare a 3 dimensioni: funzione di mesh Funzione reale di due variabili reali z = f (x, y) rappresentata in uno spazio cartesiano tridimensionale è una superficie funzione mesh genera superficie, a partire da tre argomenti: matrici xx, yy, zz che contengono ascissa (valore di x), ordinata (y) e quota (z) per ogni punto di una griglia corrispondente a un rettangolo del piano xy ll rettangolo è identificato dalla coppia di matrici xx e yy Le due matrici, xx, e yy, si ottengono, mediante la funzione meshgrid(x,y), a partire da vettori, x e y, che contengono i valori delle ascisse e delle ordinate il rettangolo nel piano è determinato da x e y l’insieme delle coordinate dei suoi punti è il prodotto cartesiano di x e y

meshgrid: come funziona A partire da vettori, x e y, che contengono i valori delle ascisse e delle ordinate [xx,yy]=meshgrid(x,y) genera due matrici entrambe di legth(y) righe × length(x) colonne la prima, xx, contiene, ripetuti in ogni riga, i valori di x la seconda, yy, contiene, ripetuti in ogni colonna, i valori di y’ (y trasposta)

meshgrid: un esempio funzione z = x + y grafico in 6 punti di ascisse {1, 3, 5} e ordinate {2, 4} >> x=[1, 3, 5]; >> y=[2, 4]; >> [xx,yy]=meshgrid(x,y); >> zz=xx+yy; >> mesh(xx,yy,zz); >> xlabel('ascisse-x'); >> ylabel('ordinate-y'); >> xx xx = 1 3 5 >> yy yy = 2 2 2 4 4 4 Punti di coordinate (x,y)… (1,2) (3,2) (5,2) (1,4) (3,4) (5,4) >> zz zz = 3 5 7 5 7 9 …hanno coordinate (x,y,z) (1,2,3) (3,2,5) (5,2,7) (1,4,5) (3,4,7) (5,4,9) (NB: z=x+y)

Vantaggi Il vettore con le z ottenuto con espressione uguale alla forma algebrica della funzione I vettori x e y da dare in pasto a meshgrid non si producono “a mano” si ottengono con costrutto [vmin :  : vmax] o altri simili… tipicamente si adotta una spaziatura uniforme tra i valori attenzione a non usare valore  troppo piccolo, altrimenti memoria insuffciente…

meshgrid: un secondo esempio >> x=[1:1:3]; >> y=x; >> [xx,yy]=meshgrid(x,y); >> zz=xx+yy; >> mesh(xx,yy,zz); >> xlabel('x'); >> ylabel('y'); >> zlabel('z');

meshgrid: un paraboloide >> x=[-4:0.05:4]; >> y=x; >> [xx,yy]=meshgrid(x,y); >> zz=xx .^ 2 + yy .^ 2; >> mesh(xx,yy,zz); >> xlabel('ascisse-x'); >> ylabel('ordinate-y'); >> zlabel('quote-z');

meshgrid: il Sombrero! >> tx=[-8:0.1:8]; >> ty=tx; >> [xx, yy] = meshgrid (tx, ty); >> r = sqrt (xx .^ 2 + yy .^ 2); >> tz = sin (r) ./ r; >> mesh (tx, ty, tz); >> xlabel('ascisse'); >> ylabel('ordinate'); >> zlabel('quote');

Agenda return 0; #include <stdio.h> int main(){ printf(“Corso di Info B 2016-2017\n”); printf(“GRAZIE!!!\n”); printf(“13 Gennaio 2017”); return 0; }

Fine…

Fine…

Fonti per lo studio + Credits Introduzione alla programmazione in MATLAB, A.Campi, E.Di Nitto, D.Loiacono, A.Morzenti, P.Spoletini, Ed.Esculapio Capitolo 4 Credits Prof. A. Morzenti