[Users-fr] produit tensoriel et décodage inverse des indices
jlb
babigeon at lal.in2p3.fr
Mar 11 Sep 09:50:36 CEST 2018
Bonjour,
Pour la compréhension uniquement, j'essaie de comparer une résolution
analytique de Tartaglia Cardan avec la solution numérique de scilab.
Voila le script
//
//stacksize('max');
Z0=1;
Z02=1;
a0=(Z02/Z0)^2;
//Determination du facteur K par resolution analytique (Tartaglia-Cardan)
//Resolution de l equation K^3 + K -a0 = 0 avec a0=(Z02/Z0)^2
//determinant auxiliaire de l equation X2 -a0X -1/27 =0
delta_aux=(-a0)^2 + (4/27)*(1)^3;
//delta_aux est toujours positif
//racines auxiliaires
X1=(1/2)*(+a0+sqrt(delta_aux) );
X2=(1/2)*(+a0-sqrt(delta_aux) );
//Calcul des variables auxiliaires
u=(X1)^(1/3);
v=(X2)^(1/3);
v=-v*exp(-%i*atan(imag(v)/real(v))); //choix de la solution reelle car
scilab ne previent pas !!
u_1=u;
u_2=u*( cos(2*%pi/3)+%i*sin(2*%pi/3) );
u_3=u*( cos(-2*%pi/3) +%i*sin(-2*%pi/3) );
v_1=v;
v_2=v*( cos(2*%pi/3)+%i*sin(2*%pi/3) );
v_3=v*( cos(-2*%pi/3) +%i*sin(-2*%pi/3) );
u_anal=[u_1,u_2,u_3];
v_anal=[v_1,v_2,v_3];
uv_anal=u_anal.*.v_anal';
indice_anal=find(real(uv_anal+(1/3)*ones(3,3)) <10^(-5) );
col_u_anal=ceil(indice_anal./(3*ones(1,size(indice_anal)(2))));
modulo_v_anal=modulo(indice_anal,size(uv_anal,2) );
for j=1:1:size(uv_anal,2)
if modulo_v_anal(j)==0 then
modulo_v_anal(j)=3;
end
end;
for j=1:1:size(uv_anal,2)
u_anal(j)=u_anal(col_u_anal(j))
v_anal(j)=v_anal(modulo_v_anal(j))
end;
K_sol_anal=u_anal+v_anal;
//determination de K par methode numerique
vect_pol=[-a0,1,0,1];
polyno=poly(vect_pol,'X','coeff');
K_sol_num=roots(polyno);
*********************************************
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.
De façon général, comment remonter proprement de la matrice tij = xi
prod yj
où prod est le produit tensoriel ???
Merci pour vos avis
Bien cordialement,
JLuc
-------------------------
Jean-Luc BABIGEON
CNRS/Lal/Dacc
Laboratoire de L'accélérateur Linéaire
Centre scientifique d'Orsay - Bat 200 - BP 34
91898 - Orsay Cedex
tel 0164468247 ou 8427 -babigeon at lal.in2p3.fr
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <https://lists.scilab.org/pipermail/users-fr/attachments/20180911/d7e557e5/attachment.htm>
Plus d'informations sur la liste de diffusion users-fr