找回密码
 欢迎注册
楼主: 0→∞

[求助] 果树问题讨论:这两个问题等价么?

  [复制链接]
发表于 2020-1-6 22:53:42 | 显示全部楼层
18棵17行结果:

初始数据:

[[B, C, E, I], [A, F, G, I], [B, D, G, K], [A, E, H, K], [E, G, J, L], [D, H, I, M], [A, C, J, M], [C, F, K, N], [A, D, L, N], [B, F, L, O], [B, H, J, P], [C, D, O, P], [E, F, M, Q], [G, H, N, Q], [I, J, O, R], [K, L, P, R], [A, B, Q, R]]

[[A, 0, 1, 1], [B, 1, 0, 0], [C, 1, 1/2, 0], [D, 1, 0, 1], [E, 1, 1, 0], [F, 0, 1/2, 1], [G, 0, 0, 1], [H, 1, 2, 1], [I, 0, 1, 0], [J, 2, 2, 1], [K, -1, 0, 1], [L, 1/2, 1/2, 1], [M, 1, 3/2, 1], [N, 1/3, 2/3, 1], [O, 2, 1/2, 1], [P, 5, 2, 1], [Q, 1/2, 1, 1], [R, 2, 1, 1]]

变换基点:

A[0, 1, 1]-->[0, sqrt(3)/3, 1]
I[0, 1, 0]--> [-1/2, -sqrt(3)/6, 1]
K[-1, 0, 1]--> [1/2, -sqrt(3)/6, 1]
Q[1/2, 1, 1]--> [0, 0, 1]

变换矩阵
[[0, -1/3, 1/3], [4/27*sqrt(3), -1/9*sqrt(3), 1/27*sqrt(3)], [-14/9, 2/3, -8/9]]

变换后坐标

[0, sqrt(3)/3, A], [0, -(2*sqrt(3))/21, B], [3/22, -(5*sqrt(3))/66, C], [-3/22, -(5*sqrt(3))/66, D], [3/8, -sqrt(3)/24, E], [-3/10, sqrt(3)/30, F], [-3/8, -sqrt(3)/24, G], [3/10, sqrt(3)/30, H], [-1/2, -sqrt(3)/6, I], [1/8, -sqrt(3)/24, J], [1/2, -sqrt(3)/6, K], [-1/8, -sqrt(3)/24, L], [3/26, -sqrt(3)/78, M], [-3/26, -sqrt(3)/78, N], [-1/22, -(5*sqrt(3))/66, O], [1/22, -(5*sqrt(3))/66, P], [0, 0, Q], [0, -sqrt(3)/15, R]

画图得到

1817-1.gif

点评

赞  发表于 2020-1-7 13:03
期待mathe 直接算出变换基点+对称正k边形,下面的例子说明他已经实现了这个功能~你可以集成一个作图程序,自动出图哈,期待中!  发表于 2020-1-7 12:03
大致思路和mathe的原理差不多,但我是靠直觉和观察+调整试出来的,mathe现在是算出来的更直接~  发表于 2020-1-7 11:59
效果挺不错的,变换基点 是怎么选的  发表于 2020-1-7 10:36
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-1-6 22:58:34 | 显示全部楼层
18棵17行结果:

初始数据:

[[B, C, E, I], [A, F, G, I], [B, D, G, K], [A, E, H, K], [E, G, J, L], [D, H, I, M], [A, C, J, M], [C, F, K, N], [A, D, L, N], [B, F, L, O], [B, H, J, P], [C, D, O, P], [E, F, M, Q], [G, H, N, Q], [I, J, O, R], [K, L, P, R], [A, B, Q, R]]

[[A, 0, 1, 1], [B, 1, 0, 0], [C, 1, 1/2, 0], [D, 1, 0, 1], [E, 1, 1, 0], [F, 0, 1/2, 1], [G, 0, 0, 1], [H, 1, 2, 1], [I, 0, 1, 0], [J, 2, 2, 1], [K, -1, 0, 1], [L, 1/2, 1/2, 1], [M, 1, 3/2, 1], [N, 1/3, 2/3, 1], [O, 2, 1/2, 1], [P, 5, 2, 1], [Q, 1/2, 1, 1], [R, 2, 1, 1]]

变换基点

B[1, 0, 0]-->[0, sqrt(3)/3, 1],
I[0, 1, 0]--> [-1/2, -sqrt(3)/6, 1],
K[-1, 0, 1]--> [1/2, -sqrt(3)/6, 1],
R[2, 1, 1]-->[0, 0, 1]

变换矩阵
[[0, 1/6, -1/6], [-1/27*sqrt(3), 1/18*sqrt(3), 1/54*sqrt(3)], [-1/9, -1/3, -4/9]]

变换后坐标

[0, -(2*sqrt(3))/21, A], [0, sqrt(3)/3, B], [-3/10, sqrt(3)/30, C], [3/10, sqrt(3)/30, D], [-3/8, -sqrt(3)/24, E], [3/22, -(5*sqrt(3))/66, F], [3/8, -sqrt(3)/24, G], [-3/22, -(5*sqrt(3))/66, H], [-1/2, -sqrt(3)/6, I], [-1/8, -sqrt(3)/24, J], [1/2, -sqrt(3)/6, K], [1/8, -sqrt(3)/24, L], [-3/38, -(7*sqrt(3))/114, M], [3/38, -(7*sqrt(3))/114, N], [1/10, sqrt(3)/30, O], [-1/10, sqrt(3)/30, P], [0, -sqrt(3)/15, Q], [0, 0, R]

画图得到

1817-2.gif
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-1-6 23:03:15 | 显示全部楼层
18棵17行结果:

初始数据:

[[B, C, I, N], [D, E, I, K], [A, F, J, K], [B, G, K, L], [A, H, I, M], [C, G, J, M], [D, F, L, N], [B, D, J, O], [A, E, L, O], [B, E, M, P], [A, G, N, P], [C, H, O, P], [A, C, D, Q], [B, F, H, Q], [C, E, F, R], [D, G, H, R], [I, J, Q, R]]

