O = vector((0,0,0))
v1 = vector(M.transpose()[0])
v2 = vector(M.transpose()[1])
v3 = vector(M.transpose()[2])
xax = vector([7,0,0])
yax = vector([0,7,0])
zax = vector([0,0,7])
b = vector(b)
p = vector((1,1,1))
G = implicit_plot3d(x+y+z == 100, (x,-6,6), (y, -6,6) , (z, -6,6),frame=False)
G += arrow(O,xax,width=1,color='black')
G += arrow(O,yax,width=1,color='black')
G += arrow(O,zax,width=1,color='black')
G += text3d("x",1.1*xax)
G += text3d("y",1.1*yax)
G += text3d("z",1.1*zax)
G += arrow(O, v1, width=4)
G += arrow(O, v2, width=4, color='yellow')
G += arrow(O, v3, width=4, color='green')
G += arrow(O, v1 + v2, color='orange', width=2)
G += arrow(v1, v1 + v2, color='yellow', width=2)
G += arrow(v1 + v2, v1 + v2 + v3, color='green', width=2)
G += text3d("v₁ + v₂", 1.1*(v1+v2))
G += text3d("b = 1∙v₁ + 1∙v₂ + 1∙v₃", 1.1*(v1 + v2 + v3))
G += text3d("v₁",v1)
G += text3d("v₂",v2)
G += text3d("v₃",v3)
G += arrow(O, v1+v2+v3, color='red',width=4)
G.show(aspect_ratio=[1,1,1])