• Non ci sono risultati.

Fondamenti di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica"

Copied!
9
0
0

Testo completo

(1)

Fondamenti di Informatica

Esercitazione MATLAB

Modellazione e Risoluzione di Problemi mediante MATLAB

Pro f. M a rco Lo mb a rd i

(2)

In questa esercitazione verrà utilizzata una matrice C ed una matrice I

L’elemento C(riga, colonna) rappresenta il numero di vetture vendute di una data marca (specificata dalla colonna), appartenenti ad un dato segmento (specificato dalla riga)

Esempio: C(2, 1) → Indica che sono state vendute 40 vetture di Marca X (avente indice di

colonna 1), appartenenti al Segmento B (avente indice di riga 2)

L’elemento I(riga, colonna) rappresenta l’incasso per una singola vettura venduta di una data marca (specificata dalla colonna), appartenente ad un dato segmento (specificato dalla riga)

Esempio: I(1, 2) → Indica che è stato ottenuto un incasso di 18000 per una singola vettura

di Marca Y (avente indice di colonna 2), appartenente al Segmento A (avente indice di riga 1)

Sopra è mostrato un esempio di C e I

Entrambe le matrici contengono esclusivamente dati numerici (evidenziati in arancio

nell’esempio)

NOTA: negli esercizi è possibile utilizzare funzioni viste a lezione, funzioni realizzate negli

esercizi precedenti e/o funzioni built-in di MATLAB.

<<concessionaria.txt>> Marca X (indice 1) Marca Y (indice 2) Marca Z (indice 3) Segmento A (indice 1) 90 7 2 Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40

<<incasso_singolare.txt>> Marca X Marca Y Marca Z

Segmento A 10000 18000 21000

Segmento B 14000 19000 22000

Segmento C 16000 24000 24500

C

(3)

Scrivere una funzione chiamata auto_vendute, che prenda come argomenti di input: la matrice C (concessionaria) ed un numero intero indice_segmento, e restituisca come argomento di output il numero totale di auto vendute per il segmento con indice indice_segmento

Esempio: auto_vendute(C, 2)→ restituisce 62

Scrivere una funzione chiamata incasso_concessionaria, che prenda come argomenti di input: la matrice C (concessionaria) e la matrice I (incasso_singolare), e restituisca come argomento di output l’incasso totale realizzato della concessionaria

Esempio: incasso_concessionaria(C, I)→ restituisce 4022000

Scrivere una funzione chiamata segmento_piu_redditizio, che prenda come argomenti di input: la matrice C (concessionaria) e la matrice I (incasso_singolare), e restituisca come argomento di output l’indice del segmento che genera incassi massimi

Esempio: segmento_piu_redditizio(C, I)→ restituisce 3

OSSERVAZIONI: Il valore 3 si riferisce al Segmento C (che genera gli incassi massimi, equivalenti, a 1940000) Scrivere una funzione chiamata incasso_medio_marca, che prenda come argomento di input la matrice I (incasso_singolare) ed un numero intero indice_marca, e restituisca come argomento di output l’incasso medio di vendita di tutte le vetture della marca avente indice indice_marca

Esempio: incasso_medio_marca(I, 1) → restituisce 13333.3

(indice 1) (indice 2) (indice 3) Segmento A (indice 1) 90 7 2 Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40 Eser ciz io 1 Eser ci zio 4 Eser ciz io 2 Eser ciz io 3

<<incasso_singolare.txt>> Marca X Marca Y Marca Z

Segmento A 10000 18000 21000

Segmento B 14000 19000 22000

(4)

Scrivere un M-File Script chiamato concessionaria_script.m che effettui le seguenti operazioni

1. Importi la matrice C dal file concessionaria.txt

2. Importi la matrice I dal file incasso_singolare.txt

3. Invochi la funzione dell’Esercizio 2 (chiamata incasso_concessionaria) con gli argomenti di input: C e I, ed infine mostri a video il risultato della funzione stessa

