[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
- Gnu octave matlab - Télécharger - Édition & Programmation
- Matrice matlab ✓ - Forum Matlab
- Telecharger matlab ✓ - Forum Logiciels
- [MATLAB] transformer une matrice en vecteur - Forum Matlab
- Fonction 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)