[Matlab]Création fonction calcul jacobien
Résolu
Newenda
Messages postés
83
Statut
Membre
-
Newenda Messages postés 83 Statut Membre -
Newenda Messages postés 83 Statut Membre -
Bonjour,
Je souhaite crée une fonction qui en sortie me donnera les valeurs de la matrice jacobienne (matrice des dérivées partielles) et où en entrée je lui impose 15 variables (E, X, Y, x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6)
voila ma fonction :
------------------------------------------------------------------------------------------------
function J=jacobi(E, X, Y, x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6)
syms E x1 x2 x3 x4 x5 x6 y1 y2 y3 y4 y5 y6 X Y real
fA1 = log(exp(E)/sqrt((X-x1)^2 + (Y-y1)^2));
fA2 = log(exp(E)/sqrt((X-x2)^2 + (Y-y2)^2));
fA3 = log(exp(E)/sqrt((X-x3)^2 + (Y-y3)^2));
fA4 = log(exp(E)/sqrt((X-x4)^2 + (Y-y4)^2));
fA5 = log(exp(E)/sqrt((X-x5)^2 + (Y-y5)^2));
fA6 = log(exp(E)/sqrt((X-x6)^2 + (Y-y6)^2));
A = jacobian([fA1;fA2;fA3;fA4;fA5;fA6],[E X Y x1 x2 x3 x4 x5 x6 y1 y2 y3 y4 y5 y6]);
J=eval(A);
------------------------------------------------------------------------------------------------
un test du type
------------------------------------------------
mprior = [log(15) 4 13 3 12 7 18 15 19 2 6 12 13 17 2];
F=jacobi(mprior)
------------------------------------------------
me retourne :
************************************
Bref, il me retourne les formules des dérivées partielles et non les valeurs de ceux ci !!
Merci pour votre aide !
Je souhaite crée une fonction qui en sortie me donnera les valeurs de la matrice jacobienne (matrice des dérivées partielles) et où en entrée je lui impose 15 variables (E, X, Y, x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6)
voila ma fonction :
------------------------------------------------------------------------------------------------
function J=jacobi(E, X, Y, x1, x2, x3, x4, x5, x6, y1, y2, y3, y4, y5, y6)
syms E x1 x2 x3 x4 x5 x6 y1 y2 y3 y4 y5 y6 X Y real
fA1 = log(exp(E)/sqrt((X-x1)^2 + (Y-y1)^2));
fA2 = log(exp(E)/sqrt((X-x2)^2 + (Y-y2)^2));
fA3 = log(exp(E)/sqrt((X-x3)^2 + (Y-y3)^2));
fA4 = log(exp(E)/sqrt((X-x4)^2 + (Y-y4)^2));
fA5 = log(exp(E)/sqrt((X-x5)^2 + (Y-y5)^2));
fA6 = log(exp(E)/sqrt((X-x6)^2 + (Y-y6)^2));
A = jacobian([fA1;fA2;fA3;fA4;fA5;fA6],[E X Y x1 x2 x3 x4 x5 x6 y1 y2 y3 y4 y5 y6]);
J=eval(A);
------------------------------------------------------------------------------------------------
un test du type
------------------------------------------------
mprior = [log(15) 4 13 3 12 7 18 15 19 2 6 12 13 17 2];
F=jacobi(mprior)
------------------------------------------------
me retourne :
************************************
[ 1, -1/2/(X^2-2*X*x1+x1^2+Y^2-2*Y*y1+y1^2)*(2*X-2*x1), -1/2/(X^2-2*X*x1+x1^2+Y^2-2*Y*y1+y1^2)*(2*Y-2*y1), -1/2/(X^2-2*X*x1+x1^2+Y^2-2*Y*y1+y1^2)*(-2*X+2*x1), 0, 0, 0, 0, 0, -1/2/(X^2-2*X*x1+x1^2+Y^2-2*Y*y1+y1^2)*(-2*Y+2*y1), 0, 0, 0, 0, 0] [ 1, -1/2/(X^2-2*X*x2+x2^2+Y^2-2*Y*y2+y2^2)*(2*X-2*x2), -1/2/(X^2-2*X*x2+x2^2+Y^2-2*Y*y2+y2^2)*(2*Y-2*y2), 0, -1/2/(X^2-2*X*x2+x2^2+Y^2-2*Y*y2+y2^2)*(-2*X+2*x2), 0, 0, 0, 0, 0, -1/2/(X^2-2*X*x2+x2^2+Y^2-2*Y*y2+y2^2)*(-2*Y+2*y2), 0, 0, 0, 0] [ 1, -1/2/(X^2-2*X*x3+x3^2+Y^2-2*Y*y3+y3^2)*(2*X-2*x3), -1/2/(X^2-2*X*x3+x3^2+Y^2-2*Y*y3+y3^2)*(2*Y-2*y3), 0, 0, -1/2/(X^2-2*X*x3+x3^2+Y^2-2*Y*y3+y3^2)*(-2*X+2*x3), 0, 0, 0, 0, 0, -1/2/(X^2-2*X*x3+x3^2+Y^2-2*Y*y3+y3^2)*(-2*Y+2*y3), 0, 0, 0] [ 1, -1/2/(X^2-2*X*x4+x4^2+Y^2-2*Y*y4+y4^2)*(2*X-2*x4), -1/2/(X^2-2*X*x4+x4^2+Y^2-2*Y*y4+y4^2)*(2*Y-2*y4), 0, 0, 0, -1/2/(X^2-2*X*x4+x4^2+Y^2-2*Y*y4+y4^2)*(-2*X+2*x4), 0, 0, 0, 0, 0, -1/2/(X^2-2*X*x4+x4^2+Y^2-2*Y*y4+y4^2)*(-2*Y+2*y4), 0, 0] [ 1, -1/2/(X^2-2*X*x5+x5^2+Y^2-2*Y*y5+y5^2)*(2*X-2*x5), -1/2/(X^2-2*X*x5+x5^2+Y^2-2*Y*y5+y5^2)*(2*Y-2*y5), 0, 0, 0, 0, -1/2/(X^2-2*X*x5+x5^2+Y^2-2*Y*y5+y5^2)*(-2*X+2*x5), 0, 0, 0, 0, 0, -1/2/(X^2-2*X*x5+x5^2+Y^2-2*Y*y5+y5^2)*(-2*Y+2*y5), 0] [ 1, -1/2/(X^2-2*X*x6+x6^2+Y^2-2*Y*y6+y6^2)*(2*X-2*x6), -1/2/(X^2-2*X*x6+x6^2+Y^2-2*Y*y6+y6^2)*(2*Y-2*y6), 0, 0, 0, 0, 0, -1/2/(X^2-2*X*x6+x6^2+Y^2-2*Y*y6+y6^2)*(-2*X+2*x6), 0, 0, 0, 0, 0, -1/2/(X^2-2*X*x6+x6^2+Y^2-2*Y*y6+y6^2)*(-2*Y+2*y6)]************************************
Bref, il me retourne les formules des dérivées partielles et non les valeurs de ceux ci !!
Merci pour votre aide !
A voir également:
- Jacobienne matlab
- Boucle for matlab - Forum Matlab
- MATLAB: nom de variable dynamique dans boucle - Forum Matlab
- Gnu octave matlab - Télécharger - Édition & Programmation
- Les boucles for sur matlab ✓ - Forum Matlab
- Derivée matlab - Forum Matlab
2 réponses
Résolution :
function J=jacobi(m)
syms E x1 x2 x3 x4 x5 x6 y1 y2 y3 y4 y5 y6 X Y real
fA1 = log(exp(E)/sqrt((X-x1)^2 + (Y-y1)^2));
fA2 = log(exp(E)/sqrt((X-x2)^2 + (Y-y2)^2));
fA3 = log(exp(E)/sqrt((X-x3)^2 + (Y-y3)^2));
fA4 = log(exp(E)/sqrt((X-x4)^2 + (Y-y4)^2));
fA5 = log(exp(E)/sqrt((X-x5)^2 + (Y-y5)^2));
fA6 = log(exp(E)/sqrt((X-x6)^2 + (Y-y6)^2));
A = jacobian([fA1;fA2;fA3;fA4;fA5;fA6],[E X Y x1 x2 x3 x4 x5 x6 y1 y2 y3 y4 y5 y6]);
E = m(1,1);
X = m(1,2);
Y = m(1,3);
x1 = m(1,4); y1 = m(1,10);
x2 = m(1,5); y2 = m(1,11);
x3 = m(1,6); y3 = m(1,12);
x4 = m(1,7); y4 = m(1,13);
x5 = m(1,8); y5 = m(1,14);
x6 = m(1,9); y6 = m(1,15);
J=eval(A)
function J=jacobi(m)
syms E x1 x2 x3 x4 x5 x6 y1 y2 y3 y4 y5 y6 X Y real
fA1 = log(exp(E)/sqrt((X-x1)^2 + (Y-y1)^2));
fA2 = log(exp(E)/sqrt((X-x2)^2 + (Y-y2)^2));
fA3 = log(exp(E)/sqrt((X-x3)^2 + (Y-y3)^2));
fA4 = log(exp(E)/sqrt((X-x4)^2 + (Y-y4)^2));
fA5 = log(exp(E)/sqrt((X-x5)^2 + (Y-y5)^2));
fA6 = log(exp(E)/sqrt((X-x6)^2 + (Y-y6)^2));
A = jacobian([fA1;fA2;fA3;fA4;fA5;fA6],[E X Y x1 x2 x3 x4 x5 x6 y1 y2 y3 y4 y5 y6]);
E = m(1,1);
X = m(1,2);
Y = m(1,3);
x1 = m(1,4); y1 = m(1,10);
x2 = m(1,5); y2 = m(1,11);
x3 = m(1,6); y3 = m(1,12);
x4 = m(1,7); y4 = m(1,13);
x5 = m(1,8); y5 = m(1,14);
x6 = m(1,9); y6 = m(1,15);
J=eval(A)