我可以表示一个像十进制近似值这样的理性符号值吗?

问题描述:

例如,我有's + 5/2'的符号值。有没有办法像's + 2.5'一样显示它?我可以表示一个像十进制近似值这样的理性符号值吗?

是的,请使用vpa。只需采用符号表达式并使用vpa函数便于转换。 vpa评估符号表达式中的每个项,并尽可能将每个值转换为使用最多32位有效数字。您还可以使用第二个参数覆盖有效数字的数量为vpa,但在您的情况下不需要。

这里有一个简单的例子:

>> syms s 
>> A = s + 5/2 

A = 

s + 5/2 

>> vpa(A) 

ans = 

s + 2.5 
+1

不错!我正在尝试使用'sym/eval',无济于事 –

+1

@LuisMendo谢谢!说实话,这是我第一次尝试:D – rayryeng

您还可以设置数值文字为十进制模式,其中精度受digits规定的初始近似模式,采用sym功能的'd'标志:

>> expr = sym('s') + sym(5/2,'d') 

expr = 

s + 2.5 
+1

啊,非常好。当你写这个答案时,我在文档中偶然发现了这一点。 – rayryeng

+0

@rayryeng是的。我很确定这只是一个向前转换到'vpa'的底层。 – TroyHaskin

+0

你说得对。 'vpa'实际上为符号表达式中的每个项调用'digits',并给出每个项最多32位有效数字。你也可以用'vpa'的第二个参数覆盖它。 – rayryeng