Esercizio 1 (*)

Visualizzare, senza ricorrere al procedimento di copia-e-incolla, le seguenti espressioni

(1/(1 + (1/(1 + (1/(1 + (1/(1 + (1/2)))))))))

(∑_(x = 0)^(+∞))((γ^x)/(x!))

(∑_(n = 1)^(+∞))(x^(n - 1))

(∏_(i = 1)^n) (i/(i + 1))

∫(t^(n - 
              1)) (E^(-t )) \[DifferentialD]t

(∫_0^∞) 
            (1/π) (E^(((-1)/π) x)) \[DifferentialD]x

valutatele poi ad una ad una, discutendo i risultati ottenuti.

Esercizio 2 (*)

Inserire in altrettante celle le espressioni del precedente esercizio, ricorrendo però a una codifica puramente testuale. Verificare che il processo di valutazione di queste celle porti allo stesso risultato del precedente esercizio.

Esercizio 3 (*)

Considerare le seguenti celle, in cui tutte le variabili a cui non è esplicitamente assegnato un valore devono intendersi come simboli. Per ognuna di esse e senza utilizzare Mathematica, indicare, motivando la risposta, quale sia l'output corrispondente. Verificare successivamente la correttezza delle risposte date valutando tutte le celle.

Sum[e, {i, 1, 10}]

Sum[a^i, {i, 0, Infinity}]

Product[e, {i, 1, 10}]

Product[E, {i, 1, 10}]

Esercizio 4 (*)

Inserire in altrettante celle le espressioni del precedente esercizio, ricorrendo però alla notazione matematica tradizionale. Verificate che il processo di valutazione di queste celle porti allo stesso risultato del precedente esercizio.

Esercizio 5 (*)

Qual è l'esito dell'applicazione delle seguenti sostituzioni?

a + b^2 + b c /. b -> 1/Pi

a + b^2 + b c /. {b -> 1/Pi, c -> Pi}

1/x + 2^b + 2^3  /.  2^_ -> 0

1/x + b^2 + 1/b  /. b^_ -> 0

1/x + b^2 + 2^3  /. {b^n_ -> n^b}

{1, 2, 3, 4} /. n__ -> {n, n}

Esercizio 6 (**)

Verificare, tramite l'aiuto della funzione FullForm, quale sia la forma nella quale vengono memorizzate internamente le seguenti espressioni:

a^b
(a^b)
(∫_a^(+∞))f[
          x] \[DifferentialD]x
a - a
(x/(2^(x - 1)))

Commentare i risultati ottenuti.

Esercizio 7 (***)

Calcolare la centesima cifra decimale di π

soluzione

Floor[N[Pi, 100]*10^100] - Floor[N[Pi, 99]*10^99]*10

Esercizio 8 (**)

Leggere, nella documentazione in linea, la descrizione del package Miscellaneous`WorldPlot`. Utilizzare le funzioni in esso definite per generare la mappa dell'Europa (sia nella versione che include la Russia che nella versione che la esclude).

soluzione

<< Miscellaneous`WorldPlot`;
WorldPlot[Europe];

WorldPlot[Complement[Europe, {"Russia"}]];

Esercizio 9 (**)

Considerare le seguenti celle, in cui tutte le variabili a cui non è esplicitamente assegnato un valore devono intendersi come simboli. Per ognuna di esse e senza utilizzare Mathematica, indicare, motivando la risposta, quale sia l'output corrispondente. Verificare successivamente la correttezza delle risposte date valutando tutte le celle.

Sum[e, {i, 1, 10}]

Sum[a^i, {i, 0, Infinity}]

Product[e, {i, 1, 10}]

Product[E, {i, 1, 10}]

Product[a^i, {i, 0, n}]

Esercizio 10 (**)

Verificare come tramite Mathematica si possa semplificare la sommatoria corrispondente al binomio di Newton:

(∑_(i = 0)^n)(({{n}, {i}}))(a^i)(b^(n - i))=(((a + b))^n)

Esercizio 11 (**)

Si consideri la funzione Gamma, che ritorna il valore Γ(z) dell'integrale

(∫_0^(+∞))(e^(-t)) (t^(z - 
              1)) dt

in funzione del valore z, e per cui è dimostrabile tramite il procedimento di integrazione per parti che Γ(n + 1) = 
        n Γ(n). Pertanto Γ(n + 1) = n ! quando n è un intero positivo. Verificare come tramite Mathematica si possa semplificare, nei casi opportuni, l'espressione corrispondente a Γ(n + 1).

Esercizio 12 (*)

Risolvere l'equazione (x^5) - x + 1 = 0.

Esercizio 13 (*)

Determinare quali sono le radici quinte di 1 e di -1

Esercizio 14 (*)

Calcolare l'integrale

(∫_0^1)sin(x)d x

Esercizio 15 (*)

Verificare che la funzione

(1/((Sqrt[2  π]) σ)) 
      (e^(((-1)/(2  (σ^2))) (((x - μ))^2)))

descrive, per opportuni valori di μ e σ, una densità di probabilità. Verificare che lo stesso vale per tutti i valori μ∈ℝ e σ>0.

