Présentation du logiciel de calcul mathématique Sage

Sage (page en français) est un logiciel libre que vous pouvez télécharger gratuitement puis utiliser sur votre ordinateur
La documentation ne manque pas :
- un survol alléchant en anglais ;
- une introduction ;
- un tutoriel ;
- le sagebook ;
- la référence ;
- des résumés dont un bien pratique .

On peut aussi utiliser Sage à distance sur le serveur Sage de Paris Diderot ou sur SageMathCell.
Vous pouvez l'utiliser tout de suite en rentrant les instructions que vous souhaitez (par exemple quelques lignes - peu nombreuses pour ne pas surcharger - extraites des exemples ci-dessous).




Ch. 1. Espaces vectoriels sur K = R ou C
# Mise au point sur la méthode de Gauss sur K=Q (car arrondis sur R)
x,y,z=var('x,y,z'); Sys=[4*x+2*y+z==5,2*x+y+z==4,-2*x-y+2*z==5] # un système
solve(Sys,x,y,z) # solutions de "Sys"
A = matrix(QQ,[[4,2,1],[2,1,1],[-2,-1,2]]); A # matrice en lignes de "Sys"
B = matrix(QQ,[[5],[4],[5]]) # second membre de "Sys" dans Q^3
AB = block_matrix([[A,B]]); AB # matrice augmentée de "Sys"
AB.echelon_form() # réduction par Gauss jusqu'à la matrice échelonnée (unique)
X0 = A.solve_right(B); X0 # une solution particulière de "AX=B"
KerA = A.right_kernel(); KerA # base du noyau de A
A.eigenspaces_right()
ImA = A.column_space(); ImA # base de span([transpose(A)[i] for i in range(3)])

# Exemple du II 1 sur K=Q quand lambda = -1
t = -1
v1 = vector([1,-1,0]); v2 = vector([0,1,-1]); v3 = vector([1,0,t]) # vecteurs
C = transpose(matrix([v1,v2,v3])); C # vecteurs : lignes (sauf produit à droite)
C.echelon_form() # réduction par Gauss jusqu'à la matrice échelonnée (unique)
V = (QQ^3).span([v1,v2]); V # introduction de Vect(v1,v2)
v3 in V # test de l'appartenance de v3 à Vect(v1,v2)

# Exemple du II 2 sur K=Q
A1 = matrix(QQ,[1,1,1]); A1 # une matrice ligne
Pi1 = A1.right_kernel(); Pi1 # Pi1 est le noyau de A1
A2 = matrix(QQ,[1,2,0]); A2 # une matrice ligne
Pi2 = A2.right_kernel(); Pi2 # Pi2 est le noyau de A2
D = Pi1.intersection(Pi2); D # Intersection de Pi1 et Pi2
S = Pi1 + Pi2; S # Somme de Pi1 et Pi2
a1 = Pi1.basis()[0]; b1 = Pi1.basis()[1]; a1, b1 # base de Pi1
a2 = Pi2.basis()[0]; b2 = Pi2.basis()[1]; a2, b2 # base de Pi2
S == (QQ^3).span([a1,a2,b1,b2]) # vérification d'un résultat du cours

Ch. 2. Applications linéaires et matrices sur K = R ou C
# Dernier exemple du I 1
A11 = matrix([[0,1],[1,0]]);
A12 = matrix([[1],[1]]);
A21 = matrix([[2,1]]);
A22 = matrix([[-1]]);
M = block_matrix([[A11,A12],[A21,A22]]);
B11 = matrix([[1,3],[2,4]]);
B21 = matrix([[5,6]]);
N = block_matrix([[B11],[B21]]);
M*N

# Exemple du I 2 et illustration du I 3
A = matrix([[5,4],[6,5]]);
A.inverse() # inverse de A (variante : ~A)
A.rank() # rang de A
A.transpose() # transposée de A

# Exemple du II 2
A = matrix(QQ,[[-4,12,-5],[1,-3,2],[2,-6,1]])
A.transpose().image() # matrice dont les lignes forment une base de l'image
A.echelon_form() # pivot de Gauss pour avoir une "bonne" équation du noyau
A.right_kernel() # matrice dont les lignes forment une base du noyau

Ch. 3. Études locales
# Exemple du II 1
x = var('x')
taylor(1/(1-x),x,0,5) # DL5 de 1/(1-x) en 0

# Exemples du II 2
x = var('x')
taylor(sin(x)*cos(x),x,0,3) # DL3 de sin(x)cos(x) en 0
taylor(exp(cos(x)),x,0,4) # DL4 de exp(cos(x)) en 0
taylor(tan(x),x,0,5) # DL5 de tan(x) en 0

# Exemples du II 3
x = var('x')
taylor(atan(x),x,0,5) # DL5 de arctan(x) en 0

# Tangente utilisée pour le dessin du III
t = var('t'); x = var('x')
M = (1+2*t+t^2,1+t+4*t^2)
[taylor(M[0],t,0,2),taylor(M[1],t,0,2)] # DL2 de M en 0
Courbe = parametric_plot(M,(t,sqrt(0.2)-1,sqrt(2)-1))
D = plot(x/2+1/2,(x,-0.5,2.9))
show(Courbe+D,xmin=-0.5, xmax=3.3, ymin=-0.5, ymax=2.3)

# Asymptote utilisée pour le dessin du III
x = var('x')
f = x/2+1/2+2^(-3/2*x)
h = var('h'); taylor(f.subs(x=1/h),h,0,2) # DL2 de f en +infini
Graphe = plot(f,(x,0.2,2.9))
D = plot(x/2+1/2,(x,-0.5,2.9))
show(Graphe+D,xmin=-0.5, xmax=3.3, ymin=-0.5, ymax=2.3)

Ch. 4. Intégrale de Riemann
# Exemples de la fin du I 2
x = var('x')
integrate((1+x)^2,x,0,1)
integrate(sin(x),x,0,1)

# Exemples du II 1
x = var('x')
integrate(sqrt(1-x^2),x,-1,1)
integrate(sqrt(1-x^2),x)
integrate(ln(x),x)

# Exemples du II 2
x = var('x')
F1(x) = 1/(x^3+1)
F1.partial_fraction(x)
F2(x) = (x^5+x^4+x^2+1)/(x^3-x^2-x+1)
F2.partial_fraction(x)
integrate(F1(x),x)
integrate(F2(x),x)

# Exemples du II 3
x = var('x')
integrate(1/sin(x),x) # Résultat à interpréter !

Ch. 5. Équations différentielles
# Exemple du I 1
y = var('y')
Tangentes = plot_slope_field(y^3,(x,-3.9,4.4),(y,-2.4,2.9))
y = function('y')(x) # y est une fonction de x -> change sens ligne ci-dessus
phi0 = desolve(diff(y,x)==y^3,dvar=y,ics=[0,1]) # solution évaluée
Courbe = plot(1/sqrt(1-2*x),-3.7,0.43) # solution précisée
show(expand(phi0)); show(Tangentes+Courbe)

# Exemple du I 2
y = function('y')(x)
desolve(diff(y,x)==2*y/x+1,dvar=y).expand() # ".expand()" permet de simplifier

# Exemple du II 2
y = function('y')(x)
desolve(diff(y,x,2)-y==e^x,dvar=y)

.
XHTML 1.0 Strict