Esercitazioni con GNU Octave

Похожие документы
MATLAB Elementi di grafica Costrutti di programmazione

MATLAB (II parte) Commenti. Input/Output (I/O) Istruzioni di Input/Output (I/O)

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

Introduzione al MATLAB c Parte 3 Script e function

Introduzione al MATLAB c Parte 2 Funzioni

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

Laboratorio di Calcolo Numerico

Breve guida al linguaggio FORTRAN 77

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

CORSO DI LABORATORIO DI INFORMATICA

MATLAB c. Lucia Gastaldi Dipartimento di Matematica Lezione 4 (15 ottobre 2003)

Matlab 5. Funzioni. Slide basate sul corso di C. Blundo. A.A. 2010/ GPersiano. Laboratorio di Informatica per Fisici 1

Prove d esame Esercizi con Matlab

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

Introduzione all ambiente MATLAB. Richiami II. Calcolo Numerico - A.A. 2008/09

Mini-Corso di Informatica

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

Laboratorio 1. Introduzione a Matlab

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Matlab : le basi. Vediamo ora un esercizio di calcolo: Il volume di una sfera è dato da V=4*π*r 3 /3 dove r è il raggio.

Fondamenti di Informatica

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

Traccia 1. Nome Cognome Matricola Firma. Spazio Riservato alla Commissione. Esercizio 1 Esercizio 2 Esercizio 3 Esercizio 4 Esercizio 5 Totale

osservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1

Basic: introduzione. Struttura fondamentale

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Introduzione allo Scilab Parte 1: numeri, variabili ed operatori elementari

Informatica Applicata al Suono Tutorial Matlab

Rappresentazione degli algoritmi

Laboratorio 4 Funzioni e Input/Output

Introduzione a Matlab

Esercitazione 4. Comandi iterativi for, while, do-while

Le basi del linguaggio Java

Matlab. Vettori, funzioni matematiche e grafici.

variabili, vettori, matrici e indici a = 7; a a(1) a(1,1) a(3) = 2 a(2,2) = 1 a(2,2)

variabili, vettori, matrici e indici variabili, vettori, matrici e indici Tavola pitagorica (tabelline) Tavola pitagorica (tabelline)

Matematica per l Economia Sottoinsieme L-Z Dipartimento di Economia Universitá degli Studi di Bari 4) FUNZIONI ELEMENTARI.

COME TROVARE IL DOMINIO DI UNA FUNZIONE

VBA Principali Comandi

Esercitazione 3. Espressioni booleane I comandi if-else e while

Programmazione I - Laboratorio

Costrutti condizionali e iterativi

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

15 Riepilogo di esercizi in MATLAB

Inversa di una matrice quadrata. L operatore inv() inverte una matrice quadrata non singolare (cioè in cui il determinate è diverso da zero).

Linguaggio C: le funzioni

C: panoramica. Violetta Lonati

Fondamenti di Informatica

A.S Classe III H Informatica. Programma didattico finale e indicazioni per il recupero estivo relativi all'insegnamento di Informatica

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Fondamenti di Informatica

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

Proprietà delle funzioni. M.Simonetta Bernabei, Horst Thaler

Introduzione allo Scilab

Esercitazione 1: Introduzione a MATLAB

alsoftwork Manuale d' uso di X_Calc V.1.0 Calcolatrice scientifica Utilizzo di X_Calc Questo pulsante abilita/disabilita la calcolatrice scientifica.

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Introduzione a Matlab. Renato Mainetti

Formalismi per la descrizione di algoritmi

Esercitazione 1 Conversione di base

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Progettazione di Algoritmi: Approccio Top-Down e Bottom Up

Comandi di Input/Output in Matlab

INFORMATICA. Strutture iterative

Fondamenti di Informatica

Fondamenti di Informatica

Metodi per la risoluzione di equazioni non lineari

STRUTTURE DI CONTROLLO DEL C++

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate

Esercitazione 6. Array

Laboratorio di Calcolo Numerico

Laboratorio di Informatica

Corso di Analisi Matematica. Funzioni continue

Транскрипт:

appendice A Esercitazioni con GNU Octave GNU Octave può essere scaricato dalla seguente pagina: https://www.gnu.org/software/octave/download.html L elenco dei concetti, delle funzioni e degli operatori di Octave possono essere trovati ai seguenti indirizzi: https://www.gnu.org/software/octave/doc/interpreter/concept-index.html https://www.gnu.org/software/octave/doc/interpreter/function-index.html https://www.gnu.org/software/octave/doc/interpreter/operator-index.html A.1 Introduzione a GNU Octave A.1.1 Alcune funzioni funzione applicazione significato dlmread input/output input di un array da un file dlmwrite input/output output di un array su un file disp input/output scrive un testo o una variabile a video input input/output scrive un messaggio ed attende un input printf input/output formatta un array e produce l output a video fprintf input/output formatta un array e produce l output su file sprintf input/output formatta un array e restituisce una stringa a video str2num conversione converte una stringa in numero num2str conversione converte un numero in stringa zeros array inizializza un array di elementi nulli 73

