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

classic Classic list List threaded Threaded
12 messages Options
jlb jlb
Reply | Threaded
Open this post in threaded view
|

[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 -[hidden email]

_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
Rafael Guerra Rafael Guerra
Reply | Threaded
Open this post in threaded view
|

Re: produit tensoriel et décodage inverse des indices

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 <[hidden email]> On Behalf Of jlb
Sent: Tuesday, September 11, 2018 10:51 AM
To: [hidden email]
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
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 [hidden email]


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
jlb jlb
Reply | Threaded
Open this post in threaded view
|

Re: produit tensoriel et décodage inverse des indices

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 [hidden email]


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 [hidden email] On Behalf Of jlb
Sent: Tuesday, September 11, 2018 10:51 AM
To: [hidden email]
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
prod est le produit tensoriel ???

Merci pour vos avis
Bien cordialement,
JLuc



_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
Rafael Guerra Rafael Guerra
Reply | Threaded
Open this post in threaded view
|

Re: produit tensoriel et décodage inverse des indices

Bonsoir JLuc,

Pourquoi faire simple quand vous pouvez le rendre compliqué…

La relation entre votre produit tensoriel et l'article Wikipedia fourni n'est pas évidente du tout.

Pourriez-vous être plus explicite sur ce que vous attendez du produit tensoriel?

 

Cordialement,

Rafale


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
jlb jlb
Reply | Threaded
Open this post in threaded view
|

Re: produit tensoriel et décodage inverse des indices

Bonsoir Rafael,

la procédure est d'abord de calculer les racines de l'équation du 2eme degré.

ensuite on prend les racines cubiques. Jusque la ça va, mais ensuite il faut un algorithme de tri pour sélectionner les racines u et v dont le produit est uv= -p/3.

C'est cet algorithme qui complique tout. La solution que j'ai trouvée consiste à calculer tous les produits possibles ui vj, donc un produit tensoriel, puis à isoler ceux qui égalent -p/3.

Vous pouvez constater en sortant le "tenseur" uv_anal, que ces produits, -0.3333... se retrouvent à des endroits arbitraires (qu'ils se trouvent sur la diagonale me semble une coincidence ?). J'ai fait une recherche par division modulo 3, mais il y a eu quelques pièges...

ensuite j'obtiens les produits i, j de telle sorte que Z_sol_anal = ui + vj avec ui vj = -p/3 (=-0.33.. dans ce cas)

C'est pourquoi je recherche une procédure i x j ----> i,j

JLuc



On 09/11/18 17:55, Rafael Guerra wrote:

Bonsoir JLuc,

Pourquoi faire simple quand vous pouvez le rendre compliqué…

La relation entre votre produit tensoriel et l'article Wikipedia fourni n'est pas évidente du tout.

Pourriez-vous être plus explicite sur ce que vous attendez du produit tensoriel?

 

Cordialement,

Rafale



_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
mottelet mottelet
Reply | Threaded
Open this post in threaded view
|

Re: produit tensoriel et décodage inverse des indices

Bonsoir,

Le 11/09/2018 à 18:44, jlb a écrit :

Bonsoir Rafael,

la procédure est d'abord de calculer les racines de l'équation du 2eme degré.

ensuite on prend les racines cubiques. Jusque la ça va, mais ensuite il faut un algorithme de tri pour sélectionner les racines u et v dont le produit est uv= -p/3.

C'est cet algorithme qui complique tout. La solution que j'ai trouvée consiste à calculer tous les produits possibles ui vj, donc un produit tensoriel, puis à isoler ceux qui égalent -p/3.

Vous pouvez constater en sortant le "tenseur" uv_anal, que ces produits, -0.3333... se retrouvent à des endroits arbitraires (qu'ils se trouvent

C'est juste une matrice de rang 1 que l'on peut obtenir comme ça non ?

uv_anal=u_anal'*v_anal;

sur la diagonale me semble une coincidence ?). J'ai fait une recherche par division modulo 3, mais il y a eu quelques pièges...

ensuite j'obtiens les produits i, j de telle sorte que Z_sol_anal = ui + vj avec ui vj = -p/3 (=-0.33.. dans ce cas)

C'est pourquoi je recherche une procédure i x j ----> i,j

[i,j]=find(...)

S.

JLuc



On 09/11/18 17:55, Rafael Guerra wrote:

Bonsoir JLuc,

Pourquoi faire simple quand vous pouvez le rendre compliqué…

La relation entre votre produit tensoriel et l'article Wikipedia fourni n'est pas évidente du tout.

Pourriez-vous être plus explicite sur ce que vous attendez du produit tensoriel?

 

Cordialement,

Rafale



_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr



_______________________________________________
users-fr mailing list
[hidden email]
https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users-fr


-- 
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet
http://www.utc.fr/~mottelet

_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
jlb jlb
Reply | Threaded
Open this post in threaded view
|

Re: produit tensoriel et décodage inverse des indices

Bonsoir Stephane,

Merci, effectivement c'est une matrice de rang 2 (pas 1), et le produit tensoriel coincide avec le produit (extérieur ?) des 2 vecteurs. Je ne m'en souvenais plus. Par contre le problème de décodage me semble entier.

Pour [i,j] le décodage me semble équivalent à ce que j'ai fait, il me faut de toute façon  les lignes supplémentaires du script.

Je sors donc une liste en 1D (indice_anal) par la même instruction find que vous, puis je la décode par division modulo 3.

Pardon pour l'auto documentation inexistante.

JLuc


On 09/11/18 18:46, Stéphane Mottelet wrote:
Bonsoir,

Le 11/09/2018 à 18:44, jlb a écrit :

Bonsoir Rafael,

la procédure est d'abord de calculer les racines de l'équation du 2eme degré.

ensuite on prend les racines cubiques. Jusque la ça va, mais ensuite il faut un algorithme de tri pour sélectionner les racines u et v dont le produit est uv= -p/3.

C'est cet algorithme qui complique tout. La solution que j'ai trouvée consiste à calculer tous les produits possibles ui vj, donc un produit tensoriel, puis à isoler ceux qui égalent -p/3.

Vous pouvez constater en sortant le "tenseur" uv_anal, que ces produits, -0.3333... se retrouvent à des endroits arbitraires (qu'ils se trouvent

C'est juste une matrice de rang 1 que l'on peut obtenir comme ça non ?

uv_anal=u_anal'*v_anal;

sur la diagonale me semble une coincidence ?). J'ai fait une recherche par division modulo 3, mais il y a eu quelques pièges...

ensuite j'obtiens les produits i, j de telle sorte que Z_sol_anal = ui + vj avec ui vj = -p/3 (=-0.33.. dans ce cas)

C'est pourquoi je recherche une procédure i x j ----> i,j

[i,j]=find(...)

S.

JLuc



On 09/11/18 17:55, Rafael Guerra wrote:

Bonsoir JLuc,

Pourquoi faire simple quand vous pouvez le rendre compliqué…

La relation entre votre produit tensoriel et l'article Wikipedia fourni n'est pas évidente du tout.

Pourriez-vous être plus explicite sur ce que vous attendez du produit tensoriel?

 

Cordialement,

Rafale



_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr



_______________________________________________
users-fr mailing list
[hidden email]
https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users-fr


-- 
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet
http://www.utc.fr/~mottelet


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
mottelet mottelet
Reply | Threaded
Open this post in threaded view
|

Re: produit tensoriel et décodage inverse des indices



Le 11 sept. 2018 à 19:42, jlb <[hidden email]> a écrit :

Bonsoir Stephane,

Merci, effectivement c'est une matrice de rang 2 (pas 1),


Le rang d’une matrice est le nombre de colonnes (ou lignes) linéairement indépendantes. Ici toutes les lignes sont colinéaires, donc la matrice est de rang 1 !

S.

et le produit tensoriel coincide avec le produit (extérieur ?)

Non. C’est juste un produit vecteur colonne x vecteur ligne, donc un produit matriciel de base.

des 2 vecteurs. Je ne m'en souvenais plus. Par contre le problème de décodage me semble entier.

Pour [i,j] le décodage me semble équivalent à ce que j'ai fait, il me faut de toute façon  les lignes supplémentaires du script.

Je sors donc une liste en 1D (indice_anal) par la même instruction find que vous, puis je la décode par division modulo 3.

Pardon pour l'auto documentation inexistante.

JLuc


On 09/11/18 18:46, Stéphane Mottelet wrote:
Bonsoir,

Le 11/09/2018 à 18:44, jlb a écrit :

Bonsoir Rafael,

la procédure est d'abord de calculer les racines de l'équation du 2eme degré.

ensuite on prend les racines cubiques. Jusque la ça va, mais ensuite il faut un algorithme de tri pour sélectionner les racines u et v dont le produit est uv= -p/3.

C'est cet algorithme qui complique tout. La solution que j'ai trouvée consiste à calculer tous les produits possibles ui vj, donc un produit tensoriel, puis à isoler ceux qui égalent -p/3.

Vous pouvez constater en sortant le "tenseur" uv_anal, que ces produits, -0.3333... se retrouvent à des endroits arbitraires (qu'ils se trouvent

C'est juste une matrice de rang 1 que l'on peut obtenir comme ça non ?

uv_anal=u_anal'*v_anal;

sur la diagonale me semble une coincidence ?). J'ai fait une recherche par division modulo 3, mais il y a eu quelques pièges...

ensuite j'obtiens les produits i, j de telle sorte que Z_sol_anal = ui + vj avec ui vj = -p/3 (=-0.33.. dans ce cas)

C'est pourquoi je recherche une procédure i x j ----> i,j

[i,j]=find(...)

S.

JLuc



On 09/11/18 17:55, Rafael Guerra wrote:

Bonsoir JLuc,

Pourquoi faire simple quand vous pouvez le rendre compliqué…

La relation entre votre produit tensoriel et l'article Wikipedia fourni n'est pas évidente du tout.

Pourriez-vous être plus explicite sur ce que vous attendez du produit tensoriel?

 

Cordialement,

Rafale



_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr



_______________________________________________
users-fr mailing list
[hidden email]
https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users-fr


-- 
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet
http://www.utc.fr/~mottelet


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
mottelet mottelet
Reply | Threaded
Open this post in threaded view
|

Re: produit tensoriel et décodage inverse des indices

In reply to this post by jlb

Bonsoir,

Tu n'as pas besoin de faire si compliqué. Voilà ce que je te propose, avec quelques commentaires

//Calcul des variables auxiliaires
u=sign(X1)*(abs(X1))^(1/3);
v=sign(X2)*(abs(X2))^(1/3);

u_anal=u*[1 exp(-2*%i*%pi/3) exp(2*%i*%pi/3)];
v_anal=v*[1 exp(2*%i*%pi/3) exp(-2*%i*%pi/3)];

K_sol_anal=u_anal+v_anal;

vect_pol=[-a0,1,0,1];
polyno=poly(vect_pol,'X','coeff');
K_sol_num=roots(polyno)

-Pour le calcul de u et v, attention à l'écriture x^y avec y non entier et x un nombre complexe. Dans Scilab cela te donnera toujours

abs(x)^y*exp(%i*atan(imag(x),real(x))*y)

Si tu veux la fonction racine cubique appliquée à x un nombre réel, éventuellement négatif, il faut faire comme ça dans Scilab

sign(x)*abs(x)^(1/3)

-Dans u_anal et v_anal l'ordre des racines est arbitraire, donc tu peux le choisir de manière à ce qu'elles donnent le bon produit directement

S.


Le 11/09/2018 à 19:42, jlb a écrit :

Bonsoir Stephane,

Merci, effectivement c'est une matrice de rang 2 (pas 1), et le produit tensoriel coincide avec le produit (extérieur ?) des 2 vecteurs. Je ne m'en souvenais plus. Par contre le problème de décodage me semble entier.

Pour [i,j] le décodage me semble équivalent à ce que j'ai fait, il me faut de toute façon  les lignes supplémentaires du script.

Je sors donc une liste en 1D (indice_anal) par la même instruction find que vous, puis je la décode par division modulo 3.

Pardon pour l'auto documentation inexistante.

JLuc


On 09/11/18 18:46, Stéphane Mottelet wrote:
Bonsoir,

Le 11/09/2018 à 18:44, jlb a écrit :

Bonsoir Rafael,

la procédure est d'abord de calculer les racines de l'équation du 2eme degré.

ensuite on prend les racines cubiques. Jusque la ça va, mais ensuite il faut un algorithme de tri pour sélectionner les racines u et v dont le produit est uv= -p/3.

C'est cet algorithme qui complique tout. La solution que j'ai trouvée consiste à calculer tous les produits possibles ui vj, donc un produit tensoriel, puis à isoler ceux qui égalent -p/3.

Vous pouvez constater en sortant le "tenseur" uv_anal, que ces produits, -0.3333... se retrouvent à des endroits arbitraires (qu'ils se trouvent

C'est juste une matrice de rang 1 que l'on peut obtenir comme ça non ?

uv_anal=u_anal'*v_anal;

sur la diagonale me semble une coincidence ?). J'ai fait une recherche par division modulo 3, mais il y a eu quelques pièges...

ensuite j'obtiens les produits i, j de telle sorte que Z_sol_anal = ui + vj avec ui vj = -p/3 (=-0.33.. dans ce cas)

C'est pourquoi je recherche une procédure i x j ----> i,j

[i,j]=find(...)

S.

JLuc



On 09/11/18 17:55, Rafael Guerra wrote:

Bonsoir JLuc,

Pourquoi faire simple quand vous pouvez le rendre compliqué…

La relation entre votre produit tensoriel et l'article Wikipedia fourni n'est pas évidente du tout.

Pourriez-vous être plus explicite sur ce que vous attendez du produit tensoriel?

 

Cordialement,

Rafale



_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr



_______________________________________________
users-fr mailing list
[hidden email]
https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users-fr


-- 
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet
http://www.utc.fr/~mottelet


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr



_______________________________________________
users-fr mailing list
[hidden email]
https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users-fr


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
Rafael Guerra Rafael Guerra
Reply | Threaded
Open this post in threaded view
|

Re: produit tensoriel et décodage inverse des indices

Stéphane :  le rasoir d'Occam ne couperait pas mieux …

J

 


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
mottelet mottelet
Reply | Threaded
Open this post in threaded view
|

Re: produit tensoriel et décodage inverse des indices

Le 12/09/2018 à 17:10, Rafael Guerra a écrit :

Stéphane :  le rasoir d'Occam ne couperait pas mieux …

J

Mhh, je ne suis pas certain d'avoir vraiment gratté jusqu'à l'os :-D

 



_______________________________________________
users-fr mailing list
[hidden email]
https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users-fr


-- 
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet

_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr
jlb jlb
Reply | Threaded
Open this post in threaded view
|

Re: produit tensoriel et décodage inverse des indices

Bonjour à Stephane, Rafael,

Merci, naturellement le produit tensoriel des 2 vecteurs est de rang 1 dans tous les cas de l'équation de Tartaglia-Cardan,. La simplification s'impose donc. Par ailleur j'avais bien noté -et utilisé moi même- la version numérique, donc 3 lignes de code environ.

Merci à vous deux pour vos indications qui m'ont guidées dans mon problème.

Ma question initiale était plus générale, orientée vers le décodage d'un produit tensoriel (ou Kronecker uniquement sous scilab), mais cela n'a pas d'intérêt pour mon application. Si j'ai le temps, je la formulerai differemment.

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 -[hidden email]



On 09/12/18 17:14, Stéphane Mottelet wrote:
Le 12/09/2018 à 17:10, Rafael Guerra a écrit :

Stéphane :  le rasoir d'Occam ne couperait pas mieux …

J

Mhh, je ne suis pas certain d'avoir vraiment gratté jusqu'à l'os :-D

 



_______________________________________________
users-fr mailing list
[hidden email]
https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users-fr


-- 
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr


_______________________________________________
users-fr mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users-fr