【问题标题】:Graphing the result of NSolve绘制 NSolve 的结果
【发布时间】:2012-06-13 19:15:00
【问题描述】:

我正在尝试绘制一个使用 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}]

基本上,我有一个包含两个变量的三次方,我求解一个给定另一个变量,并尝试根据该原始给定变量绘制两个参数方程。这应该是连接在一起的两个气泡的能量与体积差异的图表。但是,我的轴是空白的。我使用 NSolve 来隔离三次方程的实根,我猜 Mathematica 在涉及 NSolve 的绘图时存在问题。我浏览了整个互联网,但找不到任何答案。谢谢你的帮助! 大卫

【问题讨论】:

  • 您可以在更改SolveR[v_?NumericQ] := NSolve[16 v^2 - 16 v*(r^3) + 3 (r^2) + 1 == 0, r, Reals][[1, 1, 2]] 的定义方面取得一些进展。外部的Re[] 似乎是多余的。
  • 谢谢。我实际上之前没有 Re[] 但我认为在尝试绘制答案的真实部分时它不会受到伤害。如果你不介意我问,[[1,1,2]] 在那里最后做了什么?
  • 它选择第一个解决方案,因为您的方程是二次的。
  • @b.gatessucks 这个方程在我看来是三次方的,在感兴趣的区间中只有一个实根
  • @belisarius 你是对的,我的错。谢谢。

标签: math wolfram-mathematica plot


【解决方案1】:

纠正了几个错误。 您应该了解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}]

【讨论】:

  • 非常感谢您的帮助。
猜你喜欢
  • 2018-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-07
  • 2017-01-20
  • 2011-10-13
相关资源
最近更新 更多