用在线的Macaulay2把曲线参数方程变成隐函数形式

目的

希望把如下曲线的参数方程变成隐函数 F(x,y)=0 形式:

{x=y=9sin(2t)5sin(3t)9cos(2t)5cos(3t)

这个就是常被拿来说事的五角星形状的曲线, 就不单独画了。

实现

有理参数方程到隐函数形式的 Implicitization 问题在代数几何里已经解决得很漂亮了。

方法和原理参考文献 如果无法打开,可以到资源区下载

所以, 只须把原始问题转化为有理参数方程就可以套用现成的办法鸟.

有理化

先把上面的三角函数形式参数方程变成有理函数形式,万能公式(这个在英语中居然是 维斯特拉斯代换 Weierstrass substitution)妥妥的:

x=y=2t(3t4+50t233)(t2+1)32(7t660t4+15t2+2)(t2+1)3

用Macaulay2 隐函数化

计算工具: 点击在浏览器中打开Macaulay2在线版

可以看到分左右两栏的界面,左侧是帮助和提示,右侧是输入输出窗口。

学习这个软件的图书

输入如下命令:

R=QQ[s,t,x,y,z,MonomialOrder=>Eliminate 2]
I=ideal(x-2*s*t*(3*t^4+50*t^2*s^2-33*s^4),y-2*(7*t^6-60*t^4*s^2+15*t^2*s^4+2*s^6),z-(t^2+s^2)^3)
gens gb I

大致是:
1. 定义一个多项式环;
2. 基于曲线的参数方程,生成多项式环的一个理想;
3. 求该理想的Groebner基,并消去 s,t ,

取其中的输出:

o6 = 625x6+1875x4y2+1875x2y4+625y6-182250x4yz+364500x2y3z-36450y5z+585816x4z2+1171632x2y2z2+585816y4z2-41620992x2z4-41620992y2z4+550731776z6

去齐次化(让 z=1 代入),并改写成数学公式形式就得到了:

F(x,y)==625x6+1875x4y2+1875x2y4+625y6182250x4y+364500x2y336450y5+585816x4+1171632x2y2+585816y441620992x241620992y2+550731776625(x2+y2)336450y(5x410x2y2+y4)+585816(x2+y2)241620992(x2+y2)+550731776

CSDN-MarkDown长的数学公式不能自动wrap, 比stackexchange逊色了

让人郁闷的是, 如果用Mathematica来做, 只须一行代码即可搞定:

GroebnerBasis[Thread[{x,y}=={2 t (3 t^4+50 t^2-33)/(1 + t^2)^3, 2(7 t^6-60 t^4+15 t^2+2)/(1+t^2)^3}], {x, y},t]

Eliminate[Thread[{x, y} == {2 t (3 t^4 + 50 t^2 - 33)/(1 + t^2)^3, 2 (7 t^6 - 60 t^4 + 15 t^2 + 2)/(1 + t^2)^3}], t]

本来想推销Macaulay2自由开源, 又替Wolfram白白安利了一次。

结果印证

用Mathematica画出来:

ContourPlot[625x^6+1875x^4y^2+1875x^2y^4+625y^6-182250x^4y+364500x^2y^3-36450y^5+585816x^4+1171632x^2y^2+585816y^4-41620992x^2-41620992y^2+550731776==0,{x,-15,15},{y,-15,15}]

这里写图片描述

这就验证了计算结果是正确滴。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值