[Users-fr] produit tensoriel et décodage inverse des indices
Rafael Guerra
jrafaelbguerra at hotmail.com
Mar 11 Sep 11:04:51 CEST 2018
Bonjour,
Avez-vous une référence pour les formules analytiques que vous essayez d'implémenter dans Scilab?
Il me semble que la référence ci-dessous conduit à une implémentation plus simple:
https://www.ias.ac.in/article/fulltext/reso/011/08/0053-0061
Cordialement,
Rafael
From: users-fr <users-fr-bounces at lists.scilab.org> On Behalf Of jlb
Sent: Tuesday, September 11, 2018 10:51 AM
To: users-fr at lists.scilab.org
Subject: [Users-fr] produit tensoriel et décodage inverse des indices
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<mailto:-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/bc301612/attachment.htm>
Plus d'informations sur la liste de diffusion users-fr