...

funzione

by user

on
Category: Documents
36

views

Report

Comments

Description

Transcript

funzione
Funzioni matematico – statistiche

I comandi matematici di più comune utilizzo,
applicabili a scalari e matrici, sono:


Sqrt(x), che calcola la radice quadrata di x
sign(x), che 1,0 o -1 a seconda che x sia positivo,
nullo o negativo

exp(x), che calcola l’esponenziale di x

log(x), che calcola il logaritmo naturale di x
Funzioni matematico – statistiche




mean(x), che calcola la media
cov(x), che calcola la matrice di varianza covarianza
median(x), che calcola la mediana della
distribuzione
var(x) che calcola la varianza
Generazione di numeri casuali

Molto importanti sono i comandi relativi alla generazione di
numeri casuali, che sono tali grazie ad algoritmi interni che
garantiscono la non regolarità dei dati:



Rand(r,c) genera una matrice rxc di numeri estratti da una
distribuzione continua uniforme (e quindi compresi tra zero
ed uno)
Randn(r,c) genera una matrice rxc di numeri estratti da una
distribuzione continua normale di media zero e varianza uno
Possiamo fissare il numero di partenza dal quale parte
l’algoritmo di MATLAB per generare i numeri casuali (o meglio
pseudo – casuali) digitando nel command:
>> rand(‘seed’,k)
>> randn(‘seed’,k)
Generazione di numeri casuali


Le funzioni statistiche comprendono il campionamento da
numerose variabili, tra cui citiamo normale, uniforme,
chi – quadro, gamma, poisson, beta.
Oltre alla generazione di numeri casuali, esistono numerosissime
funzioni statistiche, osservabili digitando
help toolbox\stats
Tra le funzioni statistiche di maggior utilità, citiamo in generale:
 Le funzioni che calcolano, dato il valore della ascissa, la
probabilità della parte sinistra = 1- pvalue finiscono in –cdf
preceduto dal nome della distribuzione, es. chi2cdf;
 Le funzioni che calcolano, data la probabilità, il valore
dell’ascissa finiscono in –inv preceduto dal nome della
distribuzione, es. chi2pdf;
La creazione di funzioni




Quando scriviamo nell’edit di MATLAB noi digitiamo una serie di
operazioni che poi, alla riapertura del file, possono essere
riutilizzate.
La maggior utilità dell’edit risiede nella possibilità di creare
funzioni, allo stesso modo delle funzioni create da MATLAB
stesso e presenti nei vari toolbox.
Una funzione, come ad esempio i comandi relativi alla
manipolazione di matrici, consta di una serie di operazioni
racchiuse in un file .m che vengono effettuate su di un input
richiamando un comando che dà poi un output numerico.
Le funzioni risiedono in files .m denominati con lo stesso nome
della funzione stessa es. mean.m
La creazione di funzioni




Ad es. la funzione sqrt(m) è una funzione che richiede 1 input
(la matrice o il vettore) e fornisce 1 output
Caratterizzanti delle funzioni sono:
 Il nome della funzione, che è interno a MATLAB
 Il numero di input
 Il numero di output (se desiderati)
L’importante è che una volta salvato il file contenente la
funzione, essa è immediatamente e per sempre utilizzabile sia
nel command che nell’edit, senza bisogno di caricare il file.
Ad esempio se creo e salvo in una directory di MATLAB una mia
funzione, potrò d’ora in poi sempre usarla.
La creazione di funzioni


Le funzioni vengono dunque create in M-files, consistono in una
serie di operazioni e richiedono necessariamente argomenti di
entrata (ossia input) e se desiderati anche argomenti di uscita
(output).
La sintassi per creare una funzione nell’edit è:
function[output1,output2,..]= nome funzione(input1, input2,..)
La creazione di funzioni
quindi:
 Il nome funzione è il nome che noi attribuiamo alla funzione
