2015-09-04 2 views
0

Si je veux faire un terrain de y = 1/x dans Matlab je peux utiliser le code suivant:division par zéro avec des fonctions symboliques

X=-10:0.1:10; 
Y=1./(X); 
plot(X,Y); 

Mais je voudrais utiliser les fonctions symboliques, je peux différencier eux, donc j'ai ce code:

syms x; 
f(x) = 1./x; 

X=-10:0.1:10; 
Y=f(X); 
plot(X,Y); 

Malheureusement je reçois ici une erreur

erreur dans la commande MuPAD: division par zéro. [_power]

Ceci est raisonnable à un moment donné, il wil essayer de diviser 1 par 0. Comment puis-je obtenir ce travail afin qu'il retourne Inf quand une division par zéro se produit, comme dans les calculs réguliers de le formulaire a=6/0;?

+0

Je ne suis pas la question marquée comme doublon de cela répond entièrement à cette question. En particulier, ['ezplot'] (http://www.mathworks.com/help/matlab/ref/ezplot.html) devrait être utilisé pour tracer des fonctions symboliques plutôt que' plot' (sauf si les fonctions sont évaluées numériquement). – horchler

+0

@horchler - Je peux rouvrir la question si vous croyez pouvoir répondre adéquatement à la question. Je pensais que le doublon semblait correspondre, tant que vous ajoutez les fonctions de dirac dans les bons endroits. – rayryeng

+0

@rayryeng: J'ai essayé la fonction dirac et c'est ok, mais pas pour la différenciation. Si 'f' utilise une fonction dirac alors la dérivée de' f' n'est pas toujours correcte. –

Répondre

1

La fonction ezplot peut être utilisée pour tracer directement des fonctions et des expressions symboliques.

syms x; 
f(x) = 1/x; 
ezplot(f,[-10 10]); 

Si vous voulez convertir votre expression à quelque chose qui peut être évalué numériquement, vous pouvez utiliser matlabFunction pour convertir la fonction symbolique à un function handle:

syms x; 
f(x) = 1/x; 
X = -10:0.1:10; 
F = matlabFunction(f); 
plot(X,F(X)); 

Pourquoi retour does't MuPAD pour infinity1/0? En virgule flottante, ceci est bien défini, mais en mathématiques, divison by zero est indéfini. Si vous voulez évaluer votre fonction entièrement dans MuPAD vous aurez besoin de call underlying functions from Matlab et handle errors.