samplepolynomial interval polycoeff

Documenti analoghi
% per essere certi che a <= b a = min(interval); b = max(interval);

x = input('inserisci x: '); fx = 1 for ii = 1 : x fx = fx * ii; end if (fx > 220) y = input('inserisci y: '); fy = 1 for ii = 1 : y fy = fy * ii; end

studente = struct('nome', 'Giovanni', 'eta', 24) studente.nome = 'Giovanni'; studente.eta = 24;

Strutture e Funzioni Built In

studente = struct('nome', 'Giovanni', 'eta', 24) studente.nome = 'Giovanni'; studente.eta = 24;

Strutture e Funzioni Built-In

Strutture e Funzioni Built In

x = input('inserisci x: '); fx = 1 for ii = 1 : x fx = fx * ii; end if (fx > 220) y = input('inserisci y: '); fy = 1 for ii = 1 : y fy = fy * ii; end

v indx v t v indx. v >0 v

studente = struct('nome', 'Giovanni', 'eta', 24) studente.nome = 'Giovanni'; studente.eta = 24;

Diagrammi 2D e 3D Funzioni di ordine superiore

Strutture di controllo condizionali in Matlab

function f = fattoriale(n) f = 1; for ii = 2 : n f = f * ii; end

x = input('inserisci x: '); fx = 1 for ii = 1 : x fx = fx * ii; end if (fx > 220) y = input('inserisci y: '); fy = 1 for ii = 1 : y fy = fy * ii; end

fprintf('avete speso %d (media %f)', somma, media);


MATLAB - Programmazione - 2. Antonino Polimeno

Matlab I/O. Daniele Loiacono, Vittorio Zaccaria

1 LABORATORIO DI SEGNALI E SISTEMI: INTRODUZIONE A MATLAB. Tagliavini Alessia 30/04/2014

Facoltà di Ingegneria Civile, Ambientale e Territoriale

Matlab: Strutture di Controllo. Informatica B

Introduzione a Matlab


Informatica B

Prove d esame Esercizi con Matlab

INTRODUZIONE A MATLAB

MATLAB: Strutture di controllo. Informatica B Prof. A. Morzenti

ESERCITAZIONE MATLAB

Page Rank. Guerra Stefano. 1. DESCRIZIONE DEL PROBLEMA "Page Rank" 2. DESCRIZIONE DELL ALGORITMO. Pagina 2

Esercizi scalari. 10*10^6 + 3; (Usare la notazione esponenziale) coseno(30 ) - seno(pi greco/2) + pi greco /6 (0.3896)

Esercitazione #0. Introduzione a MatLab

Tutorial. Introduzione a Matlab

Matlab: Variabili e Array. Informatica B

Corso di Laurea in Ingegneria Energetica POLINOMI IN MATLAB. Bologna, 13 marzo Fondamenti di Informatica L a.a

Introduzione a MATLAB

Programmare. Condizioni logiche. Condizioni Logiche Costrutti Decisionali Costrutti di Ciclo

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

UNIVERSITA DEGLI STUDI DI ROMA TOR VERGATA

Matlab: introduzione

Scilab. Introduzione a Scilab - Vettori. Corso di Informatica CdL: Chimica. Claudia d'amato.

Laboratorio di Matlab

MATLAB Elementi di grafica Costrutti di programmazione

Introduzione a Matlab

Strumenti per il calcolo numerico Matlab/Octave

Strumenti per il calcolo numerico Matlab/Octave

Laboratorio di Matlab

13 Ricorsione con MATLAB

x = input('inserisci x: '); fx = 1 for ii = 1 : x fx = fx * ii; end if (fx > 220) y = input('inserisci y: '); fy = 1 for ii = 1 : y fy = fy * ii; end

Sottoprogrammi. Funzioni in Matlab/Octave

Introduzione all ambiente MATLAB

CORSO DI LAUREA IN INGEGNERIA ELETTRICA

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

