Définition 3.2.1. Cohérence d’un système d’équations linéaires.
Un système d’équations linéaires pour lequel il existe une ou plusieurs solutions est dit compatible, cohérent. Si aucune solution n’existe, le système est dit incompatible, incohérent.
rref() ou solve_right(). Toutefois, dans les exemples de la section 3.1, il y avait toujours une solution unique. On regarde maintenant comment se comporte Sage lorsqu’un système n’a aucune ou a une infinité de solutions.
solve_right() produit une erreur. La commande rref() fonctionne, mais il faut réaliser soi-même qu’il n’y a pas de solution en observant le pivot dans la colonne augmentée.
rref() ne donne pas explicitement la solution (c’était le cas aussi pour une solution unique), il faut la déduire de la forme échelonnée. Dans ce cas-ci, on obtient la droitesolve_right() pour le même système.
rref(). La section 5.3 donnera une réponse plus satisfaisante.
---->. Elles indiquent souvent quelle(s) ligne(s) du code cause(nt) un problème.
[provisional cross-reference: thm-delamatriceinverse].
rank qui permet de calculer le rang d’une matrice. Elle s’utilise soit comme rank(A), soit A.rank().
solve_right(), on a vu qu’un système qui n’a aucune solution donne une erreur et qu’un système avec une infinité de solutions n’en donne qu’une. Il est préférable d’utiliser la commande rref() et de déduire la solution de la forme échelonnée réduite, du moins pour le moment. On a aussi vu la commande rank(), qui retourne le rang d’une matrice.A.solve_right(b) pour résoudre un SEL et A.pivots() pour avoir la position des colonnes pivots reconstruire le système à partir de la solution.[provisional cross-reference: sec-ssespfond] donnera la signification du rang dans le contexte des transformations linéaires.
A=matrix([[5,-3,2,7],[3,0,3,-1],[6,2,1,-2],[2,-1,-6,8],[8,-1,0,6]])
b=vector([-3,2,0,-9,-5])
show((A.augment(b,subdivide=True))) #Pour vérifier qu'on a le bon système
show((A.augment(b,subdivide=True)).rref())
A=matrix([[2,-4,-1,3],[1,0,4,1],[1,2,-4,-1],[0,1,7,4],[4,-1,0,7]])
b=vector([-1,-12,5,4,-1])
show((A.augment(b,subdivide=True)))
show((A.augment(b,subdivide=True)).rref())
A=matrix([[3,-5,0,3,-1],[-2,3,-1,4,0],[-3,0,5,1,2]])
b=vector([7,-1,-3])
show((A.augment(b,subdivide=True)))
show((A.augment(b,subdivide=True)).rref())
rank et la proposition 3.2.11 pour déterminer si les systèmes de l’exercice précédent sont compatibles.
A=matrix([[5,-3,2,7],[3,0,3,-1],[6,2,1,-2],[2,-1,-6,8],[8,-1,0,6]])
b=vector([-3,2,0,-9,-5])
show(rank(A)==rank(A.augment(b,subdivide=True))) #si l'on obtient True, cela veut dire que les rangs sont égaux et donc le système est compatible
A=matrix([[2,-4,-1,3],[1,0,4,1],[1,2,-4,-1],[0,1,7,4],[4,-1,0,7]])
b=vector([-1,-12,5,4,-1])
show(rank(A)==rank(A.augment(b,subdivide=True)))
A=matrix([[3,-5,0,3,-1],[-2,3,-1,4,0],[-3,0,5,1,2]])
b=vector([7,-1,-3])
show(rank(A)==rank(A.augment(b,subdivide=True)))
var("a,b,c,d,e,f,x,y")
conique=a*x^2+b*x*y+c*y^2+d*x+e*y+f==0
P1=vector([0,0])
P2=vector([0,-1])
P3=vector([-1,0])
P4=vector([1/3,-2/3])
P5=vector([-1/3,(sqrt(3)-1)/3])
P=[P1,P2,P3,P4,P5]
eq=[]
for p in P:
eq.append(conique.substitute(x=p[0],y=p[1]))
show(solve(eq,[a,b,c,d,e,f]))
conique1=1*x^2+1*x*y+1*y^2+1*x+1*y==0
implicit_plot(conique1,(x,-1,1),(y,-1,1),color="blue")+points(P,color="black",size=30)
var("a,b,c,d,e,f,x,y")
conique=a*x^2+b*x*y+c*y^2+d*x+e*y+f==0
P1=vector([0,2])
P2=vector([2,2])
P3=vector([-2,4])
P4=vector([4,0])
P5=vector([4,4])
P=[P1,P2,P3,P4,P5]
eq=[]
for p in P:
eq.append(conique.substitute(x=p[0],y=p[1]))
show(solve(eq,[a,b,c,d,e,f]))
conique2=-x^2+2*y^2+2*x-8*y+8==0
implicit_plot(conique2,(x,-10,10),(y,-10,10),color="blue")+points(P,color="black",size=30)
var("a,b,c,d,e,f,x,y")
conique=a*x^2+b*x*y+c*y^2+d*x+e*y+f==0
P1=vector([0,0])
P2=vector([3*sqrt(3)/2+9/2,9/2*sqrt(3)-3/2])
P3=vector([sqrt(3)+2,2*sqrt(3)-1])
P4=vector([-1/2*sqrt(3)+1/2,1/2*sqrt(3)+1/2])
P5=vector([-sqrt(3)+2,2*sqrt(3)+1])
P=[P1,P2,P3,P4,P5]
eq=[]
for p in P:
eq.append(conique.substitute(x=p[0],y=p[1]))
show(solve(eq,[a,b,c,d,e,f]))
conique3=-2/3*sqrt(3)*x*y + x^2 + 1/3*y^2 - 2/3*sqrt(3)*y - 2/3*x == 0
implicit_plot(conique3,(x,-8,8),(y,-8,8),color="blue")+points(P,color="black",size=30)
var("a,b,c,d,e,f,x,y")
conique=a*x^2+b*x*y+c*y^2+d*x+e*y+f==0
P1=vector([4,-5])
P2=vector([13,-2])
P3=vector([4,1])
P4=vector([8,3])
P5=vector([8,-7])
P=[P1,P2,P3,P4,P5]
eq=[]
for p in P:
eq.append(conique.substitute(x=p[0],y=p[1]))
show(solve(eq,[a,b,c,d,e,f]))
conique4=x^2+y^2-16*x+4*y+43==0
implicit_plot(conique4,(x,0,16),(y,-10,4),color="blue")+points(P,color="black",size=30)