[[A, -1, 1, 1], [B, 0, 1, 0], [C, 1, 0, 0], [D, 0, 1, 1], [E, -2, 2, 1], [F, 1, 2, 1], [G, -1/2, 3/2, 1], [H, 1, 0, 1], [I, 1, -1/2, 0], [J, 0, 3/2, 1], [K, -1/2, 5/4, 1], [L, -1/2, 1/2, 1], [M, -2, 3/2, 1], [N, 1, 1, 0], [O, 0, 0, 1], [P, -2, 0, 1], [Q, 1, 1, 1], [R, -1, 2, 1]]

变换基点
C[1, 0, 0]-->[0, sqrt(3)/3, 1],
E[-2, 2, 1]-->[-1/2, -sqrt(3)/6, 1],
N[1, 1, 0]-->[1/2, -sqrt(3)/6, 1],
D[0, 1, 1]--> [0, 0, 1]

变换矩阵
[[0, 1/6, -1/6], [-1/27*sqrt(3), -1/54*sqrt(3), 1/54*sqrt(3)], [-1/9, 4/9, -13/9]]

变换后坐标
[0, -sqrt(3)/24, A], [3/8, -sqrt(3)/24, B], [0, sqrt(3)/3, C], [0, 0, D], [-1/2, -sqrt(3)/6, E], [-1/4, sqrt(3)/12, F], [-3/26, -sqrt(3)/78, G], [3/28, sqrt(3)/84, H], [1/4, sqrt(3)/12, I], [-3/28, sqrt(3)/84, J], [-1/20, -sqrt(3)/60, K], [1/14, -sqrt(3)/42, L], [-3/20, -(7*sqrt(3))/60, M], [1/2, -sqrt(3)/6, N], [3/26, -sqrt(3)/78, O], [3/22, -(5*sqrt(3))/66, P], [0, sqrt(3)/30, Q], [-3/8, -sqrt(3)/24, R]

画图得到

