最近在重看有限元相关的东西,结果在看到等参元这部分内容的时候发现了一个数学上的小问题,姑且拿出来水一帖。考虑下面这个参数方程:
base = DeleteCases[{-(1/4) (-1 + s) (-1 + t) (1 + s + t), -(1/
4) (1 + s) (-1 + s - t) (-1 + t), 1/4 (1 + s) (1 + t) (-1 + s + t),
1/4 (-1 + s) (1 + s - t) (1 + t),
1/2 (-1 + s^2) (-1 + t), -(1/2) (1 + s) (-1 + t^2), -(1/2) (-1 + s^2) (1 + t),
1/2 (-1 + s) (-1 + t^2)} /. t -> -1, 0][[{1, 3, 2}]]
(* {1/2 (-1 + s) s, 1 - s^2, 1/2 s (1 + s)} *)
这个方程有如下性质:s为-1时,第1项为1,其余项为0;s为0时,第2项为1,其余项为0;s为1时,第3项为1,其余项为0:
Table[%, {s, -1, 1}]
(* {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}} *)
不难意识到,利用这个性质,我们可以轻易构造出一条过平面内任意三点的曲线。好了,(至少对我这学渣而言)神奇的事来了:稍加尝试我们会发现,这条曲线的方程可以写成不含参的隐函数形式,并且它居然还是根抛物线(这里我们忽略退化的情形):
coord = ({Subscript[x, #], Subscript[y, #]} & /@ Range[3]);
eq = Collect[Expand@Eliminate[base . coord == {X, Y}, s], {X Y, X, Y}, Simplify]
Cases[eq,
a_. X^2 + b_. X Y + c_. Y^2 + d__ :> b^2 - 4 a c, \[Infinity]] // Simplify
(* {0} *)
现在问题来了:我们知道,要在平面内确定一条一般化的抛物线应该需要5个方程(a X^2 + b X Y + c Y^2 + d X + e Y + f ==0, b^2 - 4 a c == 0),但我们确定这条曲线只用了3个点,这说明上述构造过程还隐含了2个限制,这两个限制是啥?有没有简洁直观的表述?
base = DeleteCases[{-(1/4) (-1 + s) (-1 + t) (1 + s + t), -(1/
4) (1 + s) (-1 + s - t) (-1 + t), 1/4 (1 + s) (1 + t) (-1 + s + t),
1/4 (-1 + s) (1 + s - t) (1 + t),
1/2 (-1 + s^2) (-1 + t), -(1/2) (1 + s) (-1 + t^2), -(1/2) (-1 + s^2) (1 + t),
1/2 (-1 + s) (-1 + t^2)} /. t -> -1, 0][[{1, 3, 2}]]
(* {1/2 (-1 + s) s, 1 - s^2, 1/2 s (1 + s)} *)
这个方程有如下性质:s为-1时,第1项为1,其余项为0;s为0时,第2项为1,其余项为0;s为1时,第3项为1,其余项为0:
Table[%, {s, -1, 1}]
(* {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}} *)
不难意识到,利用这个性质,我们可以轻易构造出一条过平面内任意三点的曲线。好了,(至少对我这学渣而言)神奇的事来了:稍加尝试我们会发现,这条曲线的方程可以写成不含参的隐函数形式,并且它居然还是根抛物线(这里我们忽略退化的情形):
coord = ({Subscript[x, #], Subscript[y, #]} & /@ Range[3]);
eq = Collect[Expand@Eliminate[base . coord == {X, Y}, s], {X Y, X, Y}, Simplify]
Cases[eq,
a_. X^2 + b_. X Y + c_. Y^2 + d__ :> b^2 - 4 a c, \[Infinity]] // Simplify
(* {0} *)
现在问题来了:我们知道,要在平面内确定一条一般化的抛物线应该需要5个方程(a X^2 + b X Y + c Y^2 + d X + e Y + f ==0, b^2 - 4 a c == 0),但我们确定这条曲线只用了3个点,这说明上述构造过程还隐含了2个限制,这两个限制是啥?有没有简洁直观的表述?