公告:本站正式转型为非交互式静态网站!
转型:本站将通过笔记和博客的形式继续为大家服务,关于 Mathematica 问答服务请移步至QQ群:365716997
联系:如有问题请联系QQ群管理员,或发送邮件至:lixuan.xyz@qq.com。
感谢:最后非常感谢大家多年来的支持与帮助!
参考《互联网跟帖评论服务管理规定》《中华人民共和国网络安全法》《网络信息内容生态治理规定》《互联网用户账号信息管理规定》

—— 2022-11-27

欢迎来到 Mathematica 问答社区

提问时请贴上文本代码

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

被禁止的话题:广告破解

请阅读:《提问的智慧》

备用域名:mma.ooo

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

社区建议QQ群:365716997

分类

0 投票
867 浏览

我想绘制一个二阶差分的几何意义,其中func为过第一个定位器q[1]点的一次导函数,不加Plot[func[x, q[1]], {x, -10, 10}]这一句,程序拖动定位器演示很顺畅,但是加了以后 拖动定位器十分卡,看了帮助很久,始终无法解决,求大家帮忙...

Clear["Global`*"]
ClearAll[func]
line[p1_, p2_] := 
  Module[{tmp = p2 - p1, inc = 100.}, 
   Line[{p1 + inc*tmp, p2 - inc*tmp}]];
lineshort[p1_, p2_] := Line[{p1, p2}]
(q[#] = {0.2 # + 0.2, (0.2 # + 0.2)^3}) & /@ Range[9];
loc[i_] := Locator[Dynamic[q[i], (q[i] = {#[[1]], #[[1]]^3}) &]];
func[x_, pt_List] := (6 pt[[1]] (x - pt[[1]])^2 + pt[[2]])
Manipulate[
 Dynamic@Show[Plot[x^3, {x, -10, 10}], 
   Plot[func[x, q[1]], {x, -10, 10}], 
   Graphics[line[q[#1], q[#2]]] & @@@ Partition[Range[n], 2, 1], 
   Graphics[{Red, Thick, Line[{q[2], {q[3][[1]], q[2][[2]]}}]}], 
   Graphics[{Blue, Thick, Line[{q[1], {q[2][[1]], q[1][[2]]}}]}], 
   Graphics[loc /@ Range[n], PlotRange -> 10], 
   PlotRange -> {{-1, 1.5}, {-0.5, 1.5}}, AspectRatio -> 1], {{n, 3, 
   "NumLocator"}, 2, 9, 1, Appearance -> "Labeled"}]

软件版本:11.1Win

问题关闭原因: 已解决
分类:绘图 | 用户: mma-2-2-2 (1.3k 分)
已关闭 用户:mma-2-2-2

1个回答

0 投票
 
已采纳
(*Module封装外部函数*)
DynamicModule[{pts = {{1, 1}, {2, 8}, {3, 27}}}, 
LocatorPane[Dynamic[pts, (pts = {#1, #1^3} & @@@ #) &], 
Dynamic@Module[{line}, 
line[p1_, p2_] := 
Module[{tmp = p2 - p1, inc = 100.}, 
Line[{p1 + inc*tmp, p2 - inc*tmp}]]; 
Show[Plot[x^3, {x, -5, 5}, PlotStyle -> {Thick, Black}], 
Graphics[MapThread[line, Partition[pts, 2, 1]]],(*过3点至导函数竖线*)
Graphics[{Dashing[{0.03, 0.010}], Red, Opacity[0.7], 
Thickness[0.005], 
Line[{{pts[[3, 1]], 
pts[[2, 2]]}, {pts[[3, 
1]], (6 pts[[2, 1]] (pts[[3, 1]] - pts[[2, 1]])^2 + 
pts[[2, 2]])}}]}],(*过2点横线*)
Graphics[{Dashing[{0.015, 0.010}], Red, Thickness[0.005], 
Line[{pts[[2]], {pts[[3, 1]], pts[[2, 2]]}}]}],
(*过3点竖线*)
Graphics[{Dashed, Blue, Thickness[0.008], 
Line[{pts[[
3]], {pts[[3, 
1]], (pts[[2, 2]] - pts[[1, 2]])/(
pts[[2, 1]] - pts[[1, 1]]) (pts[[3, 1]] - pts[[1, 1]]) + 
pts[[1, 2]]}}]}],(*过2点一阶导函数*)
Plot[(6 pts[[2, 1]] (x - pts[[2, 1]])^2 + pts[[2, 2]]), {x, -10, 
10}, 
PlotStyle -> {Dashing[{0.005, 0.008}], Thickness[0.005], 
GrayLevel[0.68]}], PlotRange -> {{-5, 5}, {-5, 30}}, 
ImageSize -> 500]]]]

 

用户: mma-2-2-2 (1.3k 分)
...