Matlab passer de syms à double

Fermé
michel - 7 mars 2011 à 12:48
 mourina - 10 oct. 2014 à 19:35
Bonjour,

Je fait un programme sur matlab avec la MEF.
J'ai creer les fonctions isoparametrique associées, avec leurs derivées.

Le probleme est que pour utiliser la formule de derivée il faut declarer les variable en symbolique. Du coup j'ai mes fonctions mes dérivées mais j'aimerais convertir les variables symbolique en double.

Voici un exemple pour une fonction

syms('E'); syms('N'); syms('C');
N1=(1/8)*(1+E)*(1-N)*(1-C)*(-2-N+E-C);
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~%%-----------------------------------------------------------------%
%DERIVEES PREMIERES%
%-----------------------------------------------------------------%
%PAR RAPPORT A N
%~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~%
NN1=diff(N1,N);




Matlab me retourne donc N1 et NN1

NN1 =

-(1/8+1/8*E)*(1-C)*(-2-N+E-C)-(1/8+1/8*E)*(1-N)*(1-C)

et je n'arrive pas à transformer les variables E C et N par 0 pour creer le debut de ma matrice de deformaion..

Si le challenge interresse quelqu'un :D

Merci beaucoup par avance (pour ce sujet et pour tous les autres qui m'ont était tres utiles).
A voir également:

1 réponse

Bonjour,

Finalement j'ai trouver la solution si ca peut aider quelqu'un...

Il suffit en faite de passer par la fonction limite pour donner une valeur aux syms declarées.


Si une autre idée vous viens je suis preneur.

Cordialement,
Michel
0
je doit calculer le derive quand x=0
sym x

E = [(exp(x)-1),(cos(x))];
for i=1:length(E)
diff_k_1(i)= diff( E(i),'x',j); %il faut mettre x=0 apres le calcule de derive

end


vous avez une idée comment mettre une valeur dans une variable symbolique x?
0
c'est bon

sym x

E = [(exp(x)-1),(cos(x))];
for i=1:length(E)
diff_k_1(i)= diff( E(i),'x',j);
diff_k_1(i)=limit(diff_k_1(i),0);

end
0