表示圆的一个函数,用参数方程画的曲线为什么与直角坐标方程画的不一样?
有一个圆用参数方程表示如下:$ x=(2 u^2 + 2 u + 6)/(u^2 + 1), y=(3 u^2 + 4 u + 1)/(u^2 + 1) $,用指令Eliminate[ ]消去参数 $ u $ 后可将其转换为直角坐标方程为:$ -y^2+4 y-15=x^2-8 x $。
但是用参数方程指令画出的圆,却与用隐函数指令画出的圆不一样。哪里出问题了? 是转换成的直角坐标方程不对呢,还是画图指令不对?
参数方程转换成直角坐标方程的程序代码如下:
Clear["Global`*"];
Eliminate[{x == (2 u^2 + 2 u + 6)/(u^2 + 1),
y == (3 u^2 + 4 u + 1)/(
u^2 + 1)}, {u}] (*已知 x、y 的参数方程,消去参数 u 求 x、y 间的关系*)
用参数方程指令画圆与用隐函数指令画圆,结果不一样:
Clear["Global`*"];
ParametricPlot[{(2 u^2 + 2 u + 6)/(u^2 + 1), (3 u^2 + 4 u + 1)/(
u^2 + 1)}, {u, -8, 8}]
ContourPlot[{ -y^2 + 4 y - 15 == x^2 - 8 x}, {x, 0,
8}, {y, -2, 6}, Axes -> True, Frame -> False]
上面两条指令运行结果如下 (用图片表示):
是不是两个图的坐标原点不同,导致了你的误判? 用 mathematica 的参数方程画图指令ParametricPlot []画出的圆,乍看好像是与用隐函数作图指令 ContourPlot []画出的圆不一样,其实是一样的。
参数方程画的坐标系是把纵轴画在x=2 处了,而隐函数作图画的坐标系是把纵轴画在 x=0的。 因为u的定义域是开区间, 少了一个无穷远点. u在无穷远的地方的时候,对应的是点 $(2,3)$ 的邻域 ,消元后是 又把无穷远点给补上去了.所以ContourPlot没问题.
ParametricPlot 的区间越大,要画的点越多,为了兼顾计算性能,软件会有省略算法, 所以看上去 ParametricPlot 函数也有问题, 不过我们可以通过加选项绕过去.
m = 1000; ParametricPlot[{(2 u^2 + 2 u + 6)/(u^2 + 1), (3 u^2 + 4 u +1)/(u^2 + 1)}, {u, -m, m}, PlotRange -> All, PlotPoints -> 500]
页:
[1]