<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>