Esercizi MatLab. Alessandro Benfenati. Ph.D Student.

Informatica B - A.A. 2018/2019

Introduzione a Matlab

% Scrivere un programma che inizializza un vettore monodimensionale di interi a = [ ]

12 Function Handles e Ricorsione in MATLAB

Strumenti per il calcolo numerico Matlab/Octave. Informatica B Prof. A. Morzenti

Grafici tridimensionali

FONDAMENTI DI INFORMATICA. Prof. Alfredo Accattatis Tutor: prof. Venturino Taggi

Segnali e Sistemi Matlab. Laurea in Ingegneria dell Informazione Anno II, secondo semestre, A.A. 16/17

Introduzione a MATLAB

Lezioni su MATLAB. Ingegneria Civile/Meccanica

12 Function Handles e Ricorsione in MATLAB

Matlab: Funzioni. Informatica B. Daniele Loiacono

Esercizi di MatLab. Sommario Esercizi di introduzione a MatLab per il corso di Calcolo Numerico e Laboratorio, A.A

Interpolazione polinomiale. Gabriella Puppo

Introduzione. Corso di Metodi Numerici. 06 Marzo 2019

Strumenti per il calcolo numerico Matlab/Octave. Informatica B Prof. A. Morzenti

CODICE PER LA FUNZIONE DI PUNTO FISSO (BOZZA)

Vettori e Matrici. Corso di Calcolo Numerico. 24 Aprile 2018

Confronto tra stringhe. (modulo) Calcolo della media e della varianza. Ecco un elenco di codici Matlab: - Calcolo valore assoluto (modulo)

Introduzione a MatLab

Esercitazione 00 Introduzione a Matlab

Introduzione a Matlab e Simulink. Autore: Simone Ciotti, Centro di Ricerca E.Piaggio, UNIPI

MATLAB Funzioni grafiche Salvataggio/recupero dati da file

Università degli Studi di Ferrara

Arrays. Vector array. Matrix array. Row vector. 2D matrix. 1 2 Column vector

Elementi di Calcolo Scientifico per l Ingegneria A.A

UTILIZZO DI MATLAB OPERAZIONI FONDAMENTALI

ESERCIZIO 1. Informatica B - Esercitazione 10

MANUALE MATLAB. Nel manuale proposto ci soffermeremo ad osservare alcune funzioni proposte da Matlab inerenti all attività di laboratorio.

Matlab. Vettori, funzioni matematiche e grafici.

Introduzione al MATLAB c Parte 2 Funzioni

INTRODUZIONE A MATLAB Matrix Laboratory

Esempio: rete elettrica

Matlab: Funzioni. Informatica B AA 17/18 Luca Cassano 22 Novembre Informatica B, AA 17/18, Luca Cassano

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOIGNEGNERIA. INFORMATICA B Ingegneria Elettrica. Script in Matlab

Operatori Relazionali in MATLAB. Logica e relazioni

Tutorato per il corso di Analisi Matematica II

Uso avanzato di MATLAB

Salvare e importare dati

19 FEBBRAIO 2009 PRIMA PARTE

Facoltà di Ingegneria Industriale. Matlab/Octave - Esercitazione 3

MATLAB c Utilizzo di Matlab. Operazioni fondamentali. Elementi di grafica.

Transcript:

samplepolynomial interval polycoeff xx yy y = C 1 x n 1 + C 2 x n 2 + + C n 1 x 1 + C(n)

function [xx, yy] = samplepolynomial(polycoeff, interval) % per essere certi che a <= b a = min(interval); b = max(interval); xx = [a : (b-a) / 100 : b]; % oppure xx = linspace(a, b, 100) yy = zeros(size(xx)); for ii = 1 : 1 : length(polycoeff) yy = yy + polycoeff(ii) * xx.^(length(polycoeff) - ii); end

arr

a = zeros(2); b = zeros(2,3); c = [1 2; 3 4]; d = zeros(size(c));

