01/06/12 1016 Adelaide, Australia
|
Помогите найти ошибку на примере случайного квадрата (квадрат)
Код: X= (1,20,6,23,2),(18,21,24,11,16),(7,10,17,3,9),(4,13,5,22,19),(25,14,12,15,8)
DN= 4697
PsiX= [75, 72, 150, 152, 300, 168, 420, 352, 324, 240, 880, 384, 468, 252, 360, 512, 1088, 432, 1368, 640, 1260, 1100, 2530, 960, 2500]
PsiY= [75, 72, 138, 152, 500, 120, 294, 256, 378, 400, 330, 288, 468, 336, 600, 128, 544, 324, 1368, 800, 252, 440, 1518, 768, 2500]
Phi= [25, 24, 48, 48, 100, 48, 126, 96, 108, 80, 220, 96, 156, 84, 120, 128, 272, 108, 342, 160, 252, 220, 506, 192, 500]
dDNmin[11,16]= -117 dDNmax[1,25]= 15232 ? ? dDN %28 = [ 0 -4 60 90 1536 112 510 462 742 1292 1620 826 952 748 2020 942 2410 1008 5682 3450 3712 3308 9580 4150 15232]
[ -4 0 9 24 927 88 383 340 423 880 1681 632 595 480 1341 1140 2223 824 4127 2556 3999 3200 8187 3400 11947]
[ 60 9 0 23 592 93 368 251 216 565 2056 447 352 189 864 1431 2396 657 3100 1843 4800 3337 7664 2919 9648]
[ 90 24 23 0 221 164 625 376 153 268 2879 512 449 56 419 2088 3129 676 2697 1376 5853 3928 8081 2688 8105]
[ 1536 927 592 221 0 1531 1844 973 316 -65 5320 1361 1120 35 40 4025 5136 1231 3000 1005 8896 5775 10000 2905 7680]
[ 112 88 93 164 1531 0 103 120 567 1280 549 372 503 584 1881 344 1063 576 4051 2856 2079 1864 6131 3132 11967]
[ 510 383 368 625 1844 103 0 61 496 1467 628 61 108 511 1672 577 832 299 2712 2469 2716 1863 4948 2581 9468]
[ 462 340 251 376 973 120 61 0 145 776 1047 -24 -87 68 783 960 1021 88 1489 1376 3085 1876 4197 1824 6513]
[ 742 423 216 153 316 567 496 145 0 279 2340 321 164 -45 312 2013 2200 495 1264 881 5076 3023 5084 1809 5220]
[ 1292 880 565 268 -65 1280 1467 776 279 0 4177 1036 915 128 25 3400 3931 992 1655 600 7095 4416 6735 1940 4515]
[ 1620 1681 2056 2879 5320 549 628 1047 2340 4177 0 267 976 1869 4176 -117 272 625 4240 4647 888 1045 4232 3387 11960]
[ 826 632 447 512 1361 372 61 -24 321 1036 267 0 37 248 1179 408 149 -12 1469 1552 1413 760 2269 1440 6333]
[ 952 595 352 449 1120 503 108 -87 164 915 976 37 0 215 1000 1285 800 235 936 1425 3008 1715 2512 1565 4960]
[ 748 480 189 56 35 584 511 68 -45 128 1869 248 215 0 177 1860 1635 328 395 428 4095 2176 2775 968 2735]
[ 2020 1341 864 419 40 1881 1672 783 312 25 4176 1179 1000 177 0 3723 3620 1005 860 255 6840 3965 4720 1395 2360]
[ 942 1140 1431 2088 4025 344 577 960 2013 3400 -117 408 1285 1860 3723 0 369 824 3933 4160 345 628 2985 2960 10013]
[ 2410 2223 2396 3129 5136 1063 832 1021 2200 3931 272 149 800 1635 3620 369 0 347 2320 3573 976 455 1480 2125 7320]
[ 1008 824 657 676 1231 576 299 88 495 992 625 -12 235 328 1005 824 347 0 415 936 1635 584 575 540 2835]
[ 5682 4127 3100 2697 3000 4051 2712 1489 1264 1655 4240 1469 936 395 860 3933 2320 415 0 465 5560 2615 1616 493 1600]
[ 3450 2556 1843 1376 1005 2856 2469 1376 881 600 4647 1552 1425 428 255 4160 3573 936 465 0 6341 3420 3125 632 625]
[ 3712 3999 4800 5853 8896 2079 2716 3085 5076 7095 888 1413 3008 4095 6840 345 976 1635 5560 6341 0 431 2864 3645 11328]
[ 3308 3200 3337 3928 5775 1864 1863 1876 3023 4416 1045 760 1715 2176 3965 628 455 584 2615 3420 431 0 683 1480 6075]
[ 9580 8187 7664 8081 10000 6131 4948 4197 5084 6735 4232 2269 2512 2775 4720 2985 1480 575 1616 3125 2864 683 0 653 3840]
[ 4150 3400 2919 2688 2905 3132 2581 1824 1809 1940 3387 1440 1565 968 1395 2960 2125 540 493 632 3645 1480 653 0 645]
[15232 11947 9648 8105 7680 11967 9468 6513 5220 4515 11960 6333 4960 2735 2360 10013 7320 2835 1600 625 11328 6075 3840 645 0] (код)
Код: PsiX=PsiY=Phi= vector(N); for(k=1, N, Xk=Yk=Px=Py=F= 0; for(i=1, N, a= X[i]; if(!(a%k), ia= a\n; ja= a%n; if(ja, ia++, ja= n); Xk+= ia; Yk+= ja)); for(i=1, k, Px+= eulerphi(k)*Xk; Py+= eulerphi(k)*Yk; F+= eulerphi(k)*(N\k)); PsiX[k]= Px; PsiY[k]= Py; Phi[k]= F );
print("PsiX="); print(PsiX); print(); print("PsiY="); print(PsiY); print(); print("Phi="); print(Phi); print();
dDN= matrix(N, N); for(a=1, N, xa= a\n; ya= a%n; if(ya, xa++, ya= n); for(b=1, N, xb= b\n; yb= b%n; if(yb, xb++, yb= n); A= (xb^2-xa^2+yb^2-ya^2)*(Phi[a]-Phi[b]); B= ((xb-xa)^2+(yb-ya)^2)*(a+b-2*gcd(a,b)); Cx= (xb-xa)*(PsiX[a]-PsiX[b]); Cy= (yb-ya)*(PsiY[a]-PsiY[b]); d= A-B-2*(Cx+Cy); dDN[a,b]= d; if(d<Dmin, Dmin= d; amin= a; bmin= b); if(d>Dmax, Dmax= d; amax= a; bmax= b) ));
print("dDNmin[",amin,",",bmin,"]= ",Dmin); print("dDNmax[",amax,",",bmax,"]= ",Dmax);
Надо N*N/k, а у вас N/k. Суммировать надо от 2 до N*N/2. Еще мне кажется оригинальная формула не совсем работает, особенно B.
|
|