1817-3-1.gif
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-1-7 07:51:00 | 显示全部楼层
下面这个代码可以对于一个输入的果树,输出所有的同构变换
代码需要使用nauty库,可以从 http://pallini.di.uniroma1.it/ 下载
  1. #include <time.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <sys/stat.h>
  5. #include <sys/types.h>
  6. #include <algorithm>
  7. #include <assert.h>
  8. #define MAXN 128
  9. #include "nauty/naugroup.h"
  10. #include "nauty/nauty.h"

  11. #include <string.h>
  12. #include <ctype.h>
  13. #include <vector>
  14. #include <set>


  15. const int MAX_NODE_NUM=24;

  16. const int MAX_EDGE_NUM=(((MAX_NODE_NUM-1)/2)*MAX_NODE_NUM)/3;
  17. const int NODES_PER_EDGE=4;
  18. const int NUM_NODES=MAX_NODE_NUM;
  19. const int MAX_TOTAL_EDGES=MAX_EDGE_NUM;


  20. char chessboard[NUM_NODES][NUM_NODES];
  21. char used[NUM_NODES];
  22. char line_buf[MAX_TOTAL_EDGES][NODES_PER_EDGE];
  23. char line_buf2[MAX_TOTAL_EDGES][NODES_PER_EDGE];
  24. int line_count;
  25. int eq_count;


  26. char line[1024];//keep parent input here

  27. void sort_edge(char buf[NODES_PER_EDGE])
  28. {
  29.     int i,j;
  30.     for(i=0;i<NODES_PER_EDGE;i++)for(j=i+1;j<NODES_PER_EDGE;j++){
  31.         if(buf[i]>buf[j]&&buf[j]>=0){
  32.             char tmp=buf[i];buf[i]=buf[j];buf[j]=tmp;
  33.         }
  34.     }
  35. }

  36. struct Perm{
  37.     int data[NUM_NODES];
  38.     Perm(){int i;for(i=0;i<NUM_NODES;i++)data[i]=0;}
  39. };

  40. int cur_nodes;
  41. std::vector<Perm> allperms;

  42. void anaperm()
  43. {
  44.     std::set<int> curindexes;
  45.     int i,j;
  46.     int mask[NUM_NODES];
  47.     printf("Dump perm:\n");
  48.     memset(mask,-1,sizeof(mask));
  49.     for(i=0;i<cur_nodes;i++){
  50.        if(mask[i]>=0)continue;
  51.        int newindex=0;
  52.        curindexes.clear();
  53.        for(j=0;j<allperms.size();j++){
  54.           int t = allperms[j].data[i];
  55.           curindexes.insert(t);
  56.        }
  57.        std::set<int>::iterator it;
  58.        for(it=curindexes.begin();it!=curindexes.end();++it){
  59.           mask[*it]=newindex++;
  60.        }
  61.        printf("P<%d>\n",(int)curindexes.size());
  62.        for(j=0;j<allperms.size();j++){
  63.           std::set<int>::iterator it;
  64.           printf("\t");
  65.           for(it=curindexes.begin();it!=curindexes.end();++it){
  66.               int ind = allperms[j].data[*it];
  67.               printf("%c",'A'+ind);
  68.           }
  69.           printf("\n");
  70.        }
  71.        printf("\n");
  72.     }
  73. }

  74. void writeautom(int *p, int n)
  75. {
  76.     int i;
  77.     int node_find=0;
  78.     Perm perm;
  79.     int j=0;
  80.     for(i=0;i<n;++i){
  81.            if(p[i]<cur_nodes){
  82.                node_find=1;
  83.                perm.data[j++]=p[i];
  84.            }else{
  85.                node_find=1;
  86.            }
  87.     }
  88.     allperms.push_back(perm);
  89. }

  90. void output_cur(int nodes)
  91. {
  92.         graph g1[MAXN*MAXM], g2[MAXN*MAXM];
  93.         int orbits[MAXN];
  94.         EMPTYGRAPH(g1, MAXM, line_count+nodes);
  95.         grouprec *group;
  96.         int i,j;
  97.         int degree[MAXN];
  98.         memset(degree,0,sizeof(degree));
  99.         for(i=0;i<line_count;i++){
  100.             for(j=0;j<NODES_PER_EDGE;j++){
  101.                  if(line_buf[i][j]>=0)degree[line_buf[i][j]]++;
  102.             }
  103.         }
  104.         for(i=0;i<line_count;i++){
  105.             for(j=0;j<NODES_PER_EDGE;j++){
  106.                 if(line_buf[i][j]>=0){
  107.                      ADDONEEDGE(g1, line_buf[i][j], nodes+i,MAXM);
  108.                 }
  109.             }
  110.         }
  111.         cur_nodes=nodes;
  112.         int lab[MAXN], ptn[MAXN], lab2[MAXN];
  113.         static DEFAULTOPTIONS_GRAPH(options);
  114.         statsblk stats;
  115.         memset(&stats, 0, sizeof(stats));
  116.         EMPTYGRAPH(g2, MAXM, line_count+nodes);
  117.         int m = MAXM, n = line_count+nodes;
  118.         options.getcanon = TRUE;
  119.         options.defaultptn = FALSE;
  120.         options.userautomproc = groupautomproc;
  121.         options.userlevelproc = grouplevelproc;
  122.         for(i=0;i<n;++i){lab[i]=i;ptn[i]=1;}
  123.         ptn[nodes-1]=0;ptn[n-1]=0;
  124.         allperms.clear();
  125.         densenauty(g1, lab, ptn, orbits, &options, &stats, m, n, g2);
  126.         group = groupptr(FALSE);
  127.         makecosetreps(group);
  128.         allgroup(group, writeautom);
  129.         anaperm();
  130. }

  131. void init()
  132. {
  133.     int i,j;
  134.     line_count=0;eq_count=0;
  135.     for(i=0;i<NUM_NODES;i++)for(j=0;j<NUM_NODES;j++){
  136.         chessboard[i][j]=-1;
  137.     }
  138.     for(i=0;i<NUM_NODES;i++)used[i]=0;
  139. }

  140. char test(int x,int y,int z, int w)
  141. {
  142.     if(chessboard[x][y]>=0||chessboard[x][z]>=0||
  143.             chessboard[x][w]>=0||chessboard[y][z]>=0||
  144.             chessboard[y][w]>=0||chessboard[z][w]>=0)
  145.         return 0;
  146.     return 1;
  147. }

  148. void set_to(int x,int y, int z,int w, int value)
  149. {
  150.   if(w>=0){
  151.     chessboard[x][y]=chessboard[x][z]=chessboard[x][w]=
  152.         chessboard[y][x]=chessboard[y][z]=chessboard[y][w]=
  153.         chessboard[z][x]=chessboard[z][y]=chessboard[z][w]=
  154.         chessboard[w][x]=chessboard[w][y]=chessboard[w][z]=value;
  155.   }else{
  156.     chessboard[x][y]=chessboard[x][z]=
  157.         chessboard[y][x]=chessboard[y][z]=
  158.         chessboard[z][x]=chessboard[z][y]=value;
  159.   }
  160. }

  161. void setv(int x,int y,int z,int w)
  162. {
  163.     if(w<0)w=-1;
  164.     set_to(x,y,z,w,line_count);
  165.     used[x]++;
  166.     used[y]++;
  167.     used[z]++;
  168.     if(w>=0)used[w]++;
  169.     line_buf[line_count][0]=x;
  170.     line_buf[line_count][1]=y;
  171.     line_buf[line_count][2]=z;
  172.     line_buf[line_count][3]=w;
  173.     line_count++;
  174.     if(w>=0)eq_count+=2;else eq_count++;
  175. }


  176. void process_one_line(char *input)
  177. {
  178.     int i;
  179.     init();
  180.     i=strlen(input);
  181.     while(i>0&&input[i-1]!=' '&&(input[i-1]<'A'||input[i-1]>'Z'))i--;
  182.     if(i<=0)return;
  183.     input[i]='\0';
  184.     if(i%4!=0){
  185.         fprintf(stderr,"Invalid input %s\n",input);
  186.         return;
  187.     }
  188.     int bc=i/4;
  189.     int maxnode=0;
  190.     for(i=0;i<bc;i++){
  191.         setv(input[i*4]-'A',input[i*4+1]-'A',input[i*4+2]-'A',input[i*4+3]-'A');
  192.     }
  193.     for(i=0;i<bc*4;i++){
  194.         if(input[i]-'A'>maxnode)maxnode=input[i]-'A';
  195.     }
  196.     printf("%s\n",input);
  197.     output_cur(maxnode+1);
  198. }


  199. int main()
  200. {
  201.     int lc=0;
  202.     int start=time(NULL);
  203.     while(fgets(line,1024,stdin)){
  204.         if(line[0]<'A'||line[0]>'Z')
  205.             continue;
  206.         process_one_line(line);
  207.     }
  208.     return 0;
  209. }
复制代码


以671#第一个16棵15行数据为例子:我们可以输入
BCHIADGJBEGKDFIKAFHLCEJLCFGMDEHMAEINBFJNACKOBDLOABMPCDNPEFOP
代码输出:
字母ABCDEF之前的置换和余下10个字母之间的置换,两个都是120行,说明这个自同构群是120阶的。
我们感兴趣的是其中素数阶自同构变换。而120的素因子有5,3,2,
所以我们需要寻找其中5阶,3阶和2阶自同构变换,看是否可以对应相应的旋转变换或对称变换(2阶的才可能对称)。
比如P<6>前几项为:
        ABCDEF
        ABEFCD
        CDABFE
        CDFEAB
        ECADBF
        ACFEBD
        DCEFBA
        EFABDC
        BFECDA
        BDEFAC
