用Mathematica处理多点调控曲线

2025-10-31 19:21:13

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]]

用Mathematica处理多点调控曲线

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]]]

用Mathematica处理多点调控曲线

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}]]

用Mathematica处理多点调控曲线

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}]]

用Mathematica处理多点调控曲线

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}]

用Mathematica处理多点调控曲线

用Mathematica处理多点调控曲线

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。

用Mathematica处理多点调控曲线

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}]

用Mathematica处理多点调控曲线

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}]

用Mathematica处理多点调控曲线

用Mathematica处理多点调控曲线

用Mathematica处理多点调控曲线

4、        把A、B、G变成定位器,便于移动A、B、G的相对位置(在移动的过程中,坐标也发生变化)。

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}]

        和

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}]

用Mathematica处理多点调控曲线

用Mathematica处理多点调控曲线

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}]

用Mathematica处理多点调控曲线

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}]

用Mathematica处理多点调控曲线

3、        三正三负的六点调控曲线:

Manipulate[XY = {x, y};

 ContourPlot[

  1/Norm[XY - A] + 1/Norm[XY - B] + 1/Norm[XY - 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}]

用Mathematica处理多点调控曲线

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