2010-11-23 33 views

Répondre

2

La sortie est de la bonne classe; votre problème est dans votre syntaxe. Utilisation:

class(ans) 

au lieu de

class ans 

Le premier vous donne la classe de la ans variable, la seconde vous donne la classe de la chaîne « ans ».

+0

Oh ... Merci! Mais j'ai toujours le problème. – Peterstone

+2

En supposant que par "problème" vous voulez dire que la réponse est toujours 0, c'est parce que c'est 0. 'exp (0.049 * 49/200) = 1.1276', et' roundn (1.1276, 22) = 0'. Vérifiez-le. J'ai l'impression que vous utilisez incorrectement roundn ... vous arrondissez à 10^22 ici. – eykanal

+0

Oh ... Merci! – Peterstone

1

Il semble que vous souhaitiez que la sortie de roundn(...) soit une expression symbolique. Cependant, ROUNDN semble être une fonction du Mapping Toolbox, et donc je doute qu'il fonctionnera avec des variables symboliques.

Je pense peut-être à l'aide de la VPASymbolic Toolbox est ce que vous voulez:

>> eq = sym('exp(x*49/200)'); %# A symbolic equation 
>> x = sym(0.49);    %# A symbolic value 
>> n = 22;      %# Number of digits of precision 
>> vpa(subs(eq,'x',x),n)  %# Substitute x and evaluate 

ans = 

1.127553227831349194548  %# ans is a symbolic value 
1

Est-ce que vous cherchez?

%char 
expr = '1+exp(1)'; 

%sym 
x = sym(x); 

%number 
xval1 = double(x); 

%rounded number 
xval2 = double(vpa(x, 2)); 

>> n = 22; 
>> expr = exp(x*49/200); 
>> res = subs(expr,x,0.49); 
res = 
    1.1276 
>> class(res) 
res = 
double 
>> 
+0

Désolé, je ne cherche pas ça. – Peterstone

+0

Pouvez-vous modifier la question pour clarifier ce que vous cherchez? – ja72