2012-11-28 2 views
1

J'ai écrit un programme simple pour trouver les racines d'une équation non linéaire en utilisant la méthode numérique connue sous le nom de méthode de Newton Raphson, donc j'ai besoin de calculer la dérivée de la fonction. -je utiliser la fonction « diff » qui prend une chaîne et retourne sa dérivation puis-je utiliser eval pour calculer la pente de la ligne tangente:La fonction Diff ne fonctionne pas une fois compilée

func='sin(x^2)'; 
x=4.5; 
slope=eval(diff(func)); 

Le code se trouve dans un fichier .m qui est le long d'autres fichiers .fig . Tout semble bien se passer lorsque je le débogue/l'exécute dans l'environnement GUIDE ou via la fenêtre de commande de MATLAB, il y a seulement un avertissement que la fonction sera obsolète dans une prochaine version. Mais quand je compile les fichiers avec la commande suivante: "mcc -e fichier1 fichier2", et exécutez le fichier .exe il jette une erreur d'exécution quand il atteint cette ligne spécifique avec "diff" et bips! Existe-t-il un autre moyen de calculer la dérivée (symbolique/non numérique) qui serait également prise en charge dans un fichier d'application?

Répondre

1

Ceci est discuté here. Le problème est func pas diff. Ne pouvez-vous pas utiliser une alternative à la définition de la fonction en tant que chaîne? Si possible, faites un fichier de fonction normal avec fonc, puis incluez-le dans le paquet déployé.

+0

La fonction est donnée via l'interface utilisateur par l'utilisateur de sorte qu'il n'est pas défini ou une fonction exacte. – chakmeshma

+2

Oh je vois. Dans ce cas, l'utilisation de chaînes de fonctions et d'eval ne fonctionnera pas. Vous pouvez soit concevoir une interface de type calculatrice et avoir des expressions d'entrée en cliquant sur les boutons appropriés ou vous pouvez essayer d'analyser une expression tapée par l'utilisateur dans ses homologues de la fonction matlab. Ce dernier semble douloureux cependant. – jerad

Questions connexes