第一行代表恒等变换,所有元素都不变。
第二行代表A,B保持不变,CE互换,DF互换,可能是以AB为对称轴的对称变换,也可能是将A,B映射到无穷远直线后的中心对称变换。
第三行代表A,C互换,B,D互换和E,F互换,同样可能是轴对称或中心对称变换
第四行代表A->C->F->B->D->E->A,是一个6阶自同构变换,我们可以测试这个变换的平方变换,即A->F->D->A 以及C->B->E->C探测这是否为一个3阶旋转变换
第五行D,F保持不变,A->E->B->C->A是一个四阶自同构,由于有两个不动点,无法变换为90度旋转变换,但是可以探测其平方变换是否可以变换为轴对称
第六行A保持不变,B->C->F->D->E->B, 是一个五阶变换,我们需要探测其是否为5阶旋转变换。
   为此,我们可以将B,C,F,D分别变换为正五边形前四个顶点的坐标。
计算得出变换阵为
S=[-0.80901699437494742410229341718281905886 2.6180339887498948482045868343656381177 -0.50000000000000000000000000000000000000]

[-2.4898982848827802734015846213978370554 0 1.5388417685876267012851452880184549120]

[-2.6180339887498948482045868343656381177 2.6180339887498948482045868343656381177 -1.6180339887498948482045868343656381177]
变换后各点坐标为
(08:09) gp > A=h(1+t,-t,1)
%356 = [-2.6284852756056206792 E-39, -2.6284852756056206792 E-39]
(08:09) gp > B=h(0,1,0)
%357 = [1.0000000000000000000000000000000000000, 0]
(08:09) gp > C=h(1,0,0)
%358 = [0.30901699437494742410229341718281905886, 0.95105651629515357211643933337938214340]
(08:09) gp > D=h(-t,1+t,1)
%359 = [-0.80901699437494742410229341718281905886, -0.58778525229247312916870595463907276860]
(08:09) gp > E=h(0,0,1)
%360 = [0.30901699437494742410229341718281905886, -0.95105651629515357211643933337938214340]
(08:10) gp > F=h(1,1,1)
%361 = [-0.80901699437494742410229341718281905887, 0.58778525229247312916870595463907276859]
(08:10) gp > G=h(0,1,1)
%362 = [2.1180339887498948482045868343656381177, 1.5388417685876267012851452880184549120]
(08:10) gp > H=h(1,2+t,0)
%363 = [2.1180339887498948482045868343656381177, -1.5388417685876267012851452880184549120]
(08:10) gp > II=h(1,1+t,0)
%364 = [-0.80901699437494742410229341718281905887, 2.4898982848827802734015846213978370554]
(08:10) gp > J=h(1,0,1)
%365 = [0.30901699437494742410229341718281905886, 0.22451398828979268622097257589876339379]
(08:10) gp > K=h(0,-t,1)
%366 = [-0.80901699437494742410229341718281905886, -2.4898982848827802734015846213978370554]
(08:10) gp > L=h(-t,0,1)
%367 = [0.30901699437494742410229341718281905886, -0.22451398828979268622097257589876339379]
(08:10) gp > M=h(1+t,1,1)
%368 = [-2.6180339887498948482045868343656381177, -9.509949066069770468 E-39]
(08:10) gp > N=h(1,1+t,1)
%369 = [-0.11803398874989484820458683436563811772, 0.36327126400268044294773337874030937480]
(08:10) gp > OO=h(-t,-t,1)
%370 = [-0.11803398874989484820458683436563811772, -0.36327126400268044294773337874030937481]
(08:10) gp > P=h(1+t,1+t,1)
%371 = [-0.38196601125010515179541316563436188228, -3.632477311958332928 E-39]
作图得出
r16.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-1-7 09:38:48 | 显示全部楼层
3阶变换比较麻烦。
如果我们找到一个3阶变换,其中包含两个以上不动点,那么必然不是3阶旋转变换。
而如果只有一个不动点,那么可以尝试将不动点映射为正三角形中心,而3个依次变换的3阶变换点映射为正三角形三个顶点。
而如果没有不动点,那么我们需要尝试找两组对应的依次变换的3阶点。
如果上面所有测试过程试验后并没有成功找到3阶旋转变换,那就说明不存在旋转对称的结果。
以670#中数据
        A[+1 ,0 , +1]
        B[+1 ,0 , 0]
        C[0 ,+1 , +1]
        D[0 ,-1 , +1]
        E[+1 ,-1 , 0]
        F[0 ,+1 , 0]
        G[+1 ,+1 , 0]
        H[0 ,0 , +1]
        I[+1 ,-1 , +1]
        J[-1 ,0 , +1]
        K[+2 ,-1 , +1]
        L[+2 ,+1 , +1]
        M[+1 ,+2 , +1]
        N[-1 ,+1 , +1]
        O[+2 ,-3 , +1]
BEFGCDFHABHJACEKBDIKADGLAFIMCGJMEHINBCLNDEJOFKLO
为例,对应变换为
Dump perm:
P<3>
        ABD
        BDA
        DAB

P<3>
        CEF
        EFC
        FCE

P<3>
        GHK
        HKG
        KGH

P<3>
        IJL
        LIJ
        JLI

P<3>
        MNO
        NOM
        OMN
