Anteprima
Vedrai una selezione di 4 pagine su 14
Calcolo Numerico – Elaborato Pag. 1 Calcolo Numerico – Elaborato Pag. 2
Anteprima di 4 pagg. su 14.
Scarica il documento per vederlo tutto.
Calcolo Numerico – Elaborato Pag. 6
Anteprima di 4 pagg. su 14.
Scarica il documento per vederlo tutto.
Calcolo Numerico – Elaborato Pag. 11
1 su 14
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Parametri: - x è il valore a cui si vuole calcolare epsilon. È un parametro di ingresso.

- e è il valore restituito dalla funzione, cioè l’epsilon macchina o l’epsilon relativo a x.

È un parametro di uscita.

Descrizione: se viene inserito il parametro di ingresso(x) la funzione calcolerà l’epsilon macchina,

altrimenti calcolerà l’epsilon relativo a x.

Indicatori di errore: Too many input arguments= avviene se si inseriscono più parametri di

ingresso.(Questo indicatore di errore è definito dal Matlab)

Formato non corretto di x. Inserirlo come numero reale = indica che è stato

inserito un carattere

Esempio d’uso: >> x=4

>> e=epsilon(x)

e = 8.881784197001252e-016

Situazioni di errore: >> epsilon(3,5)

??? Error using ==> epsilon

Too many input arguments.

>> epsilon('a')

??? Error using ==> epsilon

Formato non corretto di x. Inserirlo come numero reale

Test dei casi funzionanti: come già detto, la funzione può essere utilizzata per due diversi motivi.

Per calcolare l’epsilon macchina: >> e=epsilon

e = 2.220446049250313e-016

O per calcolare l’epsilon relativo a x: >> x=4

>> e=epsilon(x)

e = 8.881784197001252e-016

Confronto con Matlab: con la funzione EPSILON si ha che l’epsilon macchina è

2.220446049250313e-016 con la funzione EPS del Matlab si ha che

l’epsilon macchina è 2.220446049250313e-016.

M-FILE:

function e=epsilon(x)

% EPSILON funzione che calcola l'epsilon macchina o l'epsilon relativo a x.

% parametri di ingresso:

% x=valore a cui si vuole calcolare epsilon

% parametri di uscita:

% e=epsilon macchina o epsilon relativo a x

% note:

% se non c'è input la funzione calcolerà l'epsilon macchina

% esempio d'uso:

% 1) >> e=epsilon

% e = 2.220446049250313e-016

%

% 2) >> x=4

% >> e=epsilon(x)

% e = 8.881784197001252e-016

if (nargin==0) %controlla se c'è input

e=1;

while(1+e~=1)

e=e/2;

end

e=2*e;

else %se c'è input calcola l'epsilon relativo a x

if (ischar(x)==1) %Controlla se x è un numero reale

error('Formato non corretto di x. Inserirlo come numero reale');

end

e=eps*abs(x);

end

Scopo: la funzione restituisce il più piccolo numero floating point rappresentabile per l'aritmetica

del computer sul quale è eseguita.

Specifica: l’intestazione della funzione è m=minr.

Parametri: come si nota dall’intestazione la funzione non prevede parametri di ingresso. Invece

come parametro d’uscita c’è m, che è il più piccolo numero floating point

rappresentabile per l'aritmetica del computer sul quale è eseguita(minr).

Descrizione: come già spiegato, la funzione calcola minr ma si deve tener conto che il risultato

differisce dalla funzione matlab di epsilon macchina(eps): minr/realmin=eps.

Indicatori di errore: Too many input arguments = indica che sono stati inseriti parametri di

ingresso. (Questo indicatore di errore è definito dal Matlab)

Esempio d’uso: >> m=minr

m = 4.940656458412465e-324

Situazioni di errore: >> minr(5)

??? Error using ==> minr

Too many input arguments.

Test dei casi funzionanti: >> m=minr