NOTA: I file concessionaria.txt e incasso_singolare.txt contengono solo dati numerici. È utilizzato il

separatore virgola (,) per separare le colonne (suggerimento: utilizzare la funzioneimportdata). Si assuma che i file siano memorizzati all’interno della Current Directory.

<<concessionaria.txt>> Marca X (indice 1) Marca Y (indice 2) Marca Z (indice 3) Segmento A (indice 1) 90 7 2 Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40

C

Eser ciz io 5

<<incasso_singolare.txt>> Marca X Marca Y Marca Z

Segmento A 10000 18000 21000 Segmento B 14000 19000 22000 Segmento C 16000 24000 24500

90, 7, 2

40, 10, 12

15, 30, 40

10000, 18000, 21000

14000, 19000, 22000

16000, 24000, 24500

Contenuto del file

concessionaria.txt

Contenuto del file

incasso_singolare.txt

(5)

Scrivere una funzione chiamata auto_vendute, che prenda come argomenti di input: la matrice C (concessionaria) ed un numero intero indice_segmento, e restituisca come argomento di output il numero totale di auto vendute per il segmento con indice indice_segmento

Esempio: auto_vendute(C, 2)→ restituisce 62 Possibile Soluzione 1

Possibile Soluzione 2

(indice 1) (indice 2) (indice 3) Segmento A (indice 1) 90 7 2 Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40 Eser ciz io 1

function [ auto_vendute_segmento ] = auto_vendute(C, indice_segmento) auto_vendute_segmento = sum(C(indice_segmento, :));

end

function [ auto_vendute_segmento ] = auto_vendute(C, indice_segmento) auto_vendute_ogni_segmento = sum(C, 2);

auto_vendute_segmento = auto_vendute_ogni_segmento(indice_segmento); end

<<incasso_singolare.txt>> Marca X Marca Y Marca Z

Segmento A 10000 18000 21000

Segmento B 14000 19000 22000

(6)

Scrivere una funzione chiamata incasso_concessionaria, che prenda come argomenti di input: la matrice C (concessionaria) e la matrice I (incasso_singolare), e restituisca come argomento di output l’incasso totale realizzato della concessionaria

Esempio: incasso_concessionaria(C, I)→ restituisce 4022000

Possibile Soluzione 1 Possibile Soluzione 2 <<concessionaria.txt>> Marca X (indice 1) Marca Y (indice 2) Marca Z (indice 3) Segmento A (indice 1) 90 7 2 Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40

C

Eser ciz io 2

function [ incasso_totale ] = incasso_concessionaria(C, I) incasso_totale = sum(sum(C .* I));

end

function [ incasso_totale ] = incasso_concessionaria(C, I) [num_segmenti, num_marche] = size(C);

somma = 0;

for indice_marca = 1:num_marche

somma = somma + sum(C(:, indice_marca) .* I(:, indice_marca)); end

incasso_totale = somma; end

<<incasso_singolare.txt>> Marca X Marca Y Marca Z

Segmento A 10000 18000 21000

Segmento B 14000 19000 22000

Segmento C 16000 24000 24500

(7)

Scrivere una funzione chiamata segmento_piu_redditizio, che prenda come argomenti di input: la matrice C (concessionaria) e la matrice I (incasso_singolare), e restituisca come argomento di output l’indice del segmento che genera incassi massimi

Esempio: segmento_piu_redditizio(C, I)→ restituisce 3

OSSERVAZIONI: Il valore 3 si riferisce al Segmento C (che genera gli incassi massimi, equivalenti, a 1940000) Possibile Soluzione 1

Possibile Soluzione 2

(indice 1) (indice 2) (indice 3) Segmento A (indice 1) 90 7 2 Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40 Eser ciz io 3

function [ indice_segmento ] = segmento_piu_redditizio(C, I)

[valore_massimo_segmento, indice_segmento] = max(sum(C .* I, 2)); end

