Matrix differentiation

Hi
I have matrix (3,3)in the form
M=[cos(a)*sin(b)*cos(c) sin(a)*sin(b)*sin(c) cos(a)^2*sin(b)^2*cos(c);.............;.......]
where a , b , c angls changing with the time
How i can differentiation the M according to time Mdott
Thx

 Réponse acceptée

Andrei Bobrov
Andrei Bobrov le 6 Juin 2012

1 vote

syms a b c t
M=[cos(a)*sin(b)*cos(c) sin(a)*sin(b)*sin(c) cos(a)^2*sin(b)^2*cos(c)];
k = regexprep(char(M),{'\(a\)','\(b\)','\(c\)'},{'\(a\(t\)\)', '\(b\(t\)\)', '\(c\(t\)\)'});
out = feval(symengine,'diff', k, t)
ADD after rami's comment
z = feval(symengine,'diff', k, t);
out = sym(regexprep(char(z),'(\(t\))|(\*diff\([abc]\(t\), t\))',''))

1 commentaire

rami
rami le 6 Juin 2012
Ok
As example
M=[cos(a)*sin(b)*cos(c) sin(a)*sin(b)*sin(c) cos(a)^2*sin(b)^2*cos(c);1 1 1;1 1 1];
k = regexprep(char(M),{'\(a\)','\(b\)','\(c\)'},{'\(a\(t\)\)', '\(b\(t\)\)', '\(c\(t\)\)'});
out = feval(symengine,'diff', k, t)
I have the result:
out =
[ cos(a(t))*cos(b(t))*cos(c(t))*diff(b(t), t) - cos(c(t))*sin(a(t))*sin(b(t))*diff(a(t), t) - cos(a(t))*sin(b(t))*sin(c(t))*diff(c(t), t), cos(a(t))*sin(b(t))*sin(c(t))*diff(a(t), t) + cos(b(t))*sin(a(t))*sin(c(t))*diff(b(t), t) + cos(c(t))*sin(a(t))*sin(b(t))*diff(c(t), t), 2*cos(b(t))*cos(c(t))*diff(b(t), t)*cos(a(t))^2*sin(b(t)) - sin(c(t))*diff(c(t), t)*cos(a(t))^2*sin(b(t))^2 - 2*cos(c(t))*sin(a(t))*diff(a(t), t)*cos(a(t))*sin(b(t))^2]
[ 0, 0, 0]
[ 0, 0, 0]
Is there any way to disappear the term diff(b(t), t),...

Connectez-vous pour commenter.

Plus de réponses (1)

Walter Roberson
Walter Roberson le 6 Juin 2012

0 votes

I am relatively sure the below should work:
syms a b c t
M=[cos(a(t))*sin(b(t))*cos(c(t)) sin(a(t))*sin(b(t))*sin(c(t)) cos(a(t))^2*sin(b(t))^2*cos(c(t));.............;.......]
diff(M, t)
What might also work, at least with sufficiently new Symbolic Toolbox, is
syms a(t) b(t) c(t) t
M=[cos(a)*sin(b)*cos(c) sin(a)*sin(b)*sin(c) cos(a)^2*sin(b)^2*cos(c);.............;.......]
diff(M,t)

2 commentaires

rami
rami le 6 Juin 2012
syms a b c t
A=[cos(a(t))*sin(b(t))*sin(c(t)) sin(a(t))*cos(c(t)) 1;0 0 0;1 1 1]
diff(A, t)
Error in ==> POLEPLACEMENT at 9
A=[cos(a(t))*sin(b(t))*sin(c(t)) sin(a(t))*cos(c(t)) 1;0 0 0;1 1 1]
OR
syms a(t) b(t) c(t) t
M=[cos(a)*sin(b(t))*cos(c) sin(a(t))*sin(b(t))*sin(c(t)) cos(a(t))^2*sin(b(t))^2*cos(c(t));1 1 1;1 1 1];
diff(M, t)
Error in ==> POLEPLACEMENT at 12
syms a(t) b(t) c(t) t
rami
rami le 6 Juin 2012
syms a(t) b(t) c(t) t
M=[cos(a)*sin(b)*cos(c) sin(a)*sin(b)*sin(c) cos(a)^2*sin(b)^2*cos(c);1 1 1;1 1 1];
diff(M, t)
??? Error using ==> syms at 61
Not a valid variable name.
Error in ==> POLEPLACEMENT at 12
syms a(t) b(t) c(t) t

Connectez-vous pour commenter.

Catégories

En savoir plus sur Symbolic Math Toolbox dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by