e con la quale essa verrà richiamata (es. mean), che dovrà
coincidere con il nome del file


Gli input devono essere racchiusi tra parentesi tonde () e
devono essere separati da virgole; gli input sono locali, cioè
non dipendono dal nome che avrà poi in concreto la variabile
quando applicherò la funzione!
Gli output devono essere racchiusi tra parentesi quadre [] e
devono essere separati da virgole
La creazione di funzioni

Qualora non fosse necessario indicare un output, la sintassi è
function[]= nome funzione(input1, input2,..)

Qualora non venga assegnato nessun output non sarà possibile
richiamare il risultato quando calcoliamo la funzione
Proviamo ad esempio a creare una funzione che chiamiamo
areacer che dato il raggio del cerchio me ne calcoli l’area; quindi


Esiste un input: il raggio del cerchio
Posso o meno decidere che mi stampi semplicemente a
video il risultato del calcolo oppure posso ad esso associare
una variabile di output
La creazione di funzioni



Se vogliamo che la funzione dia un output (il valore numerico
dell’area) scriveremo:
function[area]=areacer(r)
altrimenti
function[]=areacer(r)
Il codice più semplice da scrivere è
1- function[area]=areacer(r)
2- area=pi*r^2;
Una volta salvato il file, denominato areacer.m, la funzione
areacer() darà come risultato il quadrato dell’input moltiplicato
per pi greco, ossia l’area del cerchio con quell’input.
La creazione di funzioni

Se non inserisco variabili di output, non posso richiamare la
funzione attribuendole una funzione, altrimenti mi segna errore.
Ad es. se il mio codice è:
1- function[]=areacer(r)
2- area=pi*r^2
in questo caso la variabile area è locale, cioè interna alla
funzione! Essa è stampata a video in quanto al termine della
riga non compare il “;” ma non è indicata come variabile di
output, in quanto è function[]. Quindi se io scrivessi nel
command, dopo aver salvato il file con la funzione,
>> y=areacer(3)
mi darebbe errore in quanto per definizione la funzione areacer
non ammette variabili output.
La creazione di funzioni

Quando io digito help seguito da il nome della funzione mi
compare, come detto in precedenza, una serie di indicazioni
circa l’uso della funzione stessa. Come detto queste righe
coincidono con le righe di commento che seguono
immediatamente la definizione della funzione racchiuse tra %.
Per cui se scrivevo:
1234-
function[]=areacer(r)
% serve per calcolare
% l’area di un cerchio di raggio r
area=pi*r^;
salvando e digitando poi help areacer otterrei la stampa a video
delle righe tra %. Attenzione che ogni riga di commento deve
iniziare con la %.
La creazione di funzioni

Se abbiamo una funzione con più di 1 output, ad es.
123456-
function[ac,aq]=areacerq(r)
% serve per calcolare
% l’area di un cerchio di raggio r
% e l’area di un quadrato di lato l=r
ac=pi*r^2;
aq=r^2;
quando nel command richiamo la funzione, avendo 2 output
devo scrivere
>> [a,b] = areacerq(5)
oppure se mi interessa solo il primo input posso scrivere solo
>> a = areacerq(5)
La creazione di funzioni

Proviamo ora a definire altre funzioni, per esempio in ambito
dell’algebra matriciale. Considerata una matrice che presenti
elementi solo sulla diagonale principale, il suo determinante per
il teorema di Laplace coincide con il prodotto degli elementi
sulla diagonale stessa. Per questo, avvalendoci dei comandi diag
e prod presenti nel toolbox matematico, possiamo definire una
funzione del tipo:
function[dd]=mydd(A)
di=diag(A);
dd=prod(di);

Quindi estraiamo la diagonale principale e moltiplichiamo gli
elementi del vettore di. La funzione non è completamente
precisa: dovremmo verificare che la matrice sia quadrata e che
sia diagonale! Vedremo come questo sarà possibile con il
comando if.
Fly UP