[Users-fr] produit tensoriel et décodage inverse des indices

jlb babigeon at lal.in2p3.fr
Mar 11 Sep 12:51:07 CEST 2018


Bonjour,

Ma source, tout simplement Wikipedia.

https://fr.wikipedia.org/wiki/M%C3%A9thode_de_Cardan

Merci pour ce très beau texte !

Mon erreur provient probablement de la formule 8 de Cardan dans ce 
texte, où la solution est exprimée en fonction des angles 2PI/3 avec une 
inversion des coefficients.

Je l'avais vérifié sur mes résultats, les parties réelles étaient 
correctes, mais les parties imaginaires non.

Cela dit, le décodage des indices d'un produit tensoriel en indices des 
matrices du produit (donc le passage i*j vers (i,j) est le coeur de ma 
question. Peut-être existe-til une fonction de type matrice dans scilab ?

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>

On 09/11/18 11:04, Rafael Guerra wrote:
>
> 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
>
>
>
> _______________________________________________
> users-fr mailing list
> users-fr at lists.scilab.org
> http://lists.scilab.org/mailman/listinfo/users-fr

-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <https://lists.scilab.org/pipermail/users-fr/attachments/20180911/9b939d84/attachment.htm>


Plus d'informations sur la liste de diffusion users-fr