Laboratorio di Matematica con SageMathUNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO 3...

Post on 19-Jul-2020

4 views 0 download

Transcript of Laboratorio di Matematica con SageMathUNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO 3...

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNOUNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

Facoltà di Ingegneria - Corso di Laurea triennale in Ingegneria Informatica

Tesi di Laurea in Calcolo e Algebra Lineare

Laboratorio di Matematica con SageMath

Relatore: Prof. Domenico Finco Laureando: Agatino Grillo

Anno Accademico: 2018/19

Roma, 20/11/2019

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

2

Indice

• Introduzione

• Cos’è SageMath?

• Laboratorio SageMath

– Calcolo

– Algebra Lineare

– Metodi matematici

• ConclusioniSpirale di Archimede

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

3

Introduzione

• Scopo della tesi:

– presentare SageMath , un programma software CAS (Computer Algebra System), capace di rappresentare e risolvere espressioni matematiche in forma simbolica e numerica

– usare SageMath per esercitazioni di:

• Calcolo

• Algebra Lineare

• Metodi Matematici

http://www.sagemath.org/

Laboratorio di

Matematica

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

4

• Caratteristiche di SageMath:– gratuito ed open source

– facile da usare• https://sagecell.sagemath.org/

– creato e gestito in primis da docenti e ricercatori universitari• SageDays https://wiki.sagemath.org/Workshops

– interfaccia unica che integra anche altri programmi e pacchetti open source e commerciali

• R,

• Maxima,

• Scypy,

• Numpy,

• Mathematica

• …

Cos’è SageMath?

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

5

var('t')

x(a,t) = 2*a*(1+cos(t))*cos(t)

y(a,t) = 2*a*(1+cos(t))*sin(t)

cardioides = parametric_plot((x(0.5,t), y(0.5,t)),

(t,0,2*pi), color='#8A4B08', legend_label='a=1/2')

cardioides += parametric_plot((x(1,t), y(1,t)),

(t,0,2*pi), color='#B45F04', legend_label='a=1')

cardioides += parametric_plot((x(2,t), y(2,t)),

(t,0,2*pi), color='#FF8000', legend_label='a=2')

cardioides += parametric_plot((x(4,t), y(4,t)),

(t,0,2*pi), color='#FE9A2E', legend_label='a=4')

cardioides.set_legend_options(loc=(1,0.8))

show(cardioides, aspect_ratio=1)

Type some Sage code below and press Evaluate.

Cos’è SageMathFacile da

usare

https://sagecell.sagemath.org/

Equazioni parametriche

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

6

Cos’è SageMath

@interact

def tangent_line(f =

input_box(default=sin(x

)), xbegin =

slider(0,10,1/10,0),

xend =

slider(0,10,1/10,10),

x0 = slider(0, 1,

1/100, 1/2)):

(…)

prange[1])[0]

show(fplot +

tanplot, xmin =

prange[0], xmax =

prange[1], ymax = fmax,

ymin = fmin)

Interattivo

https://bit.ly/2KaA56O /

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

7

