IMPORT TOOL
HOME
IMPORT DATA
selezione file -> APRI
COLUMN DELIMITERS (separazione delle colonne)
CASELLA -> TAB
VIRGOLA -> COMMA
SPAZIO -> SPACE
PUNTO VIRGOLA -> SEMICOLON
DELIMITER OPTIONS (separazione decimali)
. -> PERIOD
, -> COMMA
in IMPORTED VARIABLE scegli tipologia:
COLUMN VECTORS: variabile diversa per ogni colonna. N x 1.
inserire nome nella prima riga
NUMERIC MATRIX: dati selezionati tramite SELECTION/HISTORY accorpati in unica matrice nominata in NAME.
STRING ARRAY: dati selezionati importati in una matrice di stringhe nominata in NAME.
VARIABLE NAME ROW: seleziona la riga in cui ho i nomi delle variabili quando uso COLUMN VECTORS
INPUT DATI DA TASTIERA
m = input( " inserire valore da tastiera: " );
il valore viene inserito nella variabile m.
s = input( " inserire stringa: " , "s" );
il testo digitato viene salvato come stringa
OUTPUT FORMATTATO
- STAMPA A VIDEO
fprintf(1, "testo: %g /n", variabile)
es: nome = "bob";eta = 20;
fprintf(1, "lo studente %s ha %g anni. /n", nome, eta)
>> lo studente bob ha 20 anni.
- STAMPA DI PIU ELEMENTI DI VETTORE
nomi = ["bob", "andrea", ....]eta = [20, 25, ....]
for i = 1:m
fprintf(1, "%s %g anni", nomi(i), eta(i))
end
>> bob 20 anniandrea 25 anni::
- STAMPA SU FILE DI TESTO
fid = fopen("nomefile.txt", "w");
fprintf(fid, "testo....%g... /n", variabile);
fclose(fid);
DA METTERE FUORIDAI CICLI
FUNZIONI
function y = nomefunzione(x)
OUTPUT
NOME FUNZIONE
INPUT
es: funzione che trasforma una matrice di ore, minuti, secondi in secondi
function t = Tempo2secondi(tempo);
h = tempo(1);
m = tempo(2);
s = tempo(3);
t = s + m*60 + h*3600;
Testarla nel command windows non con run
cicli
- for
for variabile = intervallo
comando
end
es: ripetere comando di stampa a schermo per 5 volte
for i = 1:5
disp("RIPETIZIONE:")
disp(i)
end
>> RIPETIZIONE:
1
RIPETIZIONE:
2
RIPETIZIONE:
3
RIPETIZIONE:
4
RIPETIZIONE:
5
creare una tabella con ciclo for.
for i = 1:length(materie)
fprintf(1, "MATERIA: %s /t ORA: %og \n,materie(i),ora(i))
>> MATERIA: geometria ORA:10
MATERIA: inglese ORA:12
...
A = 0
for i = 1 : m
A = A + elements(i)
end
if / else
if espressione logica
istruzione se vera
else
istruzione se falsa
end
if espressione logica (1)
istruzione se vera
else if espressione logica (2)
istruzione se espressione logica (1) falsa
else
istruzione se tutte false
end
scrivere l'espressione 1 < x < 5
x >= 1 & x <= 5
AND &
OR |
NOT ~ (ALT +126)
while
wile
espressione
deve avere un valore iniziale
comandi da ripetere finché vera
end
es: calcolo interessi fino a 2000
totale = 1000 ;
anno = 0 ;
DICHIARO PRIMA LE VARIABILI INIZIALI
while totale < 2000
totale = totale * 1.08
anno = anno + 1
end
ANALOGO A SCRIVERE:
totale = 1000 ;
for anno = 1:100
totale = totale * 1.08
if totale > 2000
se supera 2000 interrompe il ciclo
break
end
end
COMANDI PER ARRAY pag 59-60
sum(a) somma gli elementi nelle colonne
sum(condizione) somma gli elementi che soddisfano la condizione
A = [ 1, -3, 5, -2, -6
3, 1, -2, -1, 3 ]
NON FA LA SOMMA DEGLI ELEMENTI
sum(A>0)
ans = 2 1 1 0 1
es: V = [10, 2, 30, 5, 20]
V(V>7)
ans = 10 30 20
B = A(:, 2)
crea una nuova matrice prendendo da TUTTE LE RIGHE (:) solo LA SECONDA COLONNA (2).
es:
A = [10 20 30
40 50 60
70 80 90] => B = [20
50
80]
vedi pag 59
a.*b moltiplica ogni elementi di a per b.
a./b
a.^b
sort(v) mette in ordine crescente gli elementi di V
[val, pos] = min(v)
valore del minimo
posizione del minimo
anche con max
zeros(R, C) crea matrice RxC con tutti 0
ones(R, C) crea matrice RxC con tutti 1
eye(R, C) crea matrice con 1 nella diagonale e 0 dalle altre parti
rand(R, C) crea matrice con valori casuali tra 0 e 1
rand(1) genera un solo numero
CONCATENARE VETTORI
a = [1, 2, 3]
b = [4, 5, 6]
c = [a, b]
c = [1 2 3 4 5 6]
d = [a; b]
d = [1 2 3]
[4 5 6]
per far nascere una matrice.
v1 = [1, 2, 3]
v1 = [v1, 4]
v1 = [1, 2, 3, 4]
a = [4 5 3 9; 10 4 66 20; 18 -3 2 0]
x = a(2,3)
x = 66
a(1,2) = 7
a = [4 7 3 9; 10 4 66 20; 18 -3 2 0]
SELEZIONARE SOTTOMATRICE
b = [4 7 3 9; 10 4 66 20; 18 -3 2 0]
x = b([1 2], [3 4])
x = [3 9; 66 20]
DIMENSIONI
a = [4 5 6; 10 4 66]
> size(a)
ans = 2 3
> length(a)
ans = 3
diag([1 2 3])
ans =
1 0 0
0 2 0
0 0 3
crea una matrice mettendo gli elementi nella diagonale
reshape(a,3,2)
riordinamento seguendo le colonne senza cambiare gli elementi
ans =
4 4
10 6
5 66
ARROTONDAMENTI
round(5,8)
ans = 6
arrotonda per eccesso
resi pross 14
floor(2,1)
ans = 2
arrotonda per difetto (verso -)
fix arrotonda verso 0
rem(23,5)
resto della divisione 23:5
notazione scientifica: 6,3 .10-3
>> 6,3e+3
GRAFICI
plot(x,y) crea il grafico xy
xlabel("NOME ASSE x")
ylabel("NOME ASSE y")
title("TITOLO GRAFICO")
text(0,1,"NOTAZIONE") scrive NOTAZIONE nel punto (0,1)
grid visualizzazione la griglia
plot(x,y,"specifica linea")
Forma Generale: plot(x,y,"OBB")
Colore:
- k black
- r red
- b blue
- g green
- y yellow
- c cyan
- w white
- m magenta
Simbolo:
- . point
- o circle
- x x-mark
- s square
- d diamond
- Etc (+, *, ^, >, <, v, p, h).
Tipo Linea:
- - solid
- : dotted
- -- dashed
- -. dash-dot
L'ordine non e importante!
es: plot(x,y,"r:d")
grafico con la linea rossa, linea punteggiata e marker a forma di rombi
Si possono aggiungere altre proprieta come:
Forma Generale: plot(x,y,"OBB",value)
Proprieta:
- linewidth
- markersize
- markeredgecolor
- markerfacecolor
Valore: dipende dalla proprieta
Dimensioni in punti
Colori
Possono esserci coppie multiple!
STUDIO DI POLINOMIO (GRAFICO E RADICI)
es: g(x) = x3 - 7 x2 + 40x -34
x = [ a :0,01: b ]; valori tra cui voglio rappresentare
a = [1, -7, 40, -34];
radici = roots(a)
y = polyval(a,x);
plot(x,y)
MOSTRA GRAFICO...
radici = 3 + 5i;3 - 5i;1
OPPURE DIRETTAMENTE
roots([1, -7, 40, -34])
plot(x, polyval(a))
STUDIO DI FUNZIONE (GRAFICO, ZERI, MINIMO)
vedi sopra per GRAFICO
- definiamo prima la funzione con function
trovare gli zeri: (pag 129)
ZERO = zero("funzione", a)
nome assegnato alla funzione
valore vicino a cui cercare lo zero
trovare il minimo:
MINIMO = min(y)
fminbnd("funzione", a, b) restituisce x minimo nell'intervallo a,b
y = funzione(ZERO) trova il valore di y corrispondente
RIsolvere sistemi
rank(A) = rank([A,b]) = n° incognite
Per matrici quadrate con determinante non nullo
es:
6x + 12y + 4z = 70
7x - 2y + 3z = 5
2x + 8y - 9z = 64
A = [6 12 4; 7 -2 3; 2 8 -9];
b = [70; 5; 64];
soluzioni = A\b
soluzioni = 3
5
-2
N° di incognite
dim = size(A)
dim 3 3
n-incognite = dim(2)
3
Sistemi indeterminati
Ax = b
rank(A) = rank([A,b]) < n° incognite
pinv(A)
Pseudo inversa di A
soluzione = pinv(A) * b
Trova soluzione di norma minima
rref([A,b])
es. A = [-1, 1, 2; 3 -1 1; 2 -2 -4],
b = [2; 6; -4];
rref([A,b])
1 0 1,5 4
0 1 3,5 6
0 0 0 0
corrisponde alla soluzione
x + 1,5z = 4
y + 3,5z = 6
x = 4 - 1,5z
y = 6 - 3,5z
SISTEMI SOVRADETERMINATI
rank(A) < rank([A b])
Risolvo con x = A\b soluzione con minimo dei quadrati.
Script file lineq.m
Solves the set Ax = b, given A and b.
Check the ranks of A and [A b].
if rank(A) == rank([A b])
The ranks are equal.
Size_A = size(A);
Does the rank of A equal the number of unknowns?
if rank(A) == size_A(2)
Yes. Rank of A equals the number of unknowns.
disp('There is a unique solution,... which is:')
x = A\b Solve using left division.
else
Rank of A does not equal the number of unknowns.
disp('There is an infinite number of solutions.')
disp('The augmented matrix of the reduced system is:')
rref([A b]) Compute the augmented matrix.
end
else
The ranks of A and [A b] are not equal.
disp('There are no exact solutions.')
disp('Least square solution is:')
x = A\b Solve using left division.
end
INTEGRAZIONE (METODO TRAPEZI)
∫ab g(x) dx
x = linspace(a, b, m);
y = sin(x);
A = trapz(x,y)