这是一个3阶变换,第一个恒等变换,第二个和第三个互逆,所以随便试验那个都是等价的。
选择第二个,于是有变换A->B->D->A以及C->E->F->C.
于是计算直线AC, BE,DF的交点
   1.  如果三条直线交于一点,那么这个交点只能作为变换的不动点,可以尝试将它映射为正三角形中心。
          但是本题数据不符合。
   2. 三条直线依次两两交于点U,V,W而且这些点和A,B,D; C,E,F 都不同,
         那么如果是旋转变换,那么必然有交比[U,W; A,C], [V,U; B,E], [W,V; D,F]都相等,如果不相等,那么必然不是旋转变换,淘汰。如果相等,那么可以继续
   3. 三条直线依次两两交于点U,V,W而且{U,V,W}={A,B,D}或{U,V,W}={C,E,F}
       在本题中,正好有{U,V,W}={C,E,F}
2和3的结果都找到三角形{U,V,W}而且点A,B,D依次在边UV, VW, WU上,
   我们需要尝试将U,V,W映射到正三角形三个顶点,而B,A分别在两边上相对位置相同,为此,我们可以做带参数h的映射 V->(0,0), W->(1,0), U->(cos(pi/3), sin(pi/3)), B->(1-h,0), A->(h*cos(pi/3), h*sin(pi/3))
   上面W,U,B,A的映射唯一确定一个带参数h的射影变换,其中C,F映射后坐标固定,我们还需要计算D映射后的坐标并且要求UD : DW=h : (1-h),由此计算得出h需要满足一个41次方程,其中只有5个实数解。其中一个解h=0对应变换不可逆,所以依次选择余下4个h,它们都把(U,V,W)或者说(C,E,F)映射为正三角形但是没有一个是旋转变换,这说明这个图也不存在对称方案:
14.1.png 14.2.png 14.3.png 14.4.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-1-7 09:58:51 | 显示全部楼层
而我们现在再以670#的数据
        A[0 ,+1 , +1]
        B[+1 ,0 , 0]
        C[0 ,+1 , 0]
        D[-1 ,+1 , +1]
        E[+1 ,+1 , 0]
        F[+1 ,0 , +1]
        G[0 ,0 , +1]
        H[+1 ,-1 , 0]
        I[0 ,+2 , +1]
        J[+1 ,+2 , +1]
        K[-1 ,0 , +1]
        L[-1/2 ,+3/2 , +1]
        M[+1 ,+1 , +1]
        N[-2 ,+2 , +1]
        O[-1 ,+5/3 , +1]
BCEHACGIBFGKAEJKAFHLDEILABDMCFJMDGHNBIJNCDKOLMNO
来说明二阶变换,
其变换群总是保持C,D,K,M,O为不动点,但是A,B互换,E,G互换,F,J互换,H,I互换,L,N互换
由于不动点CDKO四点共线,如果我们将CDKO映射为对称轴,M为无穷远点,可能可以得到轴对称图形。
而如果将CDKO映射为无穷远直线,M映射为对称中心,可能可以得到中心对称图形。
为此,我们可以试探A->(-1,1),B->(-1,-1), E->(1,1), G->(1,-1)看看是否M可以映射为轴对称图形
以及试探A->(-1,1), B->(1,-1), E->(1,1), G->(-1,-1)看看是否映射为中心对称图形

1.轴对称试探
A->(-1,1),B->(-1,-1), E->(1,1), G->(1,-1):
变换阵S=
[ 1 0 -1]
[ 1 0  1]
[-1 2 -1]
变换结果除了M在意料中是无穷远点,K也是无穷远点:
14.5.png
为了把额外无穷远点K去除,我们需要改变横轴无穷远点,由此将变换阵S再左乘上带参数r的变换阵
[ 1 0 0]
[ 0 1 0]
[ 1 0 -r]
然后在参数r=0.4时为了调整纵横比将横坐标再放大到双倍,得到
14.6.png

2.中心对称
A->(-1,1), B->(1,-1), E->(1,1), G->(-1,-1)得出
变换阵
[-1  0  1]
[ 1 -2  1]
[-1  0 -1]
结果
14.7.png

点评

现在我的流程基本上已经半自动化了,主要问题在于没有合适的作图软件。pari/gp做出的图还是不够漂亮,而且pari/gp输入输出不是太方便。Geogebra做出的图挺漂亮的,就是不知道是否有程序输入输出的接口。  发表于 2020-1-8 10:46
期待你能使程序自动计算出旋转k边形的各个顶点,轴对称与中心对称的点,每种给出一个即可~然后依次输出图案,而不需要人为二次分析与计算哈  发表于 2020-1-7 12:19

评分

参与人数 1金币 +16 贡献 +12 经验 +12 鲜花 +12 收起 理由
数学星空 + 16 + 12 + 12 + 12 精彩~

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-1-7 13:17:53 | 显示全部楼层
672#的17棵15行整数解
ABDGCFGIDEHIBFHKBCELEGJMCDKMACHNDFJNAEFOGHLOBIJPAKLPAIMQBNOQ
s17.1.png s17.2.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-1-7 14:51:31 | 显示全部楼层
17棵16行实数解没有对称解
        [+1*t^3-2*t^2+3*t-1]
        A[+1,+0,0];
        B(+0,+1)
        C(1-t,t^2 - t + 1)
        D(-t^2 + t,1-t)
        E[+1,-t^2 + t - 2,0];
        F(+0,+0)
        G(t,+1)
        H[+1,1-t,0];
        I(+0,t^2 - t + 1)
        J[+0,+1,0];
        K(+1,+0)
        L(1-t,t^2 - 2*t + 2)
        M(1-t,+0)
        N(-t,t^2 - t + 1)
        O(+1,+1)
        P(-1*t^2+1*t-1,t^2 - 2*t + 2)
        Q(+1,t^2 - 2*t + 2)
AEHJBFIJCEGKDFGLBDEMAFKMCJLMACINBHLNABGOCDHODIKPEFNPGHIQJKOQALPQ

s17.png
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-1-7 18:04:22 | 显示全部楼层
超级嵌套五角形代数表示(16棵15行)

初始数据:

[[A, 1 + t, -t, 1], [B, 0, 1, 0], [C, 1, 0, 0], [D, -t, 1 + t, 1], [E, 0, 0, 1], [F, 1, 1, 1], [G, 0, 1, 1], [H, 1, 2 + t, 0], [I, 1, 1 + t, 0], [J, 1, 0, 1], [K, 0, -t, 1], [L, -t, 0, 1], [M, 1 + t, 1, 1], [N, 1, 1 + t, 1], [O, -t, -t, 1], [P, 1 + t, 1 + t, 1]]
[[B, C, H, I], [A, D, G, J], [B, E, G, K], [D, F, I, K], [A, F, H, L], [C, E, J, L], [C, F, G, M], [D, E, H, M], [A, E, I, N], [B, F, J, N], [A, C, K, O], [B, D, L, O], [A, B, M, P], [C, D, N, P], [E, F, O, P]]

变换基点:

M[1 + t, 1, 1]-->[-cos(1/10*Pi), sin(1/10*Pi), 1]
P[1 + t, 1 + t, 1]--> [0, 1, 1],
N[1, 1 + t, 1,]--> [cos(1/10*Pi), sin(1/10*Pi), 1]
I[1, 1 + t, 0]--> [cos(3/10*Pi), -sin(3/10*Pi), 1]

变换矩阵

[[(50*s^3 + 117*s^2 + 31*s - 8)/(33*s^3 + 73*s^2 + 19*s - 5), 1/4*(-125*s^3 - 281*s^2 - 73*s + 19)/((33*s^3 + 73*s^2 + 19*s - 5)*(1 + t)), (s^3*(-200*t - 75) + (-468*t - 187)*s^2 + (-124*t - 51)*s + 32*t + 13)/(132*s^3 + 292*s^2 + 76*s - 20)],
[1/4*((-634*t + 781)*s^3 + (-1462*t + 1823)*s^2 + (-384*t + 481)*s + 100*t - 125)/((317*s^3 + 731*s^2 + 192*s - 50)*(2 + t)), (-400 - 525*t + (3317*t + 2536)*s^3 + (2017*t + 1536)*s + (7671*t + 5848)*s^2)/(2536*s^3 + 5848*s^2 + 1536*s - 400), (325 - 200*t + (1268*t - 2049)*s^3 + (2924*t - 4747)*s^2 + (768*t - 1249)*s)/(2536*s^3 + 5848*s^2 + 1536*s - 400)],
[-(2049*s^3 + 4747*s^2 + 1249*s - 325)*(1 + t)/((8 + 4*t)*(317*s^3 + 731*s^2 + 192*s - 50)), (75 - 125*t + (781*t - 487)*s^3 + (481*t - 287)*s + (1823*t - 1101)*s^2)/(1268*s^3 + 2924*s^2 + 768*s - 200), (-200 - 325*t + (1249*t + 768)*s + (2049*t + 1268)*s^3 + (4747*t + 2924)*s^2)/(1268*s^3 + 2924*s^2 + 768*s - 200)]])