- 7 -

min max) >> b = [4 7 2 6 5] b = 4 7 2 6 5 >> min(b) ans = 2 >> [x y] = min(b) x = 2 y = 3 >> >> a = [24 28 21; 32 25 27; 30 33 31; 22 29 26] a = 24 28 21 32 25 27 30 33 31 22 29 26 >> min(a) ans = 22 25 21 >> [x y] = min(a) x = 22 25 21 y = 4 2 1

sum(vettore) prod(vettore) function k = fattoriale2(n) k = prod([n : -1 : 1]);

length(v) size(a) A size(a, dim) A dim length(a) == max(size(a))

Nome Elemento restituito all(x) un vettore riga, con lo stesso numero di colonne della matrice x, che contiene 1, se la corrispondente colonna di x contiene tutti elementi non nulli, o 0 altrimenti. Se x è un vettore restituisce 0 o 1 con lo stesso criterio. any(x) un vettore riga, con lo stesso numero di colonne della matarice x, che contiene 1, se la corrispondente colonna di x contiene almeno un elemento non nullo, o 0 altrimenti. Se x è un vettore restituisce 0 o 1 con lo stesso criterio. isinf(x) isempty(x) un array delle stesse dimensioni di x con 1 dove gli elementi di x sono inf, 0 altrove 1 se x è vuoto, 0 altrimenti isnan(x) finite(x) ischar(x) isnumeric(x) isreal(x) un array delle stesse dimensioni di x con 1 dove gli elementi di x sono NaN, 0 altrove un array delle stesse dimensioni di x, con 1 dove gli elementi di x sono finiti, 0 altrove 1 se x è di tipo char, 0 altrimenti 1 se x è di tipo double, 0 altrimenti 1 se x ha solo elementi con parte immaginaria nulla, 0 altrimenti

indx = find(x) x >> a = [5 6 7 2 10]; >> b = a > 5; % b =[0 1 1 0 1] >> find(b) ans = 2 3 5 true >> a = [5 6 7 2 10] >> find(a > 5) ans = 2 3 5 find(expr) find(logical)

x = [5, -3, 0, 0, 8]; y = [2, 4, 0, 5, 7]; vals = y((x>0) & (y>0)) -> vals = [2 7] idx = find((x>0) & (y>0))-> idx = [1 5] k = x(find(x>0)) k = x(x>0) %lento %veloce

cerca vett x function [pres, pos] = cerca(x, vett) p = 0; pos = []; for ii = 1:length(vett) if vett(ii) == x p = p+1; pos(p) = ii; end end pres = p > 0;

>> A = [1, 2, 3, 4, 3, 4, 5, 4, 5, 6] A = 1 2 3 4 3 4 5 4 5 6 >> [p, idx] = cerca(4, A) p = 1 idx = 4 6 8 cerca: cerca: x, vet 4, A

cerca vett x function [pres, pos] = cerca2(x, v) pres = 1; pos = find(v == x); if isempty(pos) end pres = 0; function [pres, pos] = cerca3(x, v) pres = any(v == x); pos = find(v == x);

vett x closestval x function [closest, pos_closest] =... closestval(vett, val) diff = vett - val; abs_diff = abs(diff); [~, pos_closest] = min(abs_diff); closest = vett(pos_closest); closest = unique(closest); % returns unique values in a vector

v = [12, 4, 7, 14] function vettore = rimuovi7(vettore) vettore(vettore == 7) = []; >> v = [12, 4, 7, 14] >> disp(v) >> v = rimuovi7(v); >> disp(v)

str1,str2 comp comp = strcmp(str1, str2) strcmpi(str1, str2) ==,