function [ indice_segmento ] = segmento_piu_redditizio(C, I)

[num_segmenti, num_marche] = size(C);

for indice_segmento = 1:num_segmenti

somme_righe(indice_segmento) = sum(C(indice_segmento, :) .* I(indice_segmento, :)); end

[massimo, indice_segmento] = max(somme_righe); end

<<incasso_singolare.txt>> Marca X Marca Y Marca Z

Segmento A 10000 18000 21000

Segmento B 14000 19000 22000

(8)

Scrivere una funzione chiamata incasso_medio_marca, che prenda come argomento di input la matrice I (incasso_singolare) ed un numero intero indice_marca, e restituisca come argomento di output l’incasso medio di vendita di tutte le vetture della marca avente indice indice_marca

Esempio: incasso_medio_marca(I, 1) → restituisce 13333.3

Possibile Soluzione <<concessionaria.txt>> Marca X (indice 1) Marca Y (indice 2) Marca Z (indice 3) Segmento A (indice 1) 90 7 2 Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40

C

Eser ciz io 4

<<incasso_singolare.txt>> Marca X Marca Y Marca Z

Segmento A 10000 18000 21000

Segmento B 14000 19000 22000

Segmento C 16000 24000 24500

function [ incasso_medio ] = incasso_medio_marca(I, indice_marca) incasso_medio = mean(I(:, indice_marca));

end

(9)

Scrivere un M-File Script chiamato concessionaria_script.m che effettui le seguenti operazioni

1. Importi la matrice C dal file concessionaria.txt

2. Importi la matrice I dal file incasso_singolare.txt

3. Invochi la funzione dell’Esercizio 2 (chiamata incasso_concessionaria) con gli argomenti di input: C e I, ed infine mostri a video il risultato della funzione stessa

NOTA: I file concessionaria.txt e incasso_singolare.txt contengono solo dati numerici. È utilizzato il

separatore virgola (,) per separare le colonne (suggerimento: utilizzare la funzioneimportdata). Si assuma che i file siano memorizzati all’interno della Current Directory.

Possibile Soluzione

(indice 1) (indice 2) (indice 3) Segmento A (indice 1) 90 7 2 Segmento B (indice 2) 40 10 12 Segmento C (indice 3) 15 30 40 Eser ciz io 5

<<incasso_singolare.txt>> Marca X Marca Y Marca Z

Segmento A 10000 18000 21000 Segmento B 14000 19000 22000 Segmento C 16000 24000 24500 C = importdata('concessionaria.txt'); I = importdata('incasso_singolare.txt'); incasso_concessionaria(C, I)

Contenuto del file

Riferimenti

Documenti correlati

(descri- zione codicologica ibid., pp. - L'edizione critica è stata curata da Henri Quentin in collaborazione con Hippolyte Delehaye: Acta Sanctorum Novembris. Collecta,

Così ad esempio, alla metà degli anni '90 del secolo scorso, due antropologi di rilievo come Marc Augè e Clifford Geertz, con un background culturale differente,

This paper reviews the major (Calcium, Phosphorus, Potassium, Sodium, Chlorine, Sulphur, Magnesium) and the trace elements (Iron, Copper, Cobalt, Iodine, Manganese, Zync,

Available Open Access on Cadmus, European University Institute Research Repository.... European

Fig.. ste aree della Sardegna le cavità minerarie e le grotte di miniera sono di primaria importanza per molte specie di pipistrelli che trovano rifu- gio nel loro interno. La

In discussing Northanger Abbey it is essential to see that the problems Catherine, the heroine, has in understanding herself and her experience are not different from the problems

Jean Guiguet specifically identifies Virginia Woolf with her six protagonists: She is in love with words, like Bernard: in love with books, like Neville: a lover of action, like

Simona scarsa medio-bassa medio-tardiva rotonda blu scuro Sofia scarsa medio-elevata medio-precoce ovale blu scuro Speranza medio-scarsa media intermedia rotonda