注册 登录
编程论坛 VFP论坛

通过单位矩阵与周期矩阵耦合统计方程解组数

独木星空 发布于 2022-10-29 15:24, 4911 次点击
我构造了一种算法,可以解决限制条件下,线性不定方程x+y+z+u+v+m=N满足条件的解组数,条件是未知数不能取某一个大于1的整数的倍数,如未知数不能取2t(t为正整数),这是一种限制;有或者不能取3t的数;不能取4t的数;5t的数;....,等等。这里的Pt(t为任意的正整数,P为大于1的正整数)中,P为单位矩阵的单位(相当于周期值),t为周期,我们限定t=10,这样对于任一个P来说,我们就不从新计算周期矩阵了,而只计算单位矩阵。
周期矩阵计算:(第一步)
周期10    0    1    2    3    4    5    6    7    8    9
0    0    1    2    3    4    5    6    7    8    9
1    1    2    3    4    5    6    7    8    9    10
2    2    3    4    5    6    7    8    9    10    11
3    3    4    5    6    7    8    9    10    11    12
4    4    5    6    7    8    9    10    11    12    13
5    5    6    7    8    9    10    11    12    13    14
6    6    7    8    9    10    11    12    13    14    15
7    7    8    9    10    11    12    13    14    15    16
8    8    9    10    11    12    13    14    15    16    17
9    9    10    11    12    13    14    15    16    17    18

周期数    统计2
0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
8    9
9    10
10    9
11    8
12    7
13    6
14    5
15    4
16    3
17    2
18    1
合计    100

第二步
周期数    0    1    2    3    4    5    6    7    8    9
0    0    1    2    3    4    5    6    7    8    9
1    1    2    3    4    5    6    7    8    9    10
2    2    3    4    5    6    7    8    9    10    11
3    3    4    5    6    7    8    9    10    11    12
4    4    5    6    7    8    9    10    11    12    13
5    5    6    7    8    9    10    11    12    13    14
6    6    7    8    9    10    11    12    13    14    15
7    7    8    9    10    11    12    13    14    15    16
8    8    9    10    11    12    13    14    15    16    17
9    9    10    11    12    13    14    15    16    17    18
10    10    11    12    13    14    15    16    17    18    19
11    11    12    13    14    15    16    17    18    19    20
12    12    13    14    15    16    17    18    19    20    21
13    13    14    15    16    17    18    19    20    21    22
14    14    15    16    17    18    19    20    21    22    23
15    15    16    17    18    19    20    21    22    23    24
16    16    17    18    19    20    21    22    23    24    25
17    17    18    19    20    21    22    23    24    25    26
18    18    19    20    21    22    23    24    25    26    27

统计2    1    2    3    4    5    6    7    8    9    10
1    1    2    3    4    5    6    7    8    9    10
2    2    4    6    8    10    12    14    16    18    20
3    3    6    9    12    15    18    21    24    27    30
4    4    8    12    16    20    24    28    32    36    40
5    5    10    15    20    25    30    35    40    45    50
6    6    12    18    24    30    36    42    48    54    60
7    7    14    21    28    35    42    49    56    63    70
8    8    16    24    32    40    48    56    64    72    80
9    9    18    27    36    45    54    63    72    81    90
10    10    20    30    40    50    60    70    80    90    100
9    9    18    27    36    45    54    63    72    81    90
8    8    16    24    32    40    48    56    64    72    80
7    7    14    21    28    35    42    49    56    63    70
6    6    12    18    24    30    36    42    48    54    60
5    5    10    15    20    25    30    35    40    45    50
4    4    8    12    16    20    24    28    32    36    40
3    3    6    9    12    15    18    21    24    27    30
2    2    4    6    8    10    12    14    16    18    20
1    1    2    3    4    5    6    7    8    9    10