变换后坐标:
[(-6825655*s^3 - 15792900*s^2 - 4153095*s + 1081080)/(4435592*s^3 + 10262774*s^2 + 2698816*s - 702522), (3317*s^3 + 7671*s^2 + 2017*s - 525)/(1562*s^3 + 3646*s^2 + 962*s - 250), A],
[(6825655*s^3 + 15792900*s^2 + 4153095*s - 1081080)/((11612508*t + 7176916)*s^3 + (26868426*t + 16605652)*s^2 + (7065644*t + 4366828)*s - 1839238*t - 1136716), (-400 - 525*t + (3317*t + 2536)*s^3 + (2017*t + 1536)*s + (7671*t + 5848)*s^2)/((1562*t - 974)*s^3 + (3646*t - 2202)*s^2 + (962*t - 574)*s - 250*t + 150), B],
[-5*(2 + t)*(1104415*s^3 + 2555340*s^2 + 671983*s - 174922)/((5806254*s^3 + 13434213*s^2 + 3532822*s - 919619)*(1 + t)), ((634*t - 781)*s^3 + (1462*t - 1823)*s^2 + (384*t - 481)*s - 100*t + 125)/((2049*s^3 + 4747*s^2 + 1249*s - 325)*(1 + t)), C],
[5*(2 + t)*(1104415*s^3 + 2555340*s^2 + 671983*s - 174922)/(5806254*s^3 + 13434213*s^2 + 3532822*s - 919619), ((2683*t + 2049)*s^3 + (6209*t + 4747)*s^2 + (1633*t + 1249)*s - 425*t - 325)/((2049*s^3 + 4747*s^2 + 1249*s - 325)*(2*t + 1)), D],
[(s^3*(-11044150*t - 4218495) + (-25553400*t - 9760500)*s^2 + s*(-6719830*t - 2566735) + 1749220*t + 668140)/((11612508*t + 7176916)*s^3 + (26868426*t + 16605652)*s^2 + (7065644*t + 4366828)*s - 1839238*t - 1136716), (325 - 200*t + (1268*t - 2049)*s^3 + (2924*t - 4747)*s^2 + (768*t - 1249)*s)/((4098*t + 2536)*s^3 + (9494*t + 5848)*s^2 + (2498*t + 1536)*s - 650*t - 400), E],
[(1081080 + 2830300*t + s*(-10872925*t - 4153095) + s^3*(-17869805*t - 6825655) + s^2*(-41346300*t - 15792900))/((27660608*t + 4435592)*s^3 + (63999626*t + 10262774)*s^2 + (16830104*t + 2698816)*s - 4380998*t - 702522), ((5366*t + 2049)*s^3 + (12418*t + 4747)*s^2 + (3266*t + 1249)*s - 850*t - 325)/((8196*t + 6634)*s^3 + (18988*t + 15342)*s^2 + (4996*t + 4034)*s - 1300*t - 1050), F],
[-5*t*(3573961*s^3 + 8269260*s^2 + 2174585*s - 566060)/((27660608*t + 11612508)*s^3 + (63999626*t + 26868426)*s^2 + (16830104*t + 7065644)*s - 4380998*t - 1839238), ((4585*t + 487)*s^3 + (10595*t + 1101)*s^2 + (2785*t + 287)*s - 725*t - 75)/((5660*t + 1562)*s^3 + (13140*t + 3646)*s^2 + (3460*t + 962)*s - 900*t - 250), G],
[(s^3*(-6825655*t - 9432815) + (-15792900*t - 21825300)*s^2 + s*(-4153095*t - 5739455) + 1081080*t + 1494020)/((4435592*t - 9918240)*s^3 + (10262774*t - 22948530)*s^2 + (2698816*t - 6034840)*s - 702522*t + 1570910), ((-1268*t - 5853)*s^3 + (-2924*t - 13519)*s^2 + (-768*t - 3553)*s + 200*t + 925)/((5072*t + 8582)*s^3 + (11696*t + 19746)*s^2 + (3072*t + 5182)*s - 800*t - 1350), H],
[(-75*s^3 - 187*s^2 - 51*s + 13)/(132*s^3 + 292*s^2 + 76*s - 20), (-2049*s^3 - 4747*s^2 - 1249*s + 325)/(2536*s^3 + 5848*s^2 + 1536*s - 400), I],
[(3911380 + 2830300*t + s^3*(-17869805*t - 24695460) + s*(-10872925*t - 15026020) + s^2*(-41346300*t - 57139200))/((16048100*t + 8871184)*s^3 + (37131200*t + 20525548)*s^2 + (9764460*t + 5397632)*s - 2541760*t - 1405044), ((4585*t + 3804)*s^3 + (10595*t + 8772)*s^2 + (2785*t + 2304)*s - 725*t - 600)/((5660*t + 3124)*s^3 + (13140*t + 7292)*s^2 + (3460*t + 1924)*s - 900*t - 500), J],
[(s^3*(-24695460*t - 6825655) + (-57139200*t - 15792900)*s^2 + s*(-15026020*t - 4153095) + 3911380*t + 1081080)/((43708708*t + 16048100)*s^3 + (101130826*t + 37131200)*s^2 + (26594564*t + 9764460)*s - 6922758*t - 2541760), ((8683*t + 1268)*s^3 + (20089*t + 2924)*s^2 + (5283*t + 768)*s - 1375*t - 200)/((9758*t + 4098)*s^3 + (22634*t + 9494)*s^2 + (5958*t + 2498)*s - 1550*t - 650), K],
[(2162160 + 2830300*t + s^3*(-17869805*t - 13651310) + s^2*(-41346300*t - 31585800) + s*(-10872925*t - 8306190))/((27660608*t + 8871184)*s^3 + (63999626*t + 20525548)*s^2 + (16830104*t + 5397632)*s - 4380998*t - 1405044), ((8683*t + 6634)*s^3 + (20089*t + 15342)*s^2 + (5283*t + 4034)*s - 1375*t - 1050)/((9758*t + 3124)*s^3 + (22634*t + 7292)*s^2 + (5958*t + 1924)*s - 1550*t - 500), L],
[(125*s^3 + 281*s^2 + 73*s - 19)/(132*s^3 + 292*s^2 + 76*s - 20), (781*s^3 + 1823*s^2 + 481*s - 125)/(2536*s^3 + 5848*s^2 + 1536*s - 400), M],
[(-5522075*s^3 - 12776700*s^2 - 3359915*s + 874610)/(5806254*s^3 + 13434213*s^2 + 3532822*s - 919619), (634*s^3 + 1462*s^2 + 384*s - 100)/(2049*s^3 + 4747*s^2 + 1249*s - 325), N],
[(s^3*(-28913955*t - 11044150) + (-66899700*t - 25553400)*s^2 + s*(-17592755*t - 6719830) + 4579520*t + 1749220)/((62498132*t + 23225016)*s^3 + (144604904*t + 53736852)*s^2 + (38027036*t + 14131288)*s - 9898712*t - 3678476), ((12781*t + 7415)*s^3 + (29583*t + 17165)*s^2 + (7781*t + 4515)*s - 2025*t - 1175)/((13856*t + 5660)*s^3 + (32128*t + 13140)*s^2 + (8456*t + 3460)*s - 2200*t - 900), O],
[0, 1, P]

其中:
t^2 + 3*t + 1 = 0 ,{t = -0.38196601125010}, {t = -2.61803398874990}
s^4 - 4*s^3 - 14*s^2 - 4*s + 1 = 0,[{s = 0.158384440324536}, {s = 6.31375151467504}, {s = -0.509525449494429}, {s = -1.96261050550515}]

取{s = 0.158384440324536, t = -0.38196601125010}

得到
[[1.53880830965586, 2.11803398879386, A], [-2.48983442817669, -0.809016994416148, B], [2.48983255121845, -0.809016994426450, C], [-1.53880114294888, 2.11803398881176, D], [0.0000370066415405026, -2.61803398872788, E], [-0.0000139827489347497, -4.84689576090527*10^(-13), F], [-6.51879112609281, 2.11803398955404, G], [-0.587769938250253, -0.809016994349770, H], [0.587785252292634, -0.809016994357499, I], [6.51854023999825, 2.11803398881478, J], [4.02771149753984, -5.54508497652313, K], [-4.02787370805532, -5.54508497109113, L], [-0.951056516295215, 0.309016994366550, M], [0.951040886673049, 0.309016994376018, N], [0.0000241764377172868, 6.85410196400249, O], [0., 1., P]]

画图得到

1615 五角形.gif
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-1-7 18:23:19 | 显示全部楼层
16棵14行结果