m = 4.940656458412465e-324

Confronto con Matlab: Prendendo in considerazione l’esempio precedente:

>> m=minr

m = 4.940656458412465e-324

si ha che il risultato differisce dalla funzione matlab epsilon

macchina(eps): minr/realmin=eps.

>> minr/realmin

ans = 2.220446049250313e-016

che è proprio il valore dell’epsilon macchina(eps), quindi si verifica che il

risultato di minr è corretto

M-FILE:

function m=minr

% MINR funzione che restituisce il più piccolo numero floating point

% rappresentabile per l'aritmetica del computer sul quale è eseguita.

% parametri di ingresso: nessuno

% parametri di uscita: m=valore di minr

% note: il risultato differisce dalla funzione matlab di epsilon macchina(eps):

% minr/realmin=eps

% esempio d'uso: >> m=minr

% m = 4.940656458412465e-324

x=1;

while (x~=0)

m=x;

x=x/2;

end x x

Scopo: la funzione calcola e , nel caso in cui x è negativo calcolerà 1/e . In più restituisce un altro

x

valore, il numero delle somme effettuate dall’algoritmo nel calcolo di e

Specifica: l’intestazione della funzione è [y,n]=espo(x,tol)

Parametri di ingresso: - x è valore dell'esponente. È di tipo reale.

- tol è la tolleranza, numero di cifre esatte richieste.

Che in realtà tol=10^-k (k=cifre esatte richieste), ma ciò è calcolato

già dalla funzione. È di tipo intero positivo.

Parametri di uscita: - y è il risultato della funzione e^x oppure di 1/e^x.È di tipo reale positivo.

- n è il numero delle somme effettuate dall'algoritmo usando la serie di

Taylor. È di tipo intero positivo.

- err indicatore di errore che visualizza dei messaggi di errore specifico.

- tol accuratezza richiesta dall’utente (parametro omesso all’uscita perché

inserito già in ingresso).

x

Descrizione: la funzione calcola e data una certa tolleranza. Se essa non viene inserita, la funzione

x

calcola e con la massima precisione(tol=epsilon macchina). Inoltre se x=0 il risultato

sarà e=1.

Indicatori di errore: - Too many input arguments = indica che sono stati inseriti più parametri di

ingresso da quelli consentiti. (Questo indicatore di errore è definito dal

Matlab)

- Too many output arguments = indica che sono stati inseriti più parametri di

uscita da quelli consentiti. (Questo indicatore di errore è definito dal

Matlab)

- Attenzione nessun input specificato = cioè non sono stati inseriti parametri

di ingresso.

- Formato non corretto di x. Inserirlo come numero reale = compare quando

si da a x il valore di un carattere o di una parola.

- Formato non esatto. Inserire uno scalare = visualizza questo errore se in x

vi è un vettore.

- Formato non corretto di tol. Inserirlo come numero naturale = indica che

tol è stato inserito in modo errato(es.: negativo, carattere)

- Attenzione! Situazione di overflow = si verifica se il risultato è in overflow

- Attenzione! Situazione di underflow = si verifica se il ris. è in underflow

Esempio d’uso: 1)esempio con tolleranza

>>[y,n]=espo(59,12)

y = 4.201210403483852e+025

n = 115

2)esempio senza tolleranza cioè a precisione massima

>> [y,n]=espo(32)

y = 7.896296018268023e+013

n = 85

Situazioni di errore: 1) >> [y,n]=espo(3,7,6)

??? Error using ==> espo

Too many input arguments.

2) >> [y,n,m]=espo(3,7)

??? Error using ==> espo

Too many output arguments.

3) >> [y,n]=espo

??? Error using ==> espo

Attenzione nessun input specificato

4) >> [y,n]=espo('a',10)

??? Error using ==> espo

Formato non corretto di x. Inserirlo come numero reale

5) >> [y,n]=espo([2 3 4; 5 6 7],10)

