公告:网站程序已升级到1.8.3,修复了提问时可能报错的问题,请清除浏览器缓存
2019-11-10

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

语法高亮:在编辑器中点击

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

支持LaTex数学公式
行内公式标识符:\$ 或“$\backslash ($”+“$\backslash )$”,
行间公式标识符:\$\$ 或 “$\backslash [$”+“$\backslash ]$”

社区建议QQ群:365716997

分类

0 投票
350 浏览

如图,在数值解微分方程sol后,作图时想引一条从原点到指定点(红色)的线,但显示错误。

红色点已经画出来了,为什么线段就不行呢?

分类:方程 | 用户: osu759231 (11 分)
请附上代码,只有截图也不方便测试呀
Manipulate[
 sol =
  NDSolve[{2 Dt[r[t], t] Dt[\[Theta][t], t] +
      r[t] Dt[\[Theta][t], t, t] + Sin[\[Theta][t]] == 0,
    r[t] Dt[\[Theta][t], t]^2 + Cos[\[Theta][t]] - k*r[t] + k -
      Dt[r[t], t, t] == 0, r[0] == l, \[Theta][0] == Pi/2,
    r'[0] == \[Theta]'[0] == 0}, {r, \[Theta]}, {t, 0, 100}],
 {l, 0, 5}, {k, 0, 5}]
这个是解微分方程
Manipulate[
 Show[
  If[T == 0,
   ParametricPlot[{2, 0}, {t, 0, 100},
    PlotRange -> {{-5, 5}, {-5, 5}}],
   
   ParametricPlot[{r[t] Sin[\[Theta][t]], -r[t] Cos[\[Theta][t]]} /.
     sol, {t, 0, T}, PlotRange -> {{-5, 5}, {-5, 5}}]],
  Graphics[{Red, PointSize[0.02],
    Point[{r[T] Sin[\[Theta][T]], -r[T] Cos[\[Theta][T]]} /. sol],
    Black, Thickness[0.007],
    Line[{{0, 0}, {r[T] Sin[\[Theta][T]], -r[T] Cos[\[Theta][T]]} /.
       sol}]}]
  
  ],
 {T, 0, 100}
 ]
这个来绘图
sol是两层列表。
所以需要把绘图部分中的2个 /.sol 改成 /. sol[[1]]
或者在前面求解后用Flatten压平一下也行。
非常感谢!但是似乎point那个改不改都行,但line那个必须要改,为什么呢?
因为Point可以作用到点列表上,显然,Point[{r1}]就等于Point[r1](也就是只有一个点的点集)。

登录 或者 注册 后回答这个问题。

...