Esercizio 16 (**)

Verificare che l'integrale dell'esercizio 11 viene effettivamente espresso utilizzando la funzione Gamma.

soluzione

Integrate[(E^(-t)) (t^(z - 1)), {t, 0, Infinity}]

Integrate[(E^(-t)) (t^(z - 1)), {t, 0, Infinity}, 
      Assumptions ->  z > 0]

Esercizio 17 (*)

Descrivere il comportamento delle seguenti funzioni

f[x] = x^2

g[x_] := x^2

h[x_?RealQ] := x^2

l[x_] := -x^2 /; x < 0

m[x_^y_] := y ^x

n[f_[x]] := f[x]^2

n[f_[x_]] := f[x]^2

Esercizio 18 (**)

Visualizzare il grafico di un periodo della funzione sin x, evidenziando sugli assi cartesiani solo i valori in cui tale funzione assume dei valori significativi.

Esercizio 19 (*)

Definire una funzione senoAllaEnne che accetta due argomenti: il primo rappresenta un valore reale, il secondo un valore intero. La funzione deve ritornare il seno del primo argomento elevato al valore del secondo argomento. Visualizzare il grafico della funzione per valori significativi del secondo argomento.

Esercizio 20 (**)

Scrivere una funzione cifraDiPi che accetta un argomento intero e ritorna la corrispondente cifra decimale di π

soluzione

cifraDiPi[n_] := 
      Floor[N[Pi, n]*10^n] - Floor[N[Pi, n - 1]*10^(n - 1)]*10

cifraDiPi[n_] := 
      Floor[N[Pi, n]*10^n] - Floor[N[Pi, n - 1]*10^(n - 1)]*10

Esercizio 21 (**)

Determinare e visualizzare la tangente della funzione cos x nel punto x = π/4.

soluzione

grCurva = 
        Plot[Cos[x], {x, 0, 2  Pi}, Ticks -> {{Pi/4}, {Cos[Pi/4]}}, 
          DisplayFunction -> Identity];
slope = D[Cos[x], x] /. x -> Pi/4;
intercept = Cos[Pi/4] - slope Pi/4;
grTangente = 
        Plot[slope x + intercept, {x, 0, 2  Pi}, 
          DisplayFunction -> Identity];
Show[grCurva, grTangente, 
        DisplayFunction -> $DisplayFunction];

Esercizio 22 (**)

Estendere l'esercizio 21 a una generica funzione f e a un generico punto (Subscript[x, 0]).

soluzione

f[x_] := Cos[x];
x0 = Pi/4;
grCurva = 
        Plot[f[x], {x, 0, 2  Pi}, Ticks -> {{x0}, {f[x0]}}, 
          DisplayFunction -> Identity];
slope = D[f[x], x] /. x -> x0;
intercept = f[x0] - slope x0;
grTangente = 
        Plot[slope x + intercept, {x, 0, 2  Pi}, 
          DisplayFunction -> Identity];
Show[grCurva, grTangente, 
        DisplayFunction -> $DisplayFunction];

Esercizio 23 (***)

Estendere l'esercizio 22 costruendo una funzione che, avendo come argomento la funzione f e il punto (Subscript[x, 0]), ritorna il grafico corrispondente.

soluzione

graficoTangente[f_, x0_] := 
      Block[{grCurva, slope, intercept, 
          grTangente}, 
grCurva = 
          Plot[f[x], {x, 0, 2  Pi}, Ticks -> {{x0}, {f[x0]}}, 
            DisplayFunction -> Identity]; 
slope = 
          D[f[x], x] /. x -> x0; 
intercept = 
          f[x0] - slope x0; 
grTangente = 
          Plot[slope x + intercept, {x, 0, 2  Pi}, 
            DisplayFunction -> Identity]; 
Show[
          grCurva, grTangente, 
          DisplayFunction -> $DisplayFunction]
]
graficoTangente[Sin, 1];

Esercizio 24 (***)

Estendere l'esercizio 23 in modo da generare un'animazione che mostra, per una fissata funzione f, come varia il grafico della tangente al variare del punto (Subscript[x, 0]).

soluzione

graficoTangente[f_, x0_] := 
      Block[{grCurva, slope, intercept, 
          grTangente}, 
grCurva = 
          Plot[f[x], {x, 0, 2  Pi}, Ticks -> {{x0}, {f[x0]}}, 
            DisplayFunction -> Identity]; 
slope = 
          D[f[x], x] /. x -> x0; 
intercept = 
          f[x0] - slope x0; 
grTangente = 
          Plot[slope x + intercept, {x, 0, 2  Pi}, 
            DisplayFunction -> Identity]; 
Show[
          grCurva, grTangente, 
          DisplayFunction -> $DisplayFunction]
]
Table[
        graficoTangente[Cos, i], {i, Pi/10, 2  Pi, Pi/10}];

Esercizio 25 (**)

Migliorate l'animazione dell'esercizio 24 utilizzando opportune opzioni di Plot.

soluzione