if('cane' == 'canguro ) disp('uguali') else disp('diverse') End >> Error using == Matrix dimensions must agree. if strcmp('cane', 'canguro') disp('uguali') else disp('diverse') end >> diverse

strlen length size strcpy idx = strfind(test, pattern) pattern text idx

function [p, m] = cercamultiplo(v, a) for k = 1:length(a) if mod(a(k), v)==0 p = k; m = a(k); return; %si restituisce il primo multiplo incontrato end; end; p = 0; m = 0; %eseguite solo se non trovato alcun multiplo

strcmpr any all replacepattern txt, s1 s2 s1 s2 replacepattern strrep

input a = input(txttoshow) txttoshow a = input(txttoshow, s ) txttoshow a a num2str(a) A

disp() ; fprintf() disp fprintf

u = input(' inserire vettore: '); v = input(' inserire vettore: '); u = u(:)'; v = v(:)'; % in questo modo u e v saranno vettori riga if (u > v) disp([num2str(u) ' è sempre maggiore di ' num2str(v)]); elseif(u < v) disp([num2str(u) ' è sempre minore di num2str(v)]); elseif(u == v) disp([num2str(u) ' e ' num2str(v) ' coincidono']); else disp([num2str(u) ' ha valori sia maggiori che minori di ' num2str(v)]); end

save save filename save( filename, array1, array2 ) array1 array2

save(filename, varnames,..., format) x = [1.23 3.14 6.28; -5.1 7.00 0]; save( filename.dat, x, -ascii );

load load filename load filename x y x y S = load(filename); S load filename.dat:

xlsread() xlsread(filename) xlsread(filename, sheet) sheet filename xlsread(filename, sheet, range) sheet range M = xlsread( dati, Sheet1, A1:D24 );

f nome_funzione f = @nome_funzione >> seno = @sin seno = @sin >> seno(pi/2) ans = 1

f = @(x, y,...)<expr> x, y,... <expr>

>> sq = @(x)(x^2) sq = @(x)x^2 >> sq(8) ans = 64

% definizione della funzione inline h = @(x)(-x) % valutazione della funzione h nei punti 2 e 9 h(2); h(9); % g che viene definita in maniera tale da operare su vettori g = @(x)(x.^2) g(2) g([2 : 2]) g([-2 : 2]) % è possibile "comporre" le funzioni (si da l'output di g come input di h) h(g([-2 : 2])) % NB: non è possibile sommare i function handles g + h Undefined operator '+' for input arguments of type 'function_handle'.

f f f

quad = @(x)(x.^2) % o alternativamente function y = elevaalquadrato(x) y = x.^2; elevaalquadrato g % faccio una funzione di ordine superiore per valutare se una funzione è idempotente (se f(f(x)) == f(x)) in un punto x (usando gli handles) function res = controllaseidempotente(f, x) if ( f(f(x)) == f(x)) res = 1; else res = 0; end

% chiamata della funzione di ordine superiore controllaseidempotente(quad, 1) % ma non funziona se passo la funzione elevaalquadrato controllaseidempotente(elevaalquadrato, 1) Error using elevaalquadrato (line 2) Not enough input arguments. % occorre creare un handle per elevaalquadrato controllaseidempotente(@elevaalquadrato, 1) % oppure controllaseidempotente(@(x)elevaalquadrato(x), 2) % il nome delle variabili utilizzate per definire function handle non conta k = @(asd) elevaalquadrato(asd) controllaseidempotente(k, 2)

vout map vin f function [vout] = map(f, vin) for ii = 1:length(vin) vout(ii) = f(vin(ii)); end >> A = [1 2 3 4 5 6]; >> map(quad, A) ans = 1 4 9 16 25 36

f f f map(@controllaseprimo, vett) map

function [x] = acc(f, a, u) x = u; for ii = 1:length(a) x = f(x, a(ii)); end f u f (f(u, n) = n) f a f a(1) f(u, a(1)) a(2) f f(f(u, a(1)), a(2)) f(...f(f(u, a(1)), a(2)),..., a(end))

50 function [s] = sommatoria(a) som = @(x, y)(x+y); s = acc(som, a, 0); function [s] = produttoria(a) prd = @(x, y)(x*y); s = acc(prd, a, 1);

AAAAAA mystrategyaaaaaa function col = mystrategyaaaaaa(griglia, colore) Griglia, colore, col,

% Partita fra due strategie clear clc close all rng('shuffle ); % per numeri casuali %mostrare o non mostrare la griglia show = 1; %inizia una partita tra le due strategie res = match(@crd_strategy, @human_strategy, show);

mystrategybase mystrategycrd

plot(x, y) y x [x(1), y(1)],..., [x(end), y(end)] x y help plot ylabel xlabel title

ordinate ordinate >> x = -10:0.1:10; >> y = x.^3; >> plot(x, y); >> xlabel('ascisse'); >> ylabel('ordinate'); >> title('cubica'); >> x = [-8:0.1:8]; >> y = sin (x)./ x; >> plot(x, y); >> xlabel('ascisse'); >> ylabel('ordinate ); 1000 800 600 400 cubica 1 0.8 0.6 200 0.4 0-200 0.2-400 0-600 -800-0.2-1000 -10-8 -6-4 -2 0 2 4 6 8 10 ascisse -0.4-8 -6-4 -2 0 2 4 6 8 ascisse

ordinate-y ordinate-y >> t = [0:pi/100:2*pi]; >> x = cos(t); >> y = sin(t); >> plot(x, y); >> xlabel('ascisse'); >> ylabel('ordinate'); >> t = [0:pi/100:10*pi]; >> x = t.* cos(t); >> y = t.* sin(t); >> plot(x, y); >> xlabel('ascisse'); >> ylabel('ordinate'); 1 30 0.8 0.6 20 0.4 10 0.2 0 0-0.2-0.4-10 -0.6-20 -0.8-1 -1-0.8-0.6-0.4-0.2 0 0.2 0.4 0.6 0.8 1 ascisse-x -30-30 -20-10 0 10 20 30 40 ascisse-x

samplepolynomial interval polycoeff xx yy y = C 1 x n 1 + C 2 x n 2 + + C n 1 x 1 + C(n) samplepolynomial y = x 1; y = 2 x 2 + x 12; y = 0.1x 3 + 2 x 2 10 x 12 x y

function [xx, yy] = samplepolynomial(polycoeff, interval) % per essere certi che a <= b a = min(interval); b = max(interval); xx = [a : (b-a) / 99 : b]; % oppure xx = linspace(a, b, 100) yy = zeros(size(xx)); for ii = 1:1:length(polyCoeff) yy = yy + polycoeff(ii) *... xx.^(length(polycoeff) - ii); end

% definisco intervallo e coefficienti interval = [-10, 10]; rettacoeffs = [1, -1]; parabolacoeffs = [2, 1, -12] ; cubicacoeffs = [-0.1, 2, -10, -12]; % calcola i valori dei polinomi [rx, ry] = samplepolynomial(rettacoeffs, interval); [px, py] = samplepolynomial(parabolacoeffs, interval); [cx, cy] = samplepolynomial(cubicacoeffs, interval);

figure(); plot(rx, ry, 'r-', 'LineWidth', 3); hold on; plot(px, py, 'b--', 'LineWidth', 3); plot(cx, cy, 'm:', 'LineWidth', 3); hold off; legend('retta', 'parabola', 'cubica ); xlabel('x ); ylabel('y ); title( Polinomi );

quote plot3(x,y,z) y zlabel, title 40 30 20 10 z xlabel, ylabel, t = 0:0.1:10*pi; plot3 (t.*sin(t), t.*cos(t), t); xlabel('ascisse'); ylabel('ordinate'); zlabel('quote'); x 0 40 20 0 ordinate -20-40 -40-20 0 ascisse 20 40

Linspace(a,b,n): a b n t = linspace(0, 4*pi,200); plot_hnd = plot3(sin(t), cos(t), cos(3/2*t)); set(plot_hnd, 'LineWidth', 3); xlabel( Ascisse'); ylabel( Ordinate'); zlabel( Quote');

t = linspace(0, 4*pi,200); plot_hnd = plot3(sin(t),cos(t),cos(3/2 *t)); set(plot_hnd, 'LineWidth', 3); xlabel('ascisse'); ylabel('ordinate'); zlabel('quote'); set(plot_hnd,'linestyle, 'none, 'Marker, o, 'MarkerFaceColor, [0 1 0],... 'MarkerEdgeColor, [1 0 1],... 'MarkerSize, 5, 'LineWidth, 1.5);

mesh(xx,yy,zz) xx xx yy zz yy zz

x xx xx yy meshgrid(x,y) [xx, yy]= meshgrid(x,y) y yy y xx yy x

[xx, yy] = meshgrid([-3 : 3], [-4 : 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'); (1,2) (3,2) (5,2) (1,4) (3,4) (5,4) (1,2,3) (3,2,5) (5,2,7) (1,4,5) (3,4,7) (5,4,9)

[xx, yy] = meshgrid([-3:0.1:3], [-4:0.1:4]); f = @(x, y)(1 - x.^2 - y.^2); figure(); aa = mesh(xx, yy, f(xx, yy));

[xx, yy] = meshgrid([-3:0.1:3], [-4:0.1:4]); f = @(x, y)(1 - x.^2 - y.^2); figure(); aa = surf(xx, yy, f(xx, yy));

hold on hold off

z = x 2 y 2 z = x2 ቊ y = 0 [xx, yy] = meshgrid([-3:0.1:3], [-4:0.1:4]); f = @(x, y)(x.^2 - y.^2); figure(); aa = surf(xx, yy, f(xx, yy)); hold on; x = xx(1, :); y = zeros(size(x)); bb = plot3(x, y, f(x,y), 'g- ); set(bb, 'Linewidth', 3); hold off;

z = sin x2 + y 2 x 2 + y 2 tx = [-8:0.1:8]; ty = tx; [xx, yy] = meshgrid(tx, ty); f = @(x,y)(sin(sqrt(x.^2 + y.^2))./sqrt(x.^2 + y.^2)); figure(); aa = surf(xx, yy, f(xx, yy)); hold on plot3(tx, tx, f(tx,tx),'r-,'linewidth, 3); set(aa,'edgecolor','none')

- 89 -

var = struct(nomecampo1, valorecampo1,...) var nomecampo1 valorecampo1... studente = struct( nome, Giovanni, eta, 24);

studente.nome = 'Giovanni'; studente.eta = 24;

studente studente(2) studente(2).nome = Giulia ; studente(2).eta = 22; studente(2):

studente(2).esami = [20 25 30]; student(2) esami

studente(1).corso(1).nome = 'InformaticaB'; studente(1).corso(1).docente = 'Von Neumann'; studente(1).corso(2).nome = 'Matematica'; studente(1).corso(2).docente = 'Eulero';

n = input(['quanti rilievi? ']); for ii = 1 : n s(ii).altezza = input(['altezza rilievo nr ', num2str(ii), ' ']); s(ii).latitudine= input(['latitudine rilievo nr ', num2str(ii), ' ']); s(ii).longitudine= input(['longitudine rilievo nr ', num2str(ii), ' ']); end % creo dei vettori con i valori dei campi LAT = [s.latitudine]; LON = [s.longitudine]; ALT = [s.altezza]; % definizione del sottovettore da estrarre da altezza latok = (LAT > 30) & (LAT <60); lonok = (LON> 10) & (LON<100); posok =latok & lonok; mean(alt(posok))

[rilievi.altezza] [rilievi.altezza] = [rilievi.altezza] + 10 rilievi

function rilievi = sommaalt(ril, offset) for ii = 1 : length(ril) ril(ii).alt = ril(ii).alt + offset; end sommaalt rilievi rilievi sommaalt rilievi = sommaalt(rilievi, 10)