多语言展示
当前在线:1364今日阅读:39今日分享:10

细致了解三焦点曲线(一):等腰直角情形

这里讲述的是,以等腰直角三角形的三个顶点为焦点的三焦点曲线。        简单起见,又不失一般性,可以设等腰直角三角形为△ABC,三个顶点分别是:A(0,0)、B(0,1)、C(1,1)。平面上的动点P(x,y),满足PA+PB+PC=a,P的轨迹就是一条三焦点曲线,记为Ω(a)。
工具/原料
1

电脑

2

Mathematica(8.0以上版本)

方法/步骤
1

Ω(2)的形状——桃仁        用Show命令把三个点(0,0)、(0,1)、(1,1)、Ω(2)画在同一个图里,代码如下:Show[Graphics[Point[{0, 0}]], Graphics[Point[{1, 1}]],  Graphics[Point[{0, 1}]], ContourPlot[  Sqrt[(x - 1)^2 + (y - 1)^2] + Sqrt[x^2 + y^2] +     Sqrt[x^2 + (y - 1)^2] == 2, {x, 0, 1}, {y, 0, 1}]]        Ω(2)有一个尖点位于B(0,1),形状像个桃仁!

2

Ω(2.136)——鼓起来的正三角形        代码:Show[Graphics[Point[{0, 0}]], Graphics[Point[{1, 1}]],  Graphics[Point[{0, 1}]], ContourPlot[  Sqrt[(x - 1)^2 + (y - 1)^2] + Sqrt[x^2 + y^2] +     Sqrt[x^2 + (y - 1)^2] == 2.136, {x, 0, 1}, {y, 0, 1}]]        Ω(2.136)把点B围在里面了,而A、C留在外面。看看,像不像因为膨胀而变形的正三角形?

3

Ω(1 + Sqrt[2])——有两个尖角        代码:Show[Graphics[Point[{0, 0}]], Graphics[Point[{1, 1}]],  Graphics[Point[{0, 1}]], ContourPlot[  Sqrt[(x - 1)^2 + (y - 1)^2] + Sqrt[x^2 + y^2] +     Sqrt[x^2 + (y - 1)^2] == 1 + Sqrt[2], {x, -1, 1}, {y, 0, 2}]]        Ω(1 + Sqrt[2])的两个尖角分别位于A点和C点处。        结合步骤一,作者发现,当曲线Ω(a)经过焦点时,会发生突变,不再光滑。不知道这是不是必然的!

4

Ω(2.569)——蒸好的馒头        代码:Show[Graphics[Point[{0, 0}]], Graphics[Point[{1, 1}]],  Graphics[Point[{0, 1}]], ContourPlot[  Sqrt[(x - 1)^2 + (y - 1)^2] + Sqrt[x^2 + y^2] +     Sqrt[x^2 + (y - 1)^2] == 2.569, {x, -1, 2}, {y, -1, 2}]]        三个焦点都在曲线里面了。        你看看它像不像一个馒头?        注意看步骤一、二、三、四,作图区域发生变化了。

5

综合比较上面四幅图        复杂的代码,是不被提倡的,因为这不仅输入费时,而且运行慢。尽量用简单的代码:Show[Graphics[Point[{0, 0}]], Graphics[Point[{1, 1}]],  Graphics[Point[{0, 1}]], Table[ContourPlot[   Sqrt[(x - 1)^2 + (y - 1)^2] + Sqrt[x^2 + y^2] +      Sqrt[x^2 + (y - 1)^2] == a, {x, -0.6, 1.3}, {y, -0.4, 1.5}],  {a, {2, 2.136, 1 + Sqrt[2], 2.569}}]]        运行一下,就可以比较了。        注意作图区域,似乎不能够完全显示图形,但是图形却都显示的很完整。怎么回事呢?请自己思考!

6

更进一步        把A、B、C、a从1.93以0.009为间隔到2.59的图像,画在同一幅图里加以比较。        代码:Show[Graphics[Point[{0, 0}]], Graphics[Point[{1, 1}]],  Graphics[Point[{0, 1}]],  Table[ContourPlot[   Sqrt[(x - 1)^2 + (y - 1)^2] + Sqrt[x^2 + y^2] +      Sqrt[x^2 + (y - 1)^2] == a, {x, -0.6, 1.3}, {y, -0.4, 1.5},    ContourLabels -> True], {a, 1.93, 2.59, 0.009}]]        慎入!如果你有密集恐惧症!        a越大,图形的密度越大。        当曲线慢慢靠近A、C时,慢慢的显出了尖点。

7

上面图中的中心区域的曲线密度有点稀疏,单独拿出来,以0.001为步长,重新画图:Show[Graphics[Point[{0, 0}]], Graphics[Point[{1, 1}]],  Graphics[Point[{0, 1}]],  Table[ContourPlot[   Sqrt[(x - 1)^2 + (y - 1)^2] + Sqrt[x^2 + y^2] +      Sqrt[x^2 + (y - 1)^2] == a, {x, 0, 1}, {y, 0, 1},    ContourLabels -> True], {a, 1.93, 2, 0.001}]]        运行以后,发现在这种情况下,当a越小,Mathematica越不能够很好的画出它的图形。

8

于是,单独分开画图,看看当a趋近最小值的时候,能不能画出来?        代码:(请自行给a赋予具体的数值,在1.93和2.0之间,慢慢趋向于最小值)ContourPlot[ Sqrt[(x - 1)^2 + (y - 1)^2] + Sqrt[(x - 0)^2 + (y - 0)^2] +    Sqrt[x^2 + (y - 1)^2] == a, {x, 0, 0.5}, {y, 0.5, 1}]        发现当a=1.932时,Mathematica已经不能精确地作图了!        这大概是Mathematica的一个缺点吧!

9

人机互动        把a的数值限制在1 .93到2 .59之间,变换速率是0 .001.这样的话,如果导出为动态图,那么帧数=((2.59-1.93)/0.001)=660.如果你想用Mathematica把这个动态图导出来,请参考《怎么用Mathematica制作动态图片》。        互动程序的代码如下:Manipulate[ ContourPlot[  Sqrt[(x - 1)^2 + (y - 1)^2] + Sqrt[(x - 0)^2 + (y - 0)^2] +     Sqrt[x^2 + (y - 1)^2] == a, {x, -1, 2}, {y, -1, 2}], {a, 1.93,   2.59, 0.001}]        拖动滑块到a=2,图形像个桃种;a=2.136,图形像个膨胀变形的正三角形;a=2.398,图形好像出现了两个尖尖角,不光滑了;a=2.569,图形好像个馒头;............。

10

a的最小值        事实上,当a最小,Ω(a)退化成一个点,没错,就是△ABC的Fermat点。

11

3D状态下的三焦点曲面初探        仍旧以A(0,0,0)、B(0,1,0)、C(1,1,0)为焦点,a=2。        简单的一个代码:ContourPlot3D[ Sqrt[(x - 1)^2 + (y - 1)^2 + z^2] + Sqrt[x^2 + y^2 + z^2] +    Sqrt[x^2 + (y - 1)^2 + z^2] == 2, {x, 0, 1}, {y, 0, 1}, {z, -0.5,   0.5}]        好像一个水滴。

12

留个问题        用代数方法,求出下式的最小值!

注意事项
1

用代数方法求a的最小值,应该不是容易的事!

2

不知道Mathematica能不能求出a的最小值!

推荐信息