在Octave中从小数表示转换为十进制表示

时间:2017-07-04 06:40:55

标签: octave

我收到以下警告:

warning: Using rat() heuristics for double-precision input (is this what you wanted?)

当我想要小数形式时,我的计算结果是使用理性方法。如何强制计算将有理数转换为十进制表示?

以下是代码:

pkg load symbolic
syms a b c d real
C = [1, 0, 0, 0; 0, 1, 0, 0; 0, 0, 0, 1; 0, 0, 1, 0]
H = (1/sqrt(2))*[1, 1; 1, -1]
I = [1, 0; 0, 1]
X = [a, b, c, d]

s = kron(H, I)
s*C*X'

1 个答案:

答案 0 :(得分:1)

可以使用vpa将有理表示转换为浮点表示。 vpa(x,n)评估x至少n个有效数字。如果您想使用digits的当前值,则可以省略n

vpa(s*C*X.',4)   
% Above line evaluates the result to at least 4 significant digits

另请注意,'不是转置。它是复共轭转置。如果要进行转置,请使用转置(即.')。这就是我在上面的代码中进行替换的原因。

关于警告消息,它可以是turned off

warning ('off', 'OctSymPy:sym:rationalapprox');

您可以在上面的代码中将off替换为on,再次打开它。