Question

J'ai un problème avec des fonctions symboliques.Je suis de la création de la fonction de ma propre dont le premier argument est une chaîne de caractères.Alors je suis la conversion d'une chaîne à la fonction symbolique:

f =  syms(func)

Disons que ma chaîne est sin(x).Alors maintenant, je veux calculer à l'aide de subs.

a = subs(f, 1)

Le résultat est sin(1) au lieu du numéro.

Pour 0 il fonctionne et calcule correctement.Que dois-je faire pour obtenir le résultat réel, non seulement sin(1) ou sin(2), etc.?

Était-ce utile?

La solution

Vous pouvez également utiliser eval() pour évaluer la fonction que vous obtenez par subs() la fonction

f=sin(x);
a=eval(subs(f,1));
disp(a);
a =

    0.8415

Autres conseils

syms x
f = sin(x) ;

alors si vous voulez affecter une valeur à x , par exemple pi/2 vous pouvez effectuer les opérations suivantes:

subs(f,x,pi/2)
ans =

1

Vous pouvez évaluer les fonctions de manière efficace en utilisant matlabFunction.syms s t x =[ 2 - 5*t - 2*s, 9*s + 12*t - 5, 7*s + 2*t - 1];x=matlabFunction(x);ensuite, vous pouvez taper x dans la fenêtre de commande et assurez-vous que les éléments suivants s'affiche:

x

x =

@(s,t)[s.*-2.0-t.*5.0+2.0,s.*9.0+t.*1.2e1-5.0,s.*7.0+t.*2.0-1.0]

vous pouvez voir que votre fonction est maintenant défini par s et t.Vous pouvez appeler cette fonction en écrivant x(1,2), où s=1 et t=1.Il devrait générer une valeur pour vous.

Voici quelques choses à considérer:Je ne sais pas ce qui est plus précis entre cette méthode et sous-marins.La précision des différentes méthodes peuvent varier.Je ne sais pas ce qui irait plus vite si vous essayez de générer d'énormes matrices.Si vous ne le faites pas grave de recherche ou de codage pour la vitesse, puis ces choses, probablement n'a pas d'importance.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top