[Matlab]Création fonction calcul jacobien
Résolu
Newenda
Messages postés
75
Date d'inscription
Statut
Membre
Dernière intervention
-
Newenda Messages postés 75 Date d'inscription Statut Membre Dernière intervention -
Newenda Messages postés 75 Date d'inscription Statut Membre Dernière intervention -
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)