print ("l'integrale della

funzione"), sin(log(x)), (" è: ")

show ((sin(log(x))).integral(x))

Cos’è SageMath?

l'integrale della funzione sin(log(x)) è:

f = sin(log(x))

f.integral(x,0,pi)

table([

["il risultato di", r'$\int_{0}^{\pi}

sin(x)$', "è", f.integral(x,0,pi)],])

Tipografico

Latexcompatibile

https://bit.ly/2Q66b7k

https://bit.ly/36UFHfg

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

8

Cos’è SageMath?

8

• algebra, analisi matematica, analisi numerica, calcolo combinatorio, geometria, teoria dei numeri

Teoria dei grafi

Calcolo vettoriale matrici

traiettorie

Analisi

Aree di specializza

zione

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

9

• Esempio tratto dalla classe interattiva di “Calcolo e Algebra Lineare” del 13 novembre 2018

Laboratorio di matematica

show(limit (f, x=1, dir='+'))

Testo esercitazione

Si studi la funzione

tracciandone il grafico

Calcolo

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

10

• Studio di una funzione – approccio metodologico

• Campo di esistenza• Intersezione con gli assi• Studio del segno• Limiti ai bordi del campo di esistenza• Derivata prima• Derivata seconda• Grafico della funzione

Laboratorio di matematicaCalcolo

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

11

Laboratorio di matematicaCalcolo

Testoesercitazione

Imponiamo che il denominatore siadiverso da zero:

CodiceSageMath

solve((abs(3*x-2)-1)== 0, x, to_poly_solve=True)

Risultato [x == (1/3), x == 1]

• Campo di esistenza: si tratta di una funzione fratta per cui il denominatore non può assumere valore zero

1

2

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

12

Laboratorio di matematicaCalcolo

Testoesercitazione

Si deve risolvere:

CodiceSageMath

f=arctan(1)show(f)

Risultato

• Intersezione con gli assi

4,0

41

1arctan

1|2|

0|1|arctan

1|203|

0|102|arctan

1

2

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

13

Laboratorio di matematicaCalcolo

Testoesercitazione

Si deve risolvere:

CodiceSageMath

eq1= (abs(2*x+1)-x) >= 0eq2= x >= -1/2show(solve([eq1,eq2],x))

Risultato

• Studio del segno

01|23|

|12|

x

xx

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

14

Laboratorio di matematicaCalcolo

show(limit (f, x=1, dir='+'))

• Limiti ai bordi del campo di esistenza

Limite per x che tende a 1 di f(x) da destra

f=arctan((abs(2*x+1)-x)/ (abs(3*x-2)-1))show(limit (f, x=1, dir='+'))

Testo Codice SageMath Risultato

Limite per x che tende a 1 di f(x) da sinistra

f=arctan((abs(2*x+1)-x)/ (abs(3*x-2)-1))show(limit (f, x=1, dir=‘-'))

show(limit (f, x=1, dir='+'))

Limite per x che tende a 1/3 di f(x) da destra

f=arctan((abs(2*x+1)-x)/ (abs(3*x-2)-1))show(limit (f, x=1/3, dir='+'))

Limite per x che tende a ∞ di f(x) da destra

f=arctan((abs(2*x+1)-x)/ (abs(3*x-2)-1))show(limit (f, x=+oo))

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

15

Laboratorio di matematicaCalcolo

show(limit (f, x=1, dir='+'))

• Limiti ai bordi del campo di esistenza:

Limite per x che tende a ∞ di f(x) da sinistra

f=arctan((abs(2*x+1)-x)/ (abs(3*x-2)-1))show(limit (f, x=-oo))

Testo Codice SageMath Risultato

abbiamo 2 asintoti orizzontali e nessun asintoto verticale

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

16

Laboratorio di matematicaCalcolo

• Derivata prima

Testoesercitazione

Per calcolare la derivata primaapriamo il modulo

f1=arctan((x+1)/(3*x-3))show(simplify((derivative (f1))))

Codice SageMath Risultato

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

17

Laboratorio di matematicaCalcolo

• Derivata prima

f3=arctan((3*x+1)/(-3*x+1))show(simplify((derivative (f3))))

Codice SageMath Risultato

f2=arctan((x+1)/(-3*x+1))show(simplify((derivative (f2))))

Codice SageMath Risultato

Nella 1° regione la funzione è sempre decrescente, nella 2° regione è sempre crescente, nella 3° sempre decrescente.

1

In x=2/3 e x=1/2 ci sono dei “punti angolosi” cioè la derivata prima ha limiti finiti a destra e sinistra ma diversi tra loro

2

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

18

Laboratorio di matematicaCalcolo

• Derivata seconda

f1=arctan((x+1)/(3*x-3))fp=derivative (f1,x)fpp=derivative (fp,x)show(fpp)

Codice SageMath Risultato

f2=arctan((x+1)/(-3*x+1))fp=derivative (f2,x)fpp=derivative (fp,x)show(fpp)

f3=arctan((3*x+1)/(-3*x+1))fp=derivative (f3,x)fpp=derivative (fp,x)show(fpp)

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

19

Laboratorio di matematicaCalcolo

• Derivata seconda

Fatte le opportune semplificazioni otteniamo:

La derivata seconda è positiva quindi la funzione è convessa per x> 2 e per x compreso tra -1/2 e 0 e ci sono dei flessi per x=-1/2 e x=2/3

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

20

Laboratorio di matematicaCalcolo

• Grafico della funzione

pt1 = point((1/3, 0), rgbcolor='red', pointsize=50, faceted=True)tex1=text("(1/3, 0)", (1/3, 0.1))

(…)

g.show(xmin=-2, xmax=2, ymin=-1.5, ymax=1.5)

Codice SageMath Risultato

https://bit.ly/2q2Mbb3

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

21

Laboratorio di matematicaAlgebraLineare

• Fonte: “aula virtuale n. 50.4 Diagonalizzazione di Matrici”

show(limit (f, x=1, dir='+'))

Data la matrice

Se ne discuta la diagonalizzabilità e se ne determino autovalori e autovettori

A=matrix(2,2,[3,4,4,3])show(A)

Testo Codice SageMath Risultato

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

x^2 - 6*x – 7

22

Laboratorio di matematicaAlgebraLineare

show(limit (f, x=1, dir='+'))

Costruisco la matrice

Calcolo il determinante della nuova matrice

cioè il polinomio caratteristico è

Le radici del polinomio caratteristico sono:

A=matrix(2,2,[3,4,4,3])

A.characteristic_polynomial()

Testo Codice SageMath Risultato

x^2 - 6*x – 7

e

A.eigenvalues() x^2 - 6*x – 7[7, -1]

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

23

Laboratorio di matematicaAlgebraLineare

e

x^2 - 6*x – 7## In SageMath posso calcolare ## immediatamente gli autovettori## (eigenvectors in inglese)

show(A.eigenvectors_right())

Codice SageMath Risultato

che indica che in corrispondenza dell’autovalore 7 abbiamo l’autovettore (1,1) di molteplicità 1 e che in corrispondenza dell’autovalore -1 abbiamo l’autovettore (1,-1) di molteplicità 1

1

Quindi abbiamo una base di auto vettori e la matrice è diagonalizzabile e con questa base la matrice diventa 2

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

24

Laboratorio di matematicaMetodi

Matematici

• Fonte: aula virtuale di “Metodi matematici” di gennaio 2017

show(limit (f, x=1, dir='+'))

Data la funzione

Valutare massimi e minimi assoluti e relativi all’interno di un dominio scelto ecioè il dominio A formato da

mentre la è definita su tutto

Testo esercitazione

𝑓 𝑥, 𝑦

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

25

• Massimi e minimi di 2 variabili – approccio metodologico

• Calcolo del gradiente• Calcolo dei punti stazionari• Calcolo della matrice Hessiana • Studio del segno delle matrici Hf

Laboratorio di matematicaMetodi

Matematici

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

26

Laboratorio di matematica

1. Calcolo del gradiente

Calcoliamo il gradiente della funzione cioè le 2 derivate parziali prime rispetto a x

e y che poi poniamo uguale a 0 per calcolare le soluzioni del sistema.

SageMath permette di calcolare direttamente il gradiente di una funzione di 2 variabilicon il comando gradient

var('y')f(x,y)=x^2+y^2-(x+y)show(f.gradient());

Codice SageMath Risultato

Metodi Matematici

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

27

Laboratorio di matematica

2. Calcolo dei punti stazionari

Calcoliamo i punti che annullano il gradiente per ottenere i punti stazionari imponendo lacondizione:

var ('x','y')eq1= 2*x - 1eq2= 2*y -1show(solve([eq1,eq2],x,y))

Codice SageMath Risultato

che equivale a risolvere il sistema di 2 equazioni in 2 incognite

Il risultato è che il punto in cui il gradiente si annulla è

Metodi Matematici

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

28

Laboratorio di matematica3. Calcolo della matrice Hessiana

Calcoliamo la matrice Hessiana di f Hf definita come la matrice delle derivate parziali secondedi f

var('y')f(x,y)=x^2+y^2-(x+y)show(f.hessian())

Codice SageMath Risultato

Il risultato è che il punto in cui il gradiente si annulla è

Metodi Matematici

dove indica la derivata parziale rispetto a ydella derivata parziale rispetto a x

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

4

29

Laboratorio di matematica4. Studio del segno delle matrici Hf

Calcoliamo il determinante della matrice Hessiana e il segno della stessa matrice

var('y')#f(x,y)=3*sin(x)-2*cos(y)-x*yf(x,y)=x^2+y^2-(x+y)#show(f.gradient()); show(det(f.hessian()))#f.diff(x,y)

Codice SageMath Risultato

Calcolo il determinante hessiano nel punto (1/2, 1/2)

Metodi Matematici

f(x,y)=x^2+y^2-(x+y)H = f.hessian()H(x,y)det(H)

Codice SageMath Risultato

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

Laboratorio di matematica

Il determinate è positivo e il 1° elemento a sinistra della matrice è anch’esso positivo

quindi (1/2,1/2) è un punto di minimo relativo.

Nel dominio dato la funzione è sempre differenziabile. Il contorno si può

rappresentare con i seguenti segmenti

Metodi Matematici

Su ogni segmento studiamo il comportamento dei massimi e dei minimi. Ad esempio per il segmento S1 si procede come segue. Se “fisso” la x e studio la y, la funzione da studiare è

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

31

Laboratorio di matematicaOttengo minimo in y=1/2 e massimo in y=-1

plot(x^2-x)

Codice SageMath Risultato

Metodi Matematici

I valori che assume questa funzione sono:minimo m1=-1/4massimo M1=2

Procedo analogamente per gli altri segmenti

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

32

Laboratorio di matematica

var('x','y')f(x,y)=x^2+y^2-(x+y)plot3d(f(x,y),(x,-1,1),(y,-1,1))

Codice SageMath Risultato

Metodi Matematici

Il minimo assoluto sul contorno è assunto su (1,1/2),(1/2,1) e vale: -1/2

Disegno il grafico della funzione:

https://bit.ly/2Q62oaf

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

33

Conclusioni

• Perché un laboratorio di matematica?

• Perché SageMath?

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

34

Conclusioni

• Perché un laboratorio di matematica?

• facilita il “learning by doing”

• “manipolare” limiti, integrali e derivate rafforza l’efficacia dell’insegnamento

• evita lo studio puramente mnemonico

• limita il rischio che lo studente si trasformi in un semplice “risolutore meccanico di problemi”.

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

35

Conclusioni

• Perché SageMath?

• gratuito, integrazione di terze parti, diffusione, completezza, gratuità, supporto accademico

• mette inoltre un ambiente di ricerca virtuale -basato anche su prodotti terzi open source e commerciali - che permette di gestire in maniera integrata l’intero ciclo di vita di un progetto di ricerca di matematica

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

36

Conclusioni

• Perché SageMath?

• CoCal è la versione cloud di SageMath con funzionalità aggiuntive

• la versione “base” di CoCalc è gratuita ma è possibile avere una serie di servizi aggiuntivi –principalmente in termini di affidabilità e velocità del servizio – pagando un canone

https://cocalc.com/

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

37

Conclusioni

• Perché SageMath?

• CoCalc può essere usato dai docenti per erogare corsi online e verificare come gli studenti rispondono alle esercitazioni e prove previste

• il principale vantaggio rispetto a SageMathCell è la possibilità di condividere in tempo reale il codice e la documentazione con altri utilizzatori nonché la gestione tecnica centralizzata dell’intero ambiente tecnologico in maniera trasparente

UNIVERSITÀ TELEMATICA INTERNAZIONALE UNINETTUNO

38

Corsi online basati su SageMath/CoCalc

• Math 241 - Calculus 1 Lab

• Math 242 - Calculus 2 Lab

• Introduction to Data Science, 2019 - A Computational, Mathematical and Statistical Approach

• Math 157 - Intro to Mathematical Software

• GCB 535 - Introduction to Bioinformatics