周期数    统计4
0    1
1    4
2    10
3    20
4    35
5    56
6    84
7    120
8    165
9    220
10    282
11    348
12    415
13    480
14    540
15    592
16    633
17    660
18    670
19    660
20    633
21    592
22    540
23    480
24    415
25    348
26    282
27    220
28    165
29    120
30    84
31    56
32    35
33    20
34    10
35    4
36    1
合计    10000
这第二步仅列出了10列数据,后9列数据未列出,补全即可。周期数二元运算符号“+”;统计二元运算符号“*”;统计是把周期数一样的,对应位置的统计数加在一起:SUMIF(B$24:T$42,AQ24,W$24:AO$42),Excel中的函数。
57 回复
#52
独木星空2023-07-13 21:13
sELECT 1
USE h:\二生素数串\孪串23表.DBF ALIAS 孪串23表
SELECT 2
USE h:\二生素数串\孪串5表.DBF ALIAS 孪串5表
SELECT 3
USE h:\二生素数串\孪串5排列.DBF ALIAS 孪串5排列
kssj=SECONDS()                      &&取出开始时间
     SELECT 2
     GO 1
       FOR k=1 TO 7952171
      &&  @22,20 SAY k
      &&  jlh=recno()&&jlh记录号
       PUBLIC F
           F=串5
       PUBLIC G
           G=记录号5
      IF F=36
         SELECT 1
         GO G
           PUBLIC A
           A=孪串23
           SKIP 1
           PUBLIC B
           B=孪串23
           SKIP 1
           PUBLIC C
           C=孪串23
           SKIP 1
           PUBLIC D
           D=孪串23
           SKIP 1
           PUBLIC E
           E=孪串23
                       
           SELECT 3              &&打开保存求解结果的信息表
           APPEND BLANK                        &&增加一条空记录
           REPLACE 串5距 WITH 36        &&将被判断值保存到被判断值字段中(被判断值数据栏)
           REPLACE 记录5 WITH G
           REPLACE 元素1 WITH A
           REPLACE 元素2 WITH B
           REPLACE 元素3 WITH C
           REPLACE 元素4 WITH D
           REPLACE 元素5 WITH E
           ENDIF
        SELECT 2
        skip
        ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
利用基表摘抄素数式段落,我只把这里做为一个储存器。
#53
独木星空2023-07-13 21:47
SELECT 1
USE H:\素数式系数\素数表十亿.dbf ALIAS 素数表
kssj=SECONDS()  &&取出开始时间
s=3082.130001548320000
SELECT 1
  GO 9
  A=素数
  s=s*A^9*(A-10)/(A-1)^10
        SKIP 1
        FOR  j=1 TO 50876310
        SELECT 1
        B=素数
        s=s*B^9*(B-10)/(B-1)^10
        SELECT 1  
        SKIP
        ENDFOR

?s
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
最密孪串5的系数。
#54
独木星空2023-07-19 21:18
SELECT 1
USE H:\素数式系数\素数表十亿.dbf ALIAS 素数表
kssj=SECONDS()  &&取出开始时间
s=10.0000000000000000
SELECT 1
  GO 4
  A=素数
  s=s*A*(A-6)/(A-2)/(A-4)
        SKIP 1
        FOR  j=1 TO 50876310
        SELECT 1
        B=素数
        s=s*B*(B-6)/(B-2)/(B-4)
        SELECT 1  
        SKIP
        ENDFOR

?s
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是计算:最密4生素数(0,2,6,8)与孪生素数对(0,2)合成的6生素数的公共系数vfp程序。(减法,线性合成)。
#55
独木星空2023-07-19 21:19
数学专业性强,vfp编程平平。
#56
laowan0012023-07-20 08:52
以下是引用独木星空在2023-7-19 21:19:12的发言:

数学专业性强,vfp编程平平。

就冲你这种韧劲,成为编程高手也只是时间问题,加油
#57
独木星空2023-07-21 21:01
sELECT 1
USE h:\二生素数串\孪串23表.DBF ALIAS 孪串23表
SELECT 2
USE h:\二生素数串\孪串6表.DBF ALIAS 孪串6表
SELECT 3
USE h:\二生素数串\孪串6排列.DBF ALIAS 孪串6排列
kssj=SECONDS()                      &&取出开始时间
     SELECT 2
     GO 1
       FOR k=1 TO 7952170
      &&  @22,20 SAY k
      &&  jlh=recno()&&jlh记录号
       PUBLIC F
           F=串6
       PUBLIC G
           G=记录号6
      IF F=48
         SELECT 1
         GO G
           PUBLIC A
           A=孪串23
           SKIP 1
           PUBLIC B
           B=孪串23
           SKIP 1
           PUBLIC C
           C=孪串23
           SKIP 1
           PUBLIC D
           D=孪串23
           SKIP 1
           PUBLIC E
           E=孪串23
           SKIP 1
           PUBLIC M
           M=孪串23
                       
           SELECT 3              &&打开保存求解结果的信息表
           APPEND BLANK                        &&增加一条空记录
           REPLACE 串6距 WITH 48       &&将被判断值保存到被判断值字段中(被判断值数据栏)
           REPLACE 记录6 WITH G
           REPLACE 元素1 WITH A
           REPLACE 元素2 WITH B
           REPLACE 元素3 WITH C
           REPLACE 元素4 WITH D
           REPLACE 元素5 WITH E
           REPLACE 元素6 WITH M
           ENDIF
        SELECT 2
        skip
        ENDFOR
=MESSAGEBOX("运行时间:"+LTRIM(STR(INT((SECONDS()-kssj)/60)))+"分"+LTRIM(STR(MOD(SECONDS()-kssj,60),5,2))+"秒",64,"运行时间提示")
这是抄录最密6串孪素的vfp程序,凉一凉,使之冷却。
#58
独木星空2024-04-28 21:12
温故而知新
12