- 注册时间
- 2007-12-27
- 最后登录
- 1970-1-1
- 威望
- 星
- 金币
- 枚
- 贡献
- 分
- 经验
- 点
- 鲜花
- 朵
- 魅力
- 点
- 上传
- 次
- 下载
- 次
- 积分
- 40348
- 在线时间
- 小时
|
楼主 |
发表于 2022-11-17 20:22:00
|
显示全部楼层
8#之11棵树5点圆的分析中,第一步使用带有u,v两个参数的10个点坐标,得出有额外三个五点圆的分组本质只有两组{ 0 3 4 }或{ 0 3 6 },其中编号0,3,4,6的五点圆分别经过点:
0: 1 2 6 9 10
3: 1 3 7 8 9
4: 1 4 5 8 10
6: 2 3 5 7 10
其中判断{0,3,4}是否合法对应的singular代码如下
- LIB "primdec.lib";
- LIB "solve.lib";
- ring r1=(0, I),(a,b,c,d,u,v),dp;
- minpoly=I^2+1;
- list n1=0,1,0;
- list n2=1,0,0;
- list n3=1,-1,0;
- list n4=u,-v,0;
- list n5=0,0,1;
- list n6=0,1,1;
- list n7=0,v,1;
- list n8=1,0,1;
- list n9=u,0,1;
- list n10=u*(1-v),-v*(1-u),u-v;
- list n11=a+b*I, c+d*I,1;
- list n12=a-b*I, c-d*I,1;
- list allnodes=n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12;
- proc inonecv(list nodes, list index)
- {
- matrix m[6][6];
- int kk;
- list n;
- for(kk=1;kk<=6;kk++){
- n=nodes[index[kk]];
- m[kk,1]=n[1]*n[1];
- m[kk,2]=n[1]*n[2];
- m[kk,3]=n[1]*n[3];
- m[kk,4]=n[2]*n[2];
- m[kk,5]=n[2]*n[3];
- m[kk,6]=n[3]*n[3];
- }
- poly p=det(m);
- return (p);
- }
- proc ptinline(list nodes, list index)
- {
- matrix m[3][3];
- int kk;
- list n;
- for(kk=1;kk<=3;kk++){
- n=nodes[index[kk]];
- m[kk,1]=n[1];
- m[kk,2]=n[2];
- m[kk,3]=n[3];
- }
- poly p=det(m);
- return (p);
- }
- list l1 = 1,2,6,9,11,12;
- poly f0=inonecv(allnodes,l1)*I;
- l1 = 1,2,6,10,11,12;
- poly f1=inonecv(allnodes,l1)*I;
- l1 = 1,3,7,8,11,12;
- poly f2=inonecv(allnodes,l1)*I;
- l1 = 1,3,7,9,11,12;
- poly f3=inonecv(allnodes,l1)*I;
- l1 = 1,4,5,8,11,12;
- poly f4=inonecv(allnodes,l1)*I;
- l1 = 1,4,5,10,11,12;
- poly f5=inonecv(allnodes,l1)*I;
- l1 = 2,3,5,7,11,12;
- poly f6=inonecv(allnodes,l1)*I;
- l1 = 2,3,5,10,11,12;
- poly f7=inonecv(allnodes,l1)*I;
- l1=1,11,12;
- poly g1=ptinline(allnodes,l1)*I;
- l1=2,11,12;
- poly g2=ptinline(allnodes,l1)*I;
- l1=3,11,12;
- poly g3=ptinline(allnodes,l1)*I;
- l1=4,11,12;
- poly g4=ptinline(allnodes,l1)*I;
- l1=5,11,12;
- poly g5=ptinline(allnodes,l1)*I;
- l1=6,11,12;
- poly g6=ptinline(allnodes,l1)*I;
- l1=7,11,12;
- poly g7=ptinline(allnodes,l1)*I;
- l1=8,11,12;
- poly g8=ptinline(allnodes,l1)*I;
- l1=9,11,12;
- poly g9=ptinline(allnodes,l1)*I;
- l1=10,11,12;
- poly g10=ptinline(allnodes,l1)*I;
- ideal i=f0,f1,f2,f3,f4,f5;
- ring r2 = 0, (a,b,c,d,u,v), dp;
- ideal i = fetch(r1,i);
- ideal g1=fetch(r1,g1);
- ideal g2=fetch(r1,g2);
- ideal g3=fetch(r1,g3);
- ideal g4=fetch(r1,g4);
- ideal g5=fetch(r1,g5);
- ideal g6=fetch(r1,g6);
- ideal g7=fetch(r1,g7);
- ideal g8=fetch(r1,g8);
- ideal g9=fetch(r1,g9);
- ideal g10=fetch(r1,g10);
- ideal si=std(i);
- ideal j=u;
- ideal k=sat(si,j)[1];
- ideal sk=std(k);
- j=1-u;
- k=sat(sk,j)[1];
- sk=std(k);
- j=v;
- k=sat(sk,j)[1];
- sk=std(k);
- j=1-v;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g1;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g2;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g3;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g4;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g5;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g6;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g7;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g8;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g9;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g10;
- k=sat(sk,j)[1];
- sk=std(k);
- primdecGTZ(sk);
复制代码
结果判断没有合法解。类似可以判断{0,3,6}组合也无解。
类似可以判断下面4个参数u,v,w,t的情况中添加额外四个圆点六种方案也都不合法,比如
- LIB "primdec.lib";
- LIB "solve.lib";
- ring r1=(0, I),(a,b,c,d,u,v,w,t),dp;
- minpoly=I^2+1;
- list n1=0,1,0;
- list n2=1,0,0;
- list n3=1,-1,0;
- list n4=0,0,1;
- list n5=0,1,1;
- list n6=1,0,0;
- list n7=u,0,1;
- list n8=0,v,1;
- list n9=1,w,0;
- list n10=t,1-t,1;
- list n11=a+b*I, c+d*I,1;
- list n12=a-b*I, c-d*I,1;
- list allnodes=n1,n2,n3,n4,n5,n6,n7,n8,n9,n10,n11,n12;
- proc inonecv(list nodes, list index)
- {
- matrix m[6][6];
- int kk;
- list n;
- for(kk=1;kk<=6;kk++){
- n=nodes[index[kk]];
- m[kk,1]=n[1]*n[1];
- m[kk,2]=n[1]*n[2];
- m[kk,3]=n[1]*n[3];
- m[kk,4]=n[2]*n[2];
- m[kk,5]=n[2]*n[3];
- m[kk,6]=n[3]*n[3];
- }
- poly p=det(m);
- return (p);
- }
- proc ptinline(list nodes, list index)
- {
- matrix m[3][3];
- int kk;
- list n;
- for(kk=1;kk<=3;kk++){
- n=nodes[index[kk]];
- m[kk,1]=n[1];
- m[kk,2]=n[2];
- m[kk,3]=n[3];
- }
- poly p=det(m);
- return (p);
- }
- list l1 = 1,2,5,7,11,12;
- poly f0=inonecv(allnodes,l1)*I;
- l1 = 1,2,5,10,11,12;
- poly f1=inonecv(allnodes,l1)*I;
- l1 = 1,3,6,7,11,12;
- poly f2=inonecv(allnodes,l1)*I;
- l1 = 1,3,6,8,11,12;
- poly f3=inonecv(allnodes,l1)*I;
- l1 = 1,4,6,9,11,12;
- poly f4=inonecv(allnodes,l1)*I;
- l1 = 1,4,6,10,11,12;
- poly f5=inonecv(allnodes,l1)*I;
- l1 = 2,3,4,8,11,12;
- poly f6=inonecv(allnodes,l1)*I;
- l1 = 2,3,4,10,11,12;
- poly f7=inonecv(allnodes,l1)*I;
- l1=1,11,12;
- poly g1=ptinline(allnodes,l1)*I;
- l1=2,11,12;
- poly g2=ptinline(allnodes,l1)*I;
- l1=3,11,12;
- poly g3=ptinline(allnodes,l1)*I;
- l1=4,11,12;
- poly g4=ptinline(allnodes,l1)*I;
- l1=5,11,12;
- poly g5=ptinline(allnodes,l1)*I;
- l1=6,11,12;
- poly g6=ptinline(allnodes,l1)*I;
- l1=7,11,12;
- poly g7=ptinline(allnodes,l1)*I;
- l1=8,11,12;
- poly g8=ptinline(allnodes,l1)*I;
- l1=9,11,12;
- poly g9=ptinline(allnodes,l1)*I;
- l1=10,11,12;
- poly g10=ptinline(allnodes,l1)*I;
- ideal i=f0,f1,f2,f3,f4,f5;
- ring r2 = 0, (a,b,c,d,u,v,w,t), dp;
- ideal i = fetch(r1,i);
- ideal g1=fetch(r1,g1);
- ideal g2=fetch(r1,g2);
- ideal g3=fetch(r1,g3);
- ideal g4=fetch(r1,g4);
- ideal g5=fetch(r1,g5);
- ideal g6=fetch(r1,g6);
- ideal g7=fetch(r1,g7);
- ideal g8=fetch(r1,g8);
- ideal g9=fetch(r1,g9);
- ideal g10=fetch(r1,g10);
- ideal si=std(i);
- ideal j=u;
- ideal k=sat(si,j)[1];
- ideal sk=std(k);
- j=1-u;
- k=sat(sk,j)[1];
- sk=std(k);
- j=v;
- k=sat(sk,j)[1];
- sk=std(k);
- j=1-v;
- k=sat(sk,j)[1];
- sk=std(k);
- j=w+1;
- k=sat(sk,j)[1];
- sk=std(k);
- j=t;
- k=sat(sk,j)[1];
- sk=std(k);
- j=t-1;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g1;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g2;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g3;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g4;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g5;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g6;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g7;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g8;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g9;
- k=sat(sk,j)[1];
- sk=std(k);
- j=g10;
- k=sat(sk,j)[1];
- sk=std(k);
- primdecGTZ(sk);
复制代码
由此证实11棵树最多7个五点圆。
而如果上面第一种只有u,v参数的情况,我们只选择添加两个5点圆,比如0,3,类似可以解得余下方程组:
- sk[1]=2au-2av+uv-u
- sk[2]=2b2-ac+bd-cv-a+c+v-1
- sk[3]=2ab+bc+ad+dv-b-d
- sk[4]=2a2+ac-bd+cv-3a-c-v+1
- sk[5]=2av2+2cv2-uv2+2cu-2cv-uv-2v2+2v
- sk[6]=buv+dv2+du-dv
- sk[7]=c2v+d2v+2ac+c2+2bd+d2-2cv-2a-2c+v+1
- sk[8]=bcv-adv-bv+dv-d
- sk[9]=acv+bdv-av-cv+2a+c+v-1
- sk[10]=2bdu-2bdv-cuv-cu-2av+2uv
- sk[11]=c2u+d2u+4ac+2c2+4bd+2d2-2cu-2av-2cv+uv-2c+2v
- sk[12]=2bcu-2adv+duv+du+2dv-2d
- sk[13]=2cuv2-u2v2-2cv3+2cu2-4cuv-u2v+2cv2+2v3+2uv-2v2
- sk[14]=4bdv2+4d2v2+u2v2+2cv3+4d2u-2cu2-4d2v+6cuv+u2v-6cv2-2uv2-2v3-4cu+4cv+6v2-4v
- sk[15]=4d2uv2+u3v2-4d2v3+u2v3+2cv4+4d2u2-2cu3-8d2uv+4cu2v+u3v+4d2v2-2u2v2-4cv3-2uv3-2v4-2cu2-u2v+2cv2+4uv2+4v3-2uv-2v2
复制代码
注意Singular里面字母前面数字代表系数,后面数字代表次数。上面方程组有两个自由度。
比如我们再选择c=d=1/3, 得到
- _[1]=25v3-95v2-36v+36
- _[2]=5/2v2+u-17/2v-9
- _[3]=-5/18v2+b+11/9v+1/6
- _[4]=-5/36v2+a+7/36v-1/3
复制代码
也就是数值解可以选择v=0.47632461572285227543608130424376469084, u=12.481546384785437118405575634051153582, b=-0.68581754712139642299953098829561836771, a=0.27222648299049023659860171595375943733
对应点坐标变换后好象是
(1.2651042763125358432169555139283586806, 2.9304927124987981969697740611338608153)
(4.1955969888113340401867295750622194959,0)
(-1.5061713325111876948650033905853759639, 5.7017683213225217350517329656475954597)
(4.4452965980980473197203431907518874650, -0.24969960928671327953361361568966796906)
(0,0)
(2.3675384277147724563918695756235309161, 5.4841756832896847513845799983160657393)
(56.429119241634458991248792051197641893, 130.71264227509662302625362384640707406)
(100,0)
(4.5444116567977473682517073888540799490,0)
(6.6263282955992854329915791835128865358, 5.2449524632912784804196310649872410376)
但是由于有两个点坐标极大,不适合作图。
|
评分
-
参与人数 1 | 威望 +12 |
金币 +12 |
贡献 +12 |
经验 +12 |
鲜花 +12 |
收起
理由
|
wayne
| + 12 |
+ 12 |
+ 12 |
+ 12 |
+ 12 |
singular 也会啊 |
查看全部评分
|