在《多点调控曲线简介》里面,我们介绍了多点调控曲线的定义,并且用Desmos初步研究了它的一些有趣的性质,读者可以去看一看。 这里,我们要用Mathematica进一步处理多点调控曲线。
工具/原料
电脑
Mathematica
二点调控曲线
1、 不了解多点调控曲线定义的人,可以参考——《多点调控曲线简介》。 先来做一个二点调控曲线,其中两个点是{0,0},{1/2,1/3},都是正调控点:A={0,0};B={1/2,1/3};XY={x,y};ContourPlot[1/Norm[XY - A] + 1/Norm[XY - B] == 6,{x, -1, 1}, {y, -1, 1}, ContourStyle -> XYZColor[1, 0, 1]]
2、 我们为了看图,要把A和B也绘制出来:Show[Graphics[{Red, Point[{A, B}]}],ContourPlot[ 1/Norm[XY - A] + 1/Norm[XY - B] == 6, {x, -1, 1}, {y, -1, 1}, ContourStyle -> XYZColor[1, 0, 1]]]
3、 把A点绘制成红色,B点绘制成绿色:Show[Graphics[{Red, Point[A], Green, Point[B]}],ContourPlot[ 1/Norm[XY - A] + 1/Norm[XY - B] == 6, {x, -1, 1}, {y, -1, 1}]]
4、 如果点B是负调控点,会怎么样呢?Show[Graphics[{Red, Point[A], Green, Point[B]}],ContourPlot[ 1/Norm[XY - A] - 1/Norm[XY - B] == 6, {x, -1, 1}, {y, -1, 1}]]
5、 再来两种情况的互动效果:Manipulate[Show[Graphics[{Red, Point[A], Green, Point[B]}], ContourPlot[ 1/Norm[XY - A] + 1/Norm[XY - B] == a, {x, -1, 1}, {y, -1, 1}, ContourStyle -> XYZColor[1, 0, 1]], ImageSize -> {500, 500}], {a, 10, 3, 0.01}] 和Manipulate[Show[Graphics[{Red, Point[A], Green, Point[B]}], ContourPlot[ 1/Norm[XY - A] - 1/Norm[XY - B] == a, {x, -1, 1}, {y, -1, 1}, ContourStyle -> XYZColor[1, 0, 1]], ImageSize -> {500, 500}], {a, 10, 3, 0.01}]
三点调控曲线
1、 再来看看三点调控曲线,加入一个点G:{1/3,1},如果三个点都是正调控点:A = {0, 0}; B = {1/2, 1/3}; G = {1/3, 1}; XY = {x, y};Show[Graphics[{Red, Point[A], Green, Point[B], Blue, Point[G]}],ContourPlot[ 1/Norm[XY - A] + 1/Norm[XY - B] + 1/Norm[XY - G] == 7,{x, -1, 2}, {y, -1, 2}]] 图中的蓝色点,就是G。
2、 互动效果:Manipulate[Show[Graphics[{Red, Point[A], Green, Point[B], Blue, Point[G]}], ContourPlot[ 1/Norm[XY - A] + 1/Norm[XY - B] + 1/Norm[XY - G] == a, {x, -1, 2}, {y, -1, 2}], ImageSize -> {500, 500}], {a, 2.3, 10, 0.1}]
3、 如果把G视为负调控点,会是什么效果?Manipulate[Show[Graphics[{Red, Point缪梨痤刻[A], Green, Point[B], Blue, Point[G]}], ContourPlot[ 1/Norm[XY - A] + 1/Norm[XY - B] - 1/Norm[XY - G] == a, {x, -1, 2}, {y, -1, 2}], ImageSize -> {500, 500}], {a, -10, 10, 0.5}] 局部细化:Manipulate[Show[Graphics[{Red, Point[A], Green, Point[B], Blue, Point[G]}], ContourPlot[ 1/Norm[XY - A] + 1/Norm[XY - B] - 1/Norm[XY - G] == a, {x, -1, 2}, {y, -1, 2}], ImageSize -> {500, 500}], {a, -0.5, 2, 0.005}]
4、 把A、B、G变成定位器,便于移动A、B、G的相对位置(在移动的过程中,坐标也发生变化)。Manipu造婷用痃late[XY = {x, y};ContourPlot[ 1/Norm[XY - A] + 1/Norm[XY - B] + 1/Norm[XY - G] == a, {x, -1, 2}, {y, -1, 2}],{{A, {0, 0}}, Locator, Appearance -> "A"},{{B, {1/2, 1/3}}, Locator, Appearance -> "B"},{{G, {1/3, 1}}, Locator, Appearance -> "G"},{a,2.3, 10, 0.1}] 和Manipulate[XY = {x, y};ContourPlot[ 1/Norm[XY - A] + 1/Norm[XY - B] - 1/Norm[XY - G] == a, {x, -1, 2}, {y, -1, 2}], {{A, {0, 0}}, Locator, Appearance -> "A"}, {{B, {1/2, 1/3}}, Locator, Appearance -> "B"}, {{G, {1/3, 1}}, Locator, Appearance -> "G"}, {a, 2.3, 10, 0.1}]
其他情形
1、 我们尝试着用Mathematica的定位器来演示更多调控点的调控曲线,并试图说明,正负调控点分别位于曲线的内部和外部。 四个调控点,两正两负:Manipulate[XY = {x, y};ContourPlot[ 1/Norm[XY - A] + 1/Norm[XY - B] - 1/Norm[XY - c] - 1/Norm[XY - G] ==a, {x, -1, 2}, {y, -1, 2}],{{A, {0, 0}}, Locator, Appearance -> "A"},{{B, {1/2, 1/3}}, Locator, Appearance -> "B"},{{c, {1, 1/5}}, Locator, Appearance -> "C"},{{G, {1/3, 1}}, Locator, Appearance -> "G"}, {a,0.5, 2, 0.1}]
2、 五个调控点,三正两负:Manipulate[XY = {x, y};ContourPlot[ 1/Norm[XY - A] + 1/Norm[XY - B] + 1/Norm[XY - c] - 1/Norm[XY - d] - 1/Norm[XY - G] == a, {x, -1, 2}, {y, -1, 2}], {{A, {0, 0}}, Locator, Appearance -> "A"}, {{B, {1/2, 1/3}}, Locator, Appearance -> "B"}, {{c, {1, 1/5}}, Locator, Appearance -> "C"}, {{d, {1, 1/2}}, Locator, Appearance -> "D"}, {{G, {1/3, 1}}, Locator, Appearance -> "G"}, {a, 1.5, 2, 0.1}]
3、 三正三负的六点调控曲线:Manipulate[XY = {x巳呀屋饔, y};ContourPlot[ 1/Norm[XY - A] + 1/Norm[XY - B] + 1/Norm[X鳔柩寞泷Y - c] - 1/Norm[XY - d] - 1/Norm[XY - e] - 1/Norm[XY - G] == a, {x, -1, 2}, {y, -1, 2}], {{A, {0, 0}}, Locator, Appearance -> "A"}, {{B, {1/2, 1/3}}, Locator, Appearance -> "B"}, {{c, {1, 1/5}}, Locator, Appearance -> "C"}, {{d, {1, 1/2}}, Locator, Appearance -> "D"}, {{e, {1, 1}}, Locator, Appearance -> "E"}, {{G, {1/3, 1}}, Locator, Appearance -> "G"}, {a, 1.5, 2, 0.1}]