Bonjour,
Tout d'abord merci pour votre réponse.

(rapide qui plus est et bien explicite).
J'ai en effet fait une erreur dans les notations. Je m'en excuse.
Mon problème est que les matrices F1 et F2 sont différente à chaque itération de mon programme. Je ne peux donc pas allez manuellement sous Xcas pour le résoudre à chaque fois.
Je voudrai une solution générique avec les termes de F1 et F2 exprimé sous forme de scalaire.
Les coefficients a_3, a_2, a_1, a_0 obtenu avec coeff(f,lambda,3) devrait me suffire. Meme si comme vous l'avez dit cela n'est pas très digeste
Concernant l'inversibilité de F1 et F2 je viens de regarder et leur determinant sont très proche de 0. Je ne peux donc pas utiliser la solution 2 que vous avez proposé.
Autre question : Pensez vous que je peux parametriser le problème ainsi ? :
Det(F1 +lambda*F2) == a_3*lambda + a_2*lambda + a_1 *lambda +a_0 = 0
Les coefficients a_3,a_2,a_1,a_0 sont alors bcp plus digeste :
Code : Tout sélectionner
f := det( [ [a1,b1,c1] , [d1,e1,f1] , [g1,h1,i1] ] +( lambda * [ [a2,b2,c2] , [d2,e2,f2] , [g2,h2,i2] ] ) );
coeff(f,lambda,3) = e2*i2*a2-e2*g2*c2-i2*b2*d2-f2*h2*a2+f2*b2*g2+h2*d2*c2
coeff(f,lambda,2) = a1*e2*i2-a1*f2*h2+e2*i1*a2-e2*g2*c1-e2*c2*g1+i2*e1*a2-i2*b2*d1-i2*d2*b1-f2*h1*a2+f2*b2*g1+f2*g2*b1-h2*f1*a2+h2*d2*c1+h2*c2*d1-e1*g2*c2-i1*b2*d2+f1*b2*g2+h1*d2*c2
coeff(f,lambda,1) = a1*e2*i1+a1*i2*e1-a1*f2*h1-a1*h2*f1-e2*g1*c1-i2*b1*d1+f2*b1*g1+h2*d1*c1+e1*i1*a2-e1*g2*c1-e1*c2*g1-i1*b2*d1-i1*d2*b1-f1*h1*a2+f1*b2*g1+f1*g2*b1+h1*d2*c1+h1*c2*d1
coeff(f,lambda,0) = a1*e1*i1-a1*f1*h1-e1*g1*c1-i1*b1*d1+f1*b1*g1+h1*d1*c1
//-- J'applique ensuite un "cubic solveur" et le tour est joué.
Ma question est désormais, puise remplacer automatique des membres dans les expressions précédente a_3... a_0 afin d'avoir une notation plus compacte.
Exemple mettre a1 en facteur pour a_1 réduirait la longeur de l'expression. Je pense Xcas dispose de méthode permettant de remplacer un terme par un nouveau ou bien de dire je souhaite factoriser tel terme.
Factor (a_1) ne donne rien, et simplify de a_1 a fait planté Xcas (la première fois).
Merci encore pour votre réponse très instructive.
Note : Je viens de trouvez une personne qui à obtenu les dit facteur pour le problème posé sous Maple :
Det( lambda*F1 + (1-lambda)*F2) == a_3*lambda + a_2*lambda + a_1 *lambda +a_0 = 0
On obtient cet indigeste code :
Code : Tout sélectionner
double a=F1(0,0), j=F2(0,0), aa=a-j,
b=F1(0,1), k=F2(0,1), bb=b-k,
c=F1(0,2), l=F2(0,2), cc=c-l,
d=F1(1,0), m=F2(1,0), dd=d-m,
e=F1(1,1), n=F2(1,1), ee=e-n,
f=F1(1,2), o=F2(1,2), ff=f-o,
g=F1(2,0), p=F2(2,0), gg=g-p,
h=F1(2,1), q=F2(2,1), hh=h-q,
i=F1(2,2), r=F2(2,2), ii=i-r;
double a1=ee*ii-ff*hh, b1=ee*r+ii*n-ff*q-hh*o, c1=r*n-o*q;
double d1=bb*ii-cc*hh, e1=bb*r+ii*k-cc*q-hh*l, f1=r*k-l*q;
double g1=bb*ff-cc*ee, h1=bb*o+ff*k-cc*n-ee*l, i1=o*k-l*n;
float P[4]={0.f,0.f,0.f,0.f};
P[0]=(aa*a1-dd*d1+gg*g1);
P[1]=(aa*b1+a1*j-dd*e1-d1*m+gg*h1+g1*p);
P[2]=(aa*c1+b1*j-dd*f1-e1*m+gg*i1+h1*p);
P[3]=(c1*j-f1*m+i1*p);
Pierre.