graficoTangente[f_, x0_] := 
      Block[{grCurva, slope, intercept, 
          grTangente}, 
grCurva = 
          Plot[f[x], {x, 0, 2  Pi}, Ticks -> {{x0}, None}, 
            DisplayFunction -> Identity, 
            PlotRange -> {-1.5, 1.5}]; 
slope = 
          D[f[x], x] /. x -> x0; 
intercept = 
          f[x0] - slope x0; 
grTangente = 
          Plot[slope x + intercept, {x, 0, 2  Pi}, 
            DisplayFunction -> Identity]; 
Show[
          grCurva, grTangente, 
          DisplayFunction -> $DisplayFunction]
]
Table[
        graficoTangente[Cos, i], {i, Pi/25, 2  Pi, Pi/25}];

Esercizio 26 (**)

Cosa computano le seguenti funzioni pure?

# &

# - # &

3 &

#^3 - 2  #^2 + # - 4 &

#  Log[#] &

StringReverse[#] &

Esercizio 27 (***)

Utilizzando la funzione cifraDiPi costruita all'esercizio 20, disegnare un grafico che visualizzi la frequenza delle cifre da 0 a 9 nell'espansione di π a 100 cifre decimali.

soluzione

cifraDiPi[n_] := 
      Floor[N[Pi, n]*10^n] - 
        Floor[N[Pi, n - 1]*10^(n - 1)]*10
m = 100;
cifre = Table[cifraDiPi[n], {n, 0, m}];
ListPlot[Table[{i, Count[cifre, i]/m}, {i, 0, 9}], 
        PlotJoined -> True, PlotRange -> {0, 1}];

Esercizio 28 (**)

Risolvere il problema di Cauchy

(y^((3))) (x) + y (x) = 0
y (0) = 0
y' (0) = 1
y'' (0) = 2

e visualizzare il grafico della soluzione nell'intervallo (-2 π, 3  π).

soluzione

soluz = 
      y[x] /. DSolve[y'''[x] == -y[x], y[x], 
            x][[1]]

sol[xx_] := soluz /. {x -> xx}

eqn = 
      Table[(Evaluate[D[sol[x], {x, i}]] /. x -> 0) == i, {i, 
          0, 2}]

contorno = Solve[eqn, {C[1], C[2], C[3]}]

theSol = sol[x] /. contorno[[1]]

Plot[theSol, {x, -2 Pi, 3  Pi}, 
        Ticks -> {Table[i, {i, -2 Pi, 3  Pi, Pi}], 
            Automatic}];

Esercizio 29 (**)

Determinare il minimo della funzione cos x  -  sin x nell'intervallo (0, 2  π).

soluzione

Plot[Cos[x] - Sin[x], {x, 0, 2  Pi}];

Minimize[Cos[x] - Sin[x], 0 ≤ x ≤ 3  Pi, 
      x]

% // N

Esercizio 30 (**)

Visualizzare un grafico che mostri l'andamento del numero di volte che un fattore appare nella scomposizione in numeri primi di 100! (suggerimento: utilizzare la funzione FactorInteger).

soluzione

ListPlot[FactorInteger[100!], PlotJoined -> True, 
        PlotRange -> All];

data = {{1860, 1.866`, 1.383`}, {1864, 2.214`, 1.805`}, {1868, 
            3.013`, 2.703`}, {1872, 3.597`, 2.834`}, {1876, 4.036`, 
            4.301`}, {1880, 4.454`, 4.445`}, {1884, 4.852`, 4.875`}, {1888, 
            5.44`, 5.54`}, {1892, 5.176`, 5.557`}, {1896, 7.105`, 
            6.503`}, {1900, 7.208`, 6.358`}, {1904, 7.623`, 5.078`}, {1908, 
            7.679`, 6.409`}, {1912, 3.485`, 6.293`}, {1916, 8.538`, 
            9.13`}, {1920, 16.152`, 9.147`}, {1924, 15.725`, 8.387`}, {1928, 
            21.391`, 15.016`}, {1932, 15.762`, 22.822`}, {1936, 16.68`, 
            27.752`}, {1940, 22.305`, 27.244`}, {1944, 22.006`, 
            25.603`}, {1948, 21.969`, 24.106`}, {1952, 33.936`, 
            27.315`}, {1956, 35.575`, 26.033`}, {1960, 34.109`, 
            34.227`}, {1964, 27.177`, 43.127`}, {1968, 31.77`, 
            31.27`}, {1972, 47.17`, 29.17`}, {1976, 39.148`, 40.829`}, {1980, 
            42.797`, 34.434`}};

repdata = Map[Part[#, {1, 2}] &, data];

repdata[[11]][[2]]

Select[repdata, #[[2]] > 10 &]

ListPlot[%];

Sort[repdata]

minSort = 
      Sort[repdata, #1[[2]] ≤ #2[[2]] &]

ListPlot[minSort];

maxSort = 
      Sort[repdata, #1[[2]] ≥ #2[[2]] &]

ListPlot[maxSort];

ListPlot[minSort, PlotJoined -> True];