2013-01-15 52 views
2

嘗試使用VPA()來計算可變點數目用於在指數理性表達:MATLAB vpa()不計算帶指數的表達式的變量點數?

syms x; 
ans1 = x^(12345/67890) 
ans2 = vpa(x^(12345/67890),3) 
ans2_5 = vpa((12345/67890),3) 
ans3 = vpa(x*(12345/67890),3) 

上面示出的問題。 ans1顯示錶達式的默認輸出。 ans2顯示vpa()不計算表達式的變量點數。 ans 2_5顯示了它應該計算的內容。我正在尋找的結果是x^0.182

ans3只是表明當函數是乘法時,vpa()會產生預期的結果 - 它是指數中的某個東西,它會跳過它。

我怎樣才能請求指數由vpa評估?

也許我可以說得更清楚。我真正需要的是指數表達式指數的訪問器或索引。所以如果我的表達式是 y = x^a 我需要能夠有x返回a一些訪問器。

這可能嗎?

回答

3

+1用於發現這個有趣的bug。 這解決了你的問題對我來說:

digits(3) 
p=vpa(12345/67890,3) 
ans1 = x^p 

ans1 = 
     x^0.182 
+0

對於我提出的例子,它的解決方案工作。然而,對於實際使用情況,整個指數表達式是通過求解一個方程組得到的,所以我不能只挑出指數組件來將其稱爲變量(我不認爲)。那裏有棘手的建議? – Trevor

+0

我擔心VPA不是使用的工具,因爲我現在知道沒有錯誤。 'vpa(A,d)'計算A的每個元素到至少十位數的精度,其中d是數字的當前設置。但是如果'A = x^d',就沒有辦法知道'A'的第一個'd'數字,因此結果。 – bla

+0

但它與乘法表達式一起工作... – Trevor