74 appendice A. Esercitazioni con GNU Octave funzione applicazione significato ones array inizializza un array di elementi unitari eye array matrice identica repmat array inizializza un array con termini uguali size array numero di righe o di colonne di un array max array massimo degli elementi di un array min array minimo degli elementi di un array sum array somma degli elementi di un array mean array media degli elementi di un array abs math valore assoluto di un numero/array log math logaritmo naturale di un numero/array exp math esponenziale di un numero/array sin math seno di un numero/array cos math coseno di un numero/array tan math tangente di un numero/array cot math cotangente di un numero/array asin math arcoseno di un numero/array acos math arcocoseno di un numero/array atan math arcotangente di un numero/array acot math arcocotangente di un numero/array fix math parte intera di un numero round math arrotondamento intero di un numero rem math resto della divisione intera A.1.2 Matrici La creazione di una matrice si ottiene semplicemente scrivendone i termini separati da virgole o punti e virgole. Ad esempio, il comando m=[1,2,3;4,5,6;7,8,9] produrrà il seguente output 1 2 3 4 5 6 7 8 9

A.1. Introduzione a GNU Octave 75 Se vogliamo aggiungere una riga costituita dagli elementi 1, 2, 3 alla matrice è sufficiente scrivere m=[m;[1,2,3]] Otterremo il seguente output 1 2 3 4 5 6 7 8 9 1 2 3 Se vogliamo aggiungere una colonna costituita dai termini 4, 5, 6, 7 alla nuova matrice è sufficiente scrivere m=[m,[4;5;6;7]] Otterremo il seguente output 1 2 3 4 4 5 6 5 7 8 9 6 1 2 3 7 Vediamo ora come inizializzare una matrice. 3x3 si ottiene con il seguente comando L inizializzazione a zero di una matrice m=zeros(3,3) Otterremo il seguente output 0 0 0 0 0 0 0 0 0 Una matrice identica 3x3 si ottiene invece con il seguente comando m=eye(3) Otterremo il seguente output 1 0 0 0 1 0 0 0 1 Se, invece, vogliamo inizializzare una matrice 2x3 avente tutti gli elementi uguali ad un valore (ad esempio 7) abbiamo due possibilità. La prima è quella di eseguire il seguente comando

76 appendice A. Esercitazioni con GNU Octave m=7*ones(2,3) Ottenendo il seguente output 7 7 7 7 7 7 La seconda è quella di eseguire il comando m=repmat(7,[2,3]) ottenendo lo stesso output. A.2 Funzioni Le funzioni sono programmi che data una serie di variabili in entrata restituiscono uno o più valori in uscita. La definizione di una funzione prevede il salvataggio di un file con estensione.m avente come nome lo stesso nome della funzione. Ad esempio, se vogliamo definire una funzione funztest che restituisca i risultati delle due operazioni c = sin (a b) e d = exp (a + b) è necessario salvare un file chiamato funztest.m contenente il seguente testo: function [c,d]=funztest(a,b) c=sin(a-b); d=exp(a+b); end A.3 Costrutti A.3.1 Costrutto if if (condizione 1) istruzioni se la condizione 1 è vera elseif (condizione 2) istruzioni se la condizione 2 è vera... elseif (condizione n) istruzioni se la condizione n è vera else istruzioni se tutte le condizioni precedenti sono false

A.3. Costrutti 77 Esempio: test per stabilire che un numero intero sia pari o dispari a=input("inserisci un numero intero ","s"); a=str2num(a); if (a!=fix(a)) disp "il numero inserito non è intero" elseif (rem(a,2)==0) disp "il numero inserito è pari" else disp "il numero inserito è dispari" A.3.2 Costrutto for for cont=cont1:cont2 istruzioni se cont1 cont cont2 endfor Esempio: costruzione della tavola pitagorica a=input("inserisci un numero intero ","s"); a=str2num(a); if (a!=fix(a)) disp "il numero inserito non è intero" else tab=[]; for i=1:a for j=1:a tab(i,j)=i*j; endfor endfor disp (tab) A.3.3 Costrutto while while (condizione) istruzioni se condizione è vera endwhile Esempio: calcolo della radice numerica di una funzione. Costruiamo una funzione

78 appendice A. Esercitazioni con GNU Octave ff bisection salvando il file ff bisection.m. Il testo contenuto nel file è il seguente: function [root,err,iter]=ff bisection(ff,aa,bb,tol,itermax) iter=0; if (ff(aa)*ff(bb)>=0) disp "no solutions" return while (abs(bb-aa)>tol) root=0.5*(aa+bb); if (ff(root)*ff(aa)>0) aa=root; else bb=root; iter=iter+1; if (iter==itermax) disp (["max iterations (",num2str(itermax),")"]) return endwhile err=abs(bb-aa); end Nella precedente function l argomento ff rappresenta una funzione qualsiasi. Supponiamo, ad esempio, di volere calcolare la radice della funzione tan(x) 1. Definiamo innanzitutto una funzione salvando un file tanxeq1.m contenente il testo: function [val]=tanxeq1(x) val=tan(x)-1; end In uno script dovremo poi chiamare la funzione di bisezione. La funzione della quale vogliamo calcolare la radice viene passata alla funzione di bisezione attraverso una anonymous function. Quest ultima viene definita come segue: ffh=@(x)tanxeq1(x). aa=0; bb=1; tol=1.0e-12; itermax=1000; ffh=@(x)tanxeq1(x); [root,err,iter]=ff bisection(ffh,aa,bb,tol,itermax); disp "" disp (["numero di iterazioni = ",sprintf("%i",iter)])

A.3. Costrutti 79 disp (["tolleranza disp (["radice numerica disp (["arctan(1) disp (["differenza = ",sprintf("%.14e",tol)]) = ",sprintf("%.14e",root)]) = ",sprintf("%.14e",atan(1))]) = ",sprintf("%.14e",root-atan(1))])