??? Error using ==> espo

Formato non esatto. Inserire uno scalare

6) >> [y,n]=espo(10,'a')

??? Error using ==> espo

Formato non corretto di tol. Inserirlo come numero naturale

7) >> [y,n]=espo(10,-10)

??? Error using ==> espo

Formato non corretto di tol. Inserirlo come numero naturale

8) >> [y,n]=espo(730,13)

??? Error using ==> espo

Attenzione! Situazione di overflow

9) >> [y,n]=espo(-730,13)

??? Error using ==> espo

Attenzione! Situazione di underflow

x

Test dei casi funzionanti: 1) >> [y,n]=espo(32,13) (e con tolleranza>epsilon macchina)

y = 7.896296018230850e+013

n = 78 x

2) >> [y,n]=espo(-32,14) (1/e con tolleranza>epsilon macchina)

y = 1.266416554909790e-014

n = 81

3) >> [y,n]=espo(32) (senza tolleranza)

la funzione è stata calcolata con la massima precisione

y = 7.896296018268023e+013

n = 85

4) >> [y,n]=espo(0) (con x=0)

y = 1

n = 1

5) >> [y,n]=espo(4,18) (con tolleranza<epsilon macchina)

y = 54.59815003314422

n = 29

6) >> [y,n]=espo(10^-309) (quando x è più piccolo di realmin viene

y = 1 approssimato ad esso per non causare

n = 1 underflow, ma poi è talmente

piccolo . perciò è come se fosse 0 e

quindi e=1)

Confronto con Matlab:

Funzioni per il ESPO EXP di Matlab

x (senza tolleranza)

calcolo di e

X=1 2.71828182845905 2.71828182845905

X=5 1.484131591025765e+002 1.484131591025766e+002

X=30 1.068647458152442e+013 1.068647458152446e+013

x=100 2.688117141816041e+043 2.688117141816136e+043

x=350 1.007090887027834e+152 1.007090887028080e+152

x=710 overflow (inf.) infinito

x=-710 underflow (0) 4.476286225675130e-309

Come si può notare dalla tabella, con l’aumentare di x le cifre esatte della ESPO diminuiscono

rispetto alla funzione del Matlab. Inoltre la funzione ESPO nel caso x=-710 da underflow mentre la

funzione EXP da un determinato valore perchè quest’ultima gestisce i subnormal number.

M-FILE:

function [y,n]=espo(x,tol)

% ESPO calcola l'esponenziale di x, nel caso in cui x è

% negativo la funzione calcolerà 1/e^x.

% parametri di ingresso:

% x=valore dell'esponente

% tol=tolleranza, numero di cifre esatte richieste.

% In realtà tol=10^-k (k=cifre esatte richieste)

% ma ciò è calcolato già dalla funzione

% parametri di uscita:

% y=risultato della funzione e^x oppure di 1/e^x

% n=numero delle somme effettuate dall'algoritmo usando

% la serie di Taylor

% esempio d'uso: tenendo conto di [y,n]=espo(x,tol) si può avere:

% 1)l'esponenziale con tolleranza

% >>[y,n]=espo(59,12)

% y = 4.201210403483852e+025

% n = 115

% 2)l'esponenziale con la massima precisione

% >> [y,n]=espo(32)

% y = 7.896296018268023e+013

% n = 85

format long;

if (nargin==0) %Visualizza un errore se non c'è input

error('Attenzione nessun input specificato');

end

if (ischar(x)==1) %Controlla se x è un numero reale

error('Formato non corretto di x. Inserirlo come numero reale');

end

dim=prod(size(x));

if (dim~=1) %Visualizza un errore se non si inserisce uno scalare

error('Formato non esatto. Inserire uno scalare');

end

if (nargin==1)

disp('la funzione è stata calcolata con la massima precisione');

tol=eps;

else

if (ischar(tol)==1)|

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

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Sara F 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'Amore Luisa.