2017-07-04 90 views
-1

我得到以下警告:從分數轉換爲十進制表示在八度

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' 
+0

理性表示似乎@符號/ sym.m被硬編碼(見線251;所述標誌從私有函數@符號/私人/ const_to_python_str.m似乎是0默認返回,除非一個例外是提出,雖然我可能會解釋這個錯誤)。如果你願意的話,你可以試着用@ sym/sym.m來擺弄,但是沒有一個似乎沒有一個你可以通過強制執行'float'表示的'參數'。我還沒有找到任何將理性表示轉換爲'float'的函數(@ sym/double.m看起來很有名,但是當我在這裏嘗試時,它給了我一個錯誤)。 –

回答

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'); 

您可以在上面的代碼替換on再次off打開它。

相關問題