2012-06-13 48 views
0

我想繪製一個部分使用NSolve獲得的參數方程。這是我嘗試代碼:繪製NSolve的結果

VolumeDiff[v_] = 1.7 - v 
SolveR[ v_] = 
Re[NSolve[16 v^2 - 16 v*(r^3) + 3 (r^2) + 1 == 0, r, Reals]] 
EnergyPos[r_] = r/2 (r + Sqrt[r^2 - 1]) 
EnergyNet[r_] = EnergyPos[SolveR[r]] + EnergyPos[SolveR[VolumeDiff[r]]] 
ParametricPlot[{Re[EnergyNet[x]], 1.7 - 2. x}, {x, .1, 1.6}] 

基本上,我有兩個變量立方,我解決一個給定其他,並嘗試基於該原始給定變量繪製2個參數方程。這應該是兩個氣泡附着在一起的能量與體積差異的圖表。但是,我的軸是空白的。我使用NSolve來隔離三次方程的實根,我猜Mathematica在涉及NSolve時存在一個問題。我看了整個互聯網,但我找不到任何答案。謝謝你的幫助! David

+0

可以作出一些進展改變定義'SOLVER [V_ NumericQ?] = NSolve [16 V^2 - 16 V *(R^3)+ 3(R^2 )+ 1 == 0,r,Reals] [[1,1,2]]'。外部'Re []'似乎是多餘的。 –

+0

謝謝。實際上我之前沒有Re [],但我認爲當試圖繪製答案的實際部分時它不會受到傷害。如果你不介意我的問題,那麼[[1,1,2]]在結尾處做了什麼? – user1454550

+0

它選擇第一個解決方案,因爲你的方程是二次的。 –

回答

3

糾正了幾個錯誤。 您應該閱讀如何使用SetDelayed (:=)Solve[]

VolumeDiff[v_] := 1.7 - v 
SolveR[v_] := NSolve[16 v^2 - 16 v*(r^3) + 3 (r^2) + 1 == 0, r, Reals][[1]] 
EnergyPos[r_] := r/2 (r + Sqrt[r^2 - 1]) 
EnergyNet[r_] := EnergyPos[r /. SolveR[r]]+EnergyPos[r /. SolveR[VolumeDiff[r]]] 
ParametricPlot[{EnergyNet[x], 1.7 - 2. x}, {x, .1, 2}] 

enter image description here

+0

非常感謝您的幫助。 – user1454550