Anteprima
Vedrai una selezione di 3 pagine su 7
Calcolo numerico - Fitting di dati Pag. 1 Calcolo numerico - Fitting di dati Pag. 2
Anteprima di 3 pagg. su 7.
Scarica il documento per vederlo tutto.
Calcolo numerico - Fitting di dati Pag. 6
1 su 7
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Spline parametrica e fitting interattivo

Lo script che segue ricopia i contorni di un immagine mediante l'uso del fitting interattivo. L'uso dello script consiste nel segnare mediante l'uso del mouse, alcuni punti di contorno dell'immagine. Le curve sono poi ricostruite da spline interpolanti i nodi scelti.

% plotting interattivo con ginput
%fisso gli assi
A=[];
B=[];
axis square
a=imread('ying-yang.jpg');
image(a);
hold on

% lista di nodi iniziale vuota.
% inserimento nodi
disp('bottone sinistro mouse aggiungi un nodo')
disp('bottone destro mouse aggiunge ultimo nodo')
bottone = 1;
while bottone==1 %il ciclo permette di ricopiare più di una curva, arrestandosi solo ad una doppia pressione del tasto destro del mouse
    xx = [];
    yy=[];
    n = 0;
    while bottone == 1 %il ciclo prende interattivamente i punti per costruire la curva
        [xi,yi,bottone] = ginput(1);
        plot(xi,yi,'ro')
        n = n+1;
        xx=[xx xi];
        yy= [yy yi];
    end
    % Interpola con la spline
    t = 1:n;
    s = spline(t,[xx;yy]);
    tnew = linspace(1,n,100);
    xnew = ppval(s(1),tnew);
    ynew = ppval(s(2),tnew);
    plot(xnew,ynew,'b-')
end
= spline(t,xx);%interpolazione parametrica mediante spline delle ascisse
r = spline(t,yy);%interpolazione parametrica con spline delle ordinate
tt=linspace(t(1),t(n),2000);%vettore dei punti di valutazione per plottare le curve
%valuto le spline
u=ppval(s,tt);
v=ppval(r,tt);
%Le matrici A e B memorizzano tutte le curve interpolate
A=[u,A];
B=[v,B];
% fa il grafico delle splines interpolanti
b=plot(u,v,'b');
disp('Premi il bottone DESTRO per TERMINARE il programma')
disp('Premi il bottone SINISTRO per CONTINUARE e per aggiungere un altra curva')
clc
[xi,yi,bottone] = ginput(1);
end
hold off
plot(A,-B,'b.');%disegna l'immagine
clear all

'Esempio significativo di smoothing dei dati'

'In un esperienza di laboratorio, si osserva il fenomeno del moto uniformemente accelerato. Una slitta 'tirata' da un peso in caduta libera, si sposta lungo una guida via a cuscino d'aria. Mediante l'uso di apposite fotocellule, vengono registrati i seguenti dati,

però ad un errore e= 0.005s.

in 0 0.1500 0.3000 0.4500 0.6000 0.7500 0.9000 1.0500 metri

in 0 0.852 0.364 0.630 1.050 1.224 1.387 1.536 secondi

Il grafico orario viene costruito effettuando lo smoothing dei dati mediante un polinomio di secondo grado, trovandoci nella situazione nota di moto uniformemente accelerato.

p=0:0.15:1.05; %posizione delle fotocellule

t=[0 0.364 0.630 0.852 1.050 1.224 1.387 1.536]; %tempi rilevati e soggetti all'errore

es=polyfit(t,p,2); %polinomio dei minimi quadrati di secondo grado

xx=linspace(0,2,2000); ss=polyval(s,xx); %valutazione in xx per avere a disposizione molti punti per il plot plot( t,p, 'ko', xx,ss, 'r-.' ) %grafico orario

Test delle routine matlab relative al calcolo degli integrali

Integrale di: fun.m

function y=fun(x) y=(3.^x).*(sqrt(x.^3));

usando la routine quad (quadratura adattativa di Simpson) e con massima precisione possibile

[a b]=quad('fun',0,12) a =1.791121417517733e+007 b =

1433•usando la routine quad (quadratura adattativa di Simpson) e con tolleranza uguale a 5[a b]=quad('fun',0,12,5)a =1.791121485716642e+007b =69

Integrale doppio di:fun2.mfunction z=fun2(x,y)z=1./(x+y).^2;•usando la routine dblquad e massima precisione:dblquad('fun2', 0,3,pi,8)ans =0.351900562388246

Integrale doppio di:fun2.mfunction z=fun2(x,y)z=1./(x+y).^2;•usando la routine dblquad e tolleranza uguale a quattro:dblquad('fun2', 0,3,pi,8,4)ans =0.351901420445067

Integrale triplo di:fun3.mfunction w=fun3(x,y,z)w=sqrt(x.^2+y.^2+z.^2);•usando la routine triplequad e massima tolleranza:>> triplequad('fun3', 23,-1,1,3.6,6,7)ans =-8.560982871693459e+002

Integrale triplo di:fun3.mfunction w=fun3(x,y,z)w=sqrt(x.^2+y.^2+z.^2);•usando la routine triplequad e tolleranza uguale a 2

Dettagli
Publisher
A.A. 2012-2013
7 pagine
SSD Scienze matematiche e informatiche MAT/08 Analisi numerica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Menzo di informazioni apprese con la frequenza delle lezioni di Calcolo numerico 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 Napoli Federico II o del prof D'Alessio Alessandra.