初始数据:
[[A, 1, 0, 0], [B, 1, -2, 0], [C, 1, 0, 1], [D, 0, 1, 0], [E, 0, 1, 1], [F, 0, 0, 1], [G, 1, -1, 1], [H, 1, -1, 0], [I, 0, 2, 1], [J, 1/2, 0, 1], [K, 1/2, 1, 1], [L, -1, 2, 1], [M, 1/2, -1, 1], [N, 1, 1, 1], [O, -2, 2, 1], [P, 3, -1, 1]]
[[A, B, D, H], [D, E, F, I], [A, C, F, J], [B, E, G, J], [B, C, I, K], [C, E, H, L], [D, J, K, M], [B, F, L, M], [C, D, G, N], [A, E, K, N], [F, G, H, O], [A, I, L, O], [A, G, M, P], [H, I, N, P]]

变换基点
[1, 0, 0, A]-->[0, sqrt(3)/3, 1],
[0, 0, 1, F]-->[-1/2, -sqrt(3)/6, 1],
[1, -1, 1, G]-->[1/2, -sqrt(3)/6, 1],
[0, 2, 1, I]-->[0, 0, 1]

变换矩阵
[[0, -1/36, 1/18], [-1/18*sqrt(3), -1/108*sqrt(3), 1/54*sqrt(3)], [-1/6, -4/9, -1/9]]

变换后坐标
[[0, sqrt(3)/3, A], [1/13, -(2*sqrt(3))/39, B], [-1/5, (2*sqrt(3))/15, C], [1/16, sqrt(3)/48, D], [-1/20, -sqrt(3)/60, E], [-1/2, -sqrt(3)/6, F], [1/2, -sqrt(3)/6, G], [1/10, -sqrt(3)/6, H], [0, 0, I], [-2/7, sqrt(3)/21, J], [-1/23, (2*sqrt(3))/69, K], [0, -sqrt(3)/15, L], [1/3, 0, M], [-1/26, (5*sqrt(3))/78, N], [0, -sqrt(3)/6, O], [-1/2, (5*sqrt(3))/6, P]]

画图得到


1614-1.gif



初始数据:
[[A, 1, 0, 0], [B, 0, 1, 0], [C, 1, 0, 1], [D, 1, -1/2, 0], [E, 0, 0, 1], [F, 0, 1, 1], [G, 2, -1, 1], [H, -1, 1, 1], [I, 1, -1, 0], [J, 0, 1/2, 1], [K, 1, 1/2, 1], [L, 2, 0, 1], [M, 1, -1, 1], [N, -1, 1/2, 1], [O, 2, 1, 1], [P, -1, -1, 1]]
[[A, B, D, I], [C, F, G, I], [B, E, F, J], [C, D, H, J], [A, C, E, L], [D, F, K, L], [E, H, I, M], [B, C, K, M], [D, E, G, N], [A, J, K, N], [A, F, H, O], [B, G, L, O], [A, G, M, P], [B, H, N, P]]

变换基点
[0, 0, 1, E]-->[0, sqrt(3)/3, 1],
[1, -1, 1, M]-->[-1/2, -sqrt(3)/6, 1],
[0, 1/2, 1, J]-->[1/2, -sqrt(3)/6, 1],
[1, 0, 0, A]-->[0, 0, 1]

变换矩阵
[[0, -1/6, 0], [0, -1/54*sqrt(3), 1/27*sqrt(3)], [-1, -5/9, 1/9]]

变换后坐标
[0, 0, A], [3/10, sqrt(3)/30, B], [0, -sqrt(3)/24, C], [-3/26, -sqrt(3)/78, D], [0, sqrt(3)/3, E], [3/8, -sqrt(3)/24, F], [-1/8, -sqrt(3)/24, G], [-3/10, sqrt(3)/30, H], [-3/8, -sqrt(3)/24, I], [1/2, -sqrt(3)/6, J], [1/14, -sqrt(3)/42, K], [0, -sqrt(3)/51, L], [-1/2, -sqrt(3)/6, M], [-1/10, sqrt(3)/30, N], [3/44, -sqrt(3)/132, O], [1/10, sqrt(3)/30, P]

画图得到


1614-2.gif


初始数据:

[[A, 1, 0, 0], [B, 0, 1, 0], [C, 1, 0, 1], [D, 1, -1/2, 0], [E, 0, 0, 1], [F, 0, 1, 1], [G, 2, -1, 1], [H, -1, 1, 1], [I, 1, -1, 0], [J, 0, 1/2, 1], [K, 1, 1/2, 1], [L, 2, 0, 1], [M, 1, -1, 1], [N, -1, 1/2, 1], [O, 2, 1, 1], [P, -1, -1, 1]]
[[A, B, D, I], [C, F, G, I], [B, E, F, J], [C, D, H, J], [A, C, E, L], [D, F, K, L], [E, H, I, M], [B, C, K, M], [D, E, G, N], [A, J, K, N], [A, F, H, O], [B, G, L, O], [A, G, M, P], [B, H, N, P]]

变换基点
[1, -1, 1, M]-->[[-1/4, 1/6*sqrt(3), 1],
[-1, 1, 1, H]-->[-1/2, 0, 1],
[0, 1, 0, B]-->[1/2, 0, 1],
[0, 1/2, 1, J]-->[1/4, 1/6*sqrt(3), 1]

变换后坐标
[0, sqrt(3)/15, A], [1/2, 0, B], [0, sqrt(3)/9, C], [-1/8, sqrt(3)/12, D], [0, sqrt(3)/3, E], [1/3, sqrt(3)/9, F], [-1/9, sqrt(3)/9, G], [-1/2, 0, H], [-1/3, sqrt(3)/9, I], [1/4, sqrt(3)/6, J], [1/14, (2*sqrt(3))/21, K], [0, sqrt(3)/11, L], [-1/4, sqrt(3)/6, M], [-1/6, 0, N], [1/13, sqrt(3)/13, O], [1/6, 0, P]

画图得到

1614-3.gif
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-4-24 06:01 , Processed in 0.061042 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表