<html>
  <head>
    <meta http-equiv="content-type" content="text/html;
      charset=windows-1252">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Bonjour,<br>
    <br>
    Pour la compréhension uniquement, j'essaie de comparer une
    résolution analytique de Tartaglia Cardan avec la solution numérique
    de scilab.<br>
    <br>
    Voila le script<br>
    <br>
    //<br>
    //stacksize('max');<br>
    <br>
    Z0=1; <br>
    Z02=1; <br>
    a0=(Z02/Z0)^2;<br>
    <br>
    //Determination du facteur K par resolution analytique
    (Tartaglia-Cardan)<br>
    //Resolution de l equation K^3 + K -a0 = 0 avec a0=(Z02/Z0)^2<br>
    <br>
    //determinant auxiliaire de l equation X2 -a0X -1/27 =0<br>
    delta_aux=(-a0)^2  + (4/27)*(1)^3;<br>
    //delta_aux est toujours positif<br>
    <br>
    //racines auxiliaires<br>
    X1=(1/2)*(+a0+sqrt(delta_aux) );<br>
    X2=(1/2)*(+a0-sqrt(delta_aux) );<br>
    <br>
    //Calcul des variables auxiliaires<br>
    u=(X1)^(1/3);<br>
    v=(X2)^(1/3);<br>
    <br>
    v=-v*exp(-%i*atan(imag(v)/real(v)));  //choix de la solution reelle
    car scilab ne previent pas !!<br>
    <br>
    u_1=u;<br>
    u_2=u*( cos(2*%pi/3)+%i*sin(2*%pi/3) );<br>
    u_3=u*( cos(-2*%pi/3) +%i*sin(-2*%pi/3) );<br>
    <br>
    v_1=v;<br>
    v_2=v*( cos(2*%pi/3)+%i*sin(2*%pi/3) );<br>
    v_3=v*( cos(-2*%pi/3) +%i*sin(-2*%pi/3) );<br>
    <br>
    u_anal=[u_1,u_2,u_3];<br>
    v_anal=[v_1,v_2,v_3];<br>
    <br>
    uv_anal=u_anal.*.v_anal';<br>
    <br>
    indice_anal=find(real(uv_anal+(1/3)*ones(3,3)) <10^(-5) );<br>
    <br>
    col_u_anal=ceil(indice_anal./(3*ones(1,size(indice_anal)(2))));<br>
    <br>
    modulo_v_anal=modulo(indice_anal,size(uv_anal,2) );<br>
    <br>
    for j=1:1:size(uv_anal,2)<br>
        if modulo_v_anal(j)==0 then<br>
            modulo_v_anal(j)=3;<br>
    end<br>
    end;<br>
    for j=1:1:size(uv_anal,2)<br>
        u_anal(j)=u_anal(col_u_anal(j))<br>
        v_anal(j)=v_anal(modulo_v_anal(j))<br>
    end;<br>
    <br>
    K_sol_anal=u_anal+v_anal;<br>
    <br>
    //determination de K par methode numerique<br>
    <br>
    vect_pol=[-a0,1,0,1];<br>
    polyno=poly(vect_pol,'X','coeff');<br>
    K_sol_num=roots(polyno);<br>
    <br>
    *********************************************<br>
    <br>
    Evidemment c'est loin d'être optimisé (!) mais surtout j'ai du mal à
    décoder les indices du produit tensoriel des solutions u_anal et
    v_anal. Mon algorithme ne fonctionne pas, à mon avis il y a une
    erreur dans les boucles de la fin. <br>
    <br>
    De façon général, comment remonter proprement de la matrice tij = xi
    prod yj <br>
    où prod est le produit tensoriel ???<br>
    <br>
    Merci pour vos avis<br>
    Bien cordialement,<br>
    JLuc<br>
    <br>
    <font color="#999999"><small>-------------------------<br>
        Jean-Luc BABIGEON <br>
        CNRS/Lal/Dacc <br>
        Laboratoire de L'accélérateur Linéaire <br>
        Centre scientifique d'Orsay - Bat 200 - BP 34 <br>
        91898 - Orsay Cedex <br>
        tel 0164468247 ou 8427 -babigeon@lal.in2p3.fr </small></font>
  </body>
</html>