пʼятниця, 26 лютого 2021 р.

Послідовність Adogen Aq(k,l,m,n),

 Реалізація алгоритмів для пошуку членів

 числових  немонотонних послідовностей

мовою програмування Python3

Означення. Послідовність  чисел, називається послідовність Adogen  Aq(k,l,m,n), для натуральних чисел  m,  n,  k, l, q , якщо виконуються такі умови:

1) A1(k,l,m,n)) = 0; для натурального  n> 0,  k>0, l >0, m>0,

2)Aq(k,l,m,n)) = Aq-1(k,l,m,n) +k*q+l, якщо  Aq-1(k,l,m,n) -k*m-l <=0 і число Aq-1(k,l,m,n) +k*q+l  ще не належить цій послідовності;

3)Aq(k,l,m,n)) = Aq-1(k,l,m,n) - k*q- l, якщо  Aq-1(k,l,m,n) -k*m-l >0 і  число Aq-1(k,l,m,n) - k*q- l  ще не належить цій послідовності.

 

Гіпотеза. Послідовність Adogen  Aq(k,l,m,n), ), для натуральних чисел  m,  n,  k, l, q містить усі натуральні числа.

Алгоритм мовою Python3 для знаходження  чисел  Adogen Aq(1,1,1,1):

Приклад  110 члени  послідовності  Adogen  Aq(1,1,1,1):

[0, 2, 5, 1, 6, 12, ' ', 13, 4, 14, 3, 15, ' ', 16, ' ', 17, 34, ' ', 35, ' ', 36, ' ', 37, ' ', 38, ' ', 39, 11, 40, 10, 41, 9, 42, 8, 43, 7, 44, ' ', 45, ' ', 46, ' ', 47, ' ', 48, ' ', 49, ' ', 50, 100, ' ', 101, ' ', 102, ' ', 103, ' ', 104, ' ', 105, ' ', 106, ' ', 107, ' ', 108, ' ', 109, ' ', 110, ' ', 111, ' ', 112, ' ', 113, ' ', 114, ' ', 115, ' ', 116, 33, 117, 32, 118, 31, 119, 30, 120, 29, 121, 28, 122, 27, 123, 26, 124, 25, 125, 24, 126, 23, 127, 22, 128, 21, 129, 20, 130, 19, 131, 18, 132, ' ', 133, ' ', 134, ' ', 135, ' ', 136, ' ', 137, ' ', 138, ' ', 139, ' ', 140, ' ', 141, ' ', 142, ' ', 143, ' ', 144, ' ', 145, ' ', 146, ' ', 147, ' ', 148, ' ', 149, 298, ' ', 299, ' ', 300, ' ', 301, ' ', 302, ' ', 303, ' ', 304, ' ', 305, ' ', 306, ' ', 307, ' ', 308, ' ', 309, ' ', 310, ' ', 311, ' ', 312, ' ', 313, ' ', 314, ' ', 315, ' ', 316, ' ', 317, ' ', 318, ' ', 319, ' ', 320, ' ', 321, ' ', 322, ' ', 323, ' ']

Реалізація.

print("Послідовність чисел  Адоген")

r=['None']*200

q=['None']*200

r[0]=0

ss=0

def adogen(n,k,l,s,t):

    a=0

    for m in range(1,n):

        if a-k*m-l<=0:

            a=a+k*m+l; r[m]=a;

        else:

            a=a-s*m-t; r[m]=a;

    return r, ss

adogen(200, 1,1,1,1)

print(r)

for n in range(0,200):

    q[n]=r[n]

for n in range(0,200):

    for m in range(0,n-1):

        if r[n]==r[m]:

           q[n]=' '; ss=ss+1

print(q)

print("Фільтрування чисел Адоген від повторів")

print("Кількість чисел  Адоген")

print(200-ss)

Алгоритм мовою Python3 для знаходження  чисел  Adogen Aq(2,1,2,1):

Приклад  137 членів  послідовності  Adogen  Aq(2,1,2,1):

[0, 3, 8, 1, 10, 21, ' ', 23, 6, 25, 4, 27, 2, 29, 58, ' ', 60, ' ', 62, ' ', 64, ' ', 66, 19, 68, 17, 70, 15, 72, 13, 74, 11, 76, 9, 78, 7, 80, 5, 82, ' ', 84, ' ', 86, 173, ' ', 175, ' ', 177, ' ', 179, ' ', 181, ' ', 183, ' ', 185, ' ', 187, ' ', 189, ' ', 191, ' ', 193, ' ', 195, ' ', 197, ' ', 199, ' ', 201, 56, 203, 54, 205, 52, 207, 50, 209, 48, 211, 46, 213, 44, 215, 42, 217, 40, 219, 38, 221, 36, 223, 34, 225, 32, 227, 30, 229, 28, 231, 26, 233, 24, 235, 22, 237, 20, 239, 18, 241, 16, 243, 14, 245, 12, 247, ' ', 249, ' ', 251, ' ', 253, ' ', 255, ' ', 257, 514, ' ', 516, ' ', 518, ' ', 520, ' ', 522, ' ', 524, ' ', 526, ' ', 528, ' ', 530, ' ', 532, ' ', 534, ' ', 536, ' ', 538, ' ', 540, ' ', 542, ' ', 544, ' ', 546, ' ', 548, ' ', 550, ' ', 552, ' ', 554, ' ', 556, ' ', 558, ' ', 560, ' ', 562, ' ', 564, ' ', 566, ' ', 568, ' ', 570, ' ', 572, ' ', 574, ' ', 576, ' ', 578, ' ', 580, ' ', 582, ' ', 584, ' ']

Реалізація

print("Послідовність чисел  Адоген")

r=['None']*200

q=['None']*200

r[0]=0

ss=0

def adogen(n,k,l,s,t):

    a=0

    for m in range(1,n):

        if a-k*m-l<=0:

            a=a+k*m+l; r[m]=a;

        else:

            a=a-s*m-t; r[m]=a;

    return r, ss

adogen(200, 2,1,2,1)

print(r)

for n in range(0,200):

    q[n]=r[n]

for n in range(0,200):

    for m in range(0,n-1):

        if r[n]==r[m]:

           q[n]=' '; ss=ss+1

print(q)

print("Фільтрування чисел Адоген від повторів")

print("Кількість чисел  Адоген")

print(200-ss)

 

Алгоритм мовою Python3 для знаходження  чисел  Adogen Aq(3,1,3,1):

Приклад  142 члени  послідовності  Adogen  Aq(3,1,3,1):

[0, 4, 11, 1, 14, 30, ' ', 33, 8, 36, 5, 39, 2, 42, 85, ' ', 88, ' ', 91, ' ', 94, ' ', 97, 27, 100, 24, 103, 21, 106, 18, 109, 15, 112, 12, 115, 9, 118, 6, 121, 3, 124, 248, ' ', 251, ' ', 254, ' ', 257, ' ', 260, ' ', 263, ' ', 266, ' ', 269, ' ', 272, ' ', 275, ' ', 278, ' ', 281, ' ', 284, ' ', 287, 82, 290, 79, 293, 76, 296, 73, 299, 70, 302, 67, 305, 64, 308, 61, 311, 58, 314, 55, 317, 52, 320, 49, 323, 46, 326, 43, 329, 40, 332, 37, 335, 34, 338, 31, 341, 28, 344, 25, 347, 22, 350, 19, 353, 16, 356, 13, 359, 10, 362, 7, 365, ' ', 368, ' ', 371, 744, ' ', 747, ' ', 750, ' ', 753, ' ', 756, ' ', 759, ' ', 762, ' ', 765, ' ', 768, ' ', 771, ' ', 774, ' ', 777, ' ', 780, ' ', 783, ' ', 786, ' ', 789, ' ', 792, ' ', 795, ' ', 798, ' ', 801, ' ', 804, ' ', 807, ' ', 810, ' ', 813, ' ', 816, ' ', 819, ' ', 822, ' ', 825, ' ', 828, ' ', 831, ' ', 834, ' ', 837, ' ', 840, ' ', 843, ' ', 846, ' ', 849, ' ', 852, ' ', 855, ' ']

Реалізація

print("Послідовність чисел  Адоген")

r=['None']*200

q=['None']*200

r[0]=0

ss=0

def adogen(n,k,l,s,t):

    a=0

    for m in range(1,n):

        if a-k*m-l<=0:

            a=a+k*m+l; r[m]=a;

        else:

            a=a-s*m-t; r[m]=a;

    return r, ss

adogen(200, 3,1,3,1)

print(r)

for n in range(0,200):

    q[n]=r[n]

for n in range(0,200):

    for m in range(0,n-1):

        if r[n]==r[m]:

           q[n]=' '; ss=ss+1

print(q)

print("Фільтрування чисел Адоген від повторів")

print("Кількість чисел  Адоген")

print(200-ss)

 

 

Алгоритм мовою Python3 для знаходження  чисел  Adogen Aq(4,1,4,1):

Приклад  142 члени  послідовності  Adogen  Aq(4,1,4,1):

[0, 5, 14, 1, 18, 39, ' ', 43, 10, 47, 6, 51, 2, 55, 112, ' ', 116, ' ', 120, ' ', 124, ' ', 128, 35, 132, 31, 136, 27, 140, 23, 144, 19, 148, 15, 152, 11, 156, 7, 160, 3, 164, 329, ' ', 333, ' ', 337, ' ', 341, ' ', 345, ' ', 349, ' ', 353, ' ', 357, ' ', 361, ' ', 365, ' ', 369, ' ', 373, ' ', 377, ' ', 381, 108, 385, 104, 389, 100, 393, 96, 397, 92, 401, 88, 405, 84, 409, 80, 413, 76, 417, 72, 421, 68, 425, 64, 429, 60, 433, 56, 437, 52, 441, 48, 445, 44, 449, 40, 453, 36, 457, 32, 461, 28, 465, 24, 469, 20, 473, 16, 477, 12, 481, 8, 485, 4, 489, 978, ' ', 982, ' ', 986, ' ', 990, ' ', 994, ' ', 998, ' ', 1002, ' ', 1006, ' ', 1010, ' ', 1014, ' ', 1018, ' ', 1022, ' ', 1026, ' ', 1030, ' ', 1034, ' ', 1038, ' ', 1042, ' ', 1046, ' ', 1050, ' ', 1054, ' ', 1058, ' ', 1062, ' ', 1066, ' ', 1070, ' ', 1074, ' ', 1078, ' ', 1082, ' ', 1086, ' ', 1090, ' ', 1094, ' ', 1098, ' ', 1102, ' ', 1106, ' ', 1110, ' ', 1114, ' ', 1118, ' ', 1122, ' ', 1126, ' ', 1130, ' ']

Реалізація.

print("Послідовність чисел  Адоген")

r=['None']*200

q=['None']*200

r[0]=0

ss=0

def adogen(n,k,l,s,t):

    a=0

    for m in range(1,n):

        if a-k*m-l<=0:

            a=a+k*m+l; r[m]=a;

        else:

            a=a-s*m-t; r[m]=a;

    return r, ss

adogen(200, 4,1,4,1)

print(r)

for n in range(0,200):

    q[n]=r[n]

for n in range(0,200):

    for m in range(0,n-1):

        if r[n]==r[m]:

           q[n]=' '; ss=ss+1

print(q)

print("Фільтрування чисел Адоген від повторів")

print("Кількість чисел  Адоген")

print(200-ss)

 

 


Реалізація алгоритмів для пошуку цілих розв’язків рівнянь з декількома невідомими мовою програмування Python3 в середовищі програмування Thonny

 

Завдання 1. Реалізувати алгоритм мовою програмування Python3 в середовищі програмування Thonny пошуку усіх цілих розвязків рівняння вигляду: x+y=xy.

 

Аналіз математичної моделі.

Розкладемо на множники cпособом групування доданків.

x+y-xy=0.

x+y-xy=0.

х(1-у)-(1-у)= -1  (від обох частин відняли 1)

(1-у)(х-1)= -1

(1-у)(1-х)= 1 (винесли мінус за дужки в 2-ому множнику)

 

Можливі випадки розкладу на множники 1 на множині цілих чисел:

1*1=1 та -1*(-1)=1.

 

Тому, відповідні дужки мають дорівнювати відповідним множникам.

1)   1-у=1 і  1-х=1;  звідси у=0,  х=0

2)   1-у=-1 і  1-х=-1;  звідси у=2,  х=2

 

Реалізація.

 

print('Пошук цілих розвязків рівняння: x+y=xy.')

a=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,0, 1,2,3,4,5,6,7,8,9,10];

b=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,0, 1,2,3,4,5,6,7,8,9,10];

n=0

for x in range(21):

    for y in range(21):

        if a[x]+b[y]==a[x]*b[y]:

                    n+=1

                    print(n,'-ий цілий розвязків рівняння: x+y=xy: (x,y)=(',a[x],'; ',b[y],')')

if n==0:

   print('На даній множині чисел розвязки відсутні.')

Протестувати програму декілька разів.

Тест 1. a=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-15,-18,-20,-24,-42]; у  першому циклі з лічильником 17.

 

 

Тест 2. a=[-1,2,-3,4,-5,6,-7,8,-9,10,-11,12,-15,18,-20,24,42]; у  першому циклі з лічильником 17.

 

 

Тест 3. a=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-12,0, 1,2,3,4,5,6,7,8,9,10,12]; у  першому циклі з лічильником 22

 

Завдання 2. Реалізувати алгоритм мовою програмування Python3 в середовищі програмування Thonny пошуку усіх цілих розвязків рівняння вигляду:

mx+ny=kxy,    де

m,n,k - відомі цілі числа,

х,у - невідомі цілі числа.

 

Аналіз математичної моделі.

Розкладемо на множники

mx+ny-kxy =0.

mx -kxy +ny =0.

х(m-kу)-(mn/k-nkу/k)= -mn/k  (від обох частин відняли -mn/k  )

x(m-kу)-n/k(m-ky)= -mn/k 

отже, маємо рівняння у вигляді множників.

(m-ky)(n/k-х)= mn/k 

 

Можливі декілька випадків,  наприклад,

якщо НСД(m,n,k)=1, тоді  k=1 або k= -1 або ( k=m, k=-m, k=-n, k=n)

Отримаємо два рівняння в цілих числах:

1)(m-y)(n-х)= mn, якщо k=1

    Тому,

1)   m-y =m і  n-х =n;  звідси у1=0,  х1=0    (0;0)

2)    m-y =n і  n-х =m;  звідси у2=m-n,  х2=n-m    (n-m; m-n)

 

2)(y+m)(n+х)= mn,   якщо k=- 1

 

3)   y+m = -m і  n+х = -n;  звідси у3=-2m,  х3=-2n ;    (-2n; -2m)

4)    m+y = -n і  n+х = -m;  звідси у4=-m-n,  х4=-n-m;  (-n-m; -n-m)

і так далі…

Реалізація.

print('Пошук  цілих розвязків рівняння: mx+ny=kxy.')

a=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,0, 1,2,3,4,5,6,7,8,9,10];

b=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,0, 1,2,3,4,5,6,7,8,9,10];

p=0; m=3; n=2; k=1;

for x in range(21):

    for y in range(21):

        if m*a[x]+n*b[y]==k*a[x]*b[y]:

                    p+=1

                    print(p,'-ий цілий розвязків рівняння: ',m,'x+',n,'y=',k,'xy: (x,y)=(',a[x],'; ',b[y],')')

if n==0:

   print('На даній множині чисел розвязки відсутні.')

 

 

Протестувати програму декілька разів.

Тест 1. m=5; n=1; k=20;

Тест 2. m=-3; n=-2; k=1;

Тест 3. m=-1; n=20; k=2;

 

Завдання 3. Реалізувати алгоритм мовою програмування Python3 в середовищі програмування Thonny пошуку усіх цілих розвязків рівняння вигляду: 

xy+xz+yz=xyz.

Реалізація.

print('Пошук цілих розвязків рівняння: xy+xz+yz=xyz.')

a=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,0, 1,2,3,4,5,6,7,8,9,10];

b=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,0, 1,2,3,4,5,6,7,8,9,10];

c=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,0, 1,2,3,4,5,6,7,8,9,10];

n=0

for x in range(21):

    for y in range(21):

        for z in range(21):

            if a[x]*b[y]+a[x]*c[z]+b[y]*c[z]==a[x]*b[y]*c[z]:

                    n+=1

                    print(n,'-ий цілий розвязків рівняння: xy+xz+yz=xyz: (x,y,z)=(',a[x],'; ',b[y],'; ',c[z],')')

if n==0:

   print('На даній множині чисел розвязки відсутні.')

 

Протестувати програму декілька разів.

Тест 1. a=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-15,-18,-20,-24,-42];

Тест 2. a=[-1,2,-3,4,-5,6,-7,8,-9,10,-11,12,-15,18,-20,24,42];

Тест 3. a=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,0, 1,2,3,4,5,6,7,8,9,10]; у  першому циклі з лічильником 21

 

 

Завдання 4. Реалізувати алгоритм мовою програмування Python3 в середовищі програмування Thonny пошуку усіх цілих додатних розвязків рівняння вигляду: 

xyz+xzt+xyt+tyz=xyzt

                                       

Проаналізуємо математичну модель.

Зразок трикутника рівнянь

x+y=x*y

x*y+y*z+x*z=x*y*z

x*y*z+x*z*t+x*y*t+t*y*z=x*y*z*t.

**************і так далі*********************

 

2+2=2*2

3*3+3*3+3*3=3*3*3

4*4*4+4*4*4+4*4*4+4*4*4=4*4*4*4

************і так далі***********************

 

Зрозуміло, що взаємозаміна змінних на х на у не змінює рівняння. Тобто,виконуючи взаємозаміну будь-яких змінних, рівняння при цьому не змінюється. Тому, маючи один розв’язок, наприклад,

(x,y,z,t)=(42 ;  2 ;  3 ;  7 ) можна отримати одразу ще 4*3*2*1=24 розв’язків рівняння, наприклад:

 (x,y,z,t)=( 42 ;  2 ;  7 ;  3 )

 (x,y,z,t)=( 42 ;  3 ;  2 ;  7 )

 (x,y,z,t)=( 42 ;  3 ;  7 ;  2 )

 (x,y,z,t)=( 42 ;  7 ;  2 ;  3 )

 (x,y,z,t)=( 42 ;  7 ;  3 ;  2 )

Виясняється, що в натуральних числах розв’язки даного рівняння  існують тільки на обмежених множинах для впорядкованих розв’язків у порядку зростання змінних x<=y<=z<=t:

Х={2;3;4}

Y={3;4;5;6}

Z={4;5;6;7;8;9;10;11;12}

T={4;6;8;10;12;15;18;20;24;42}

xyz+xzt+xyt+tyz=xyzt.

Очевидно, що четвірка чисел: (х,у, z, t)=(4,4,4,4)  являється розв’язком рівняння 

xyz+xzt+xyt+tyz=xyzt

Проте треба знайти інші нетривіальні розвязки цього рівняння.

 

Реалізація.

print('Пошук цілих розвязків рівняння: xyz+xzt+xyt+tyz=xyzt.')

a=[1,2,3,4,5,6,7,8,9,10,11,12,15,18,20,24,42];

b=[1,2,3,4,5,6,7,8,9,10,11,12,15,18,20,24,42];

c=[1,2,3,4,5,6,7,8,9,10,11,12,15,18,20,24,42];

d=[1,2,3,4,5,6,7,8,9,10,11,12,15,18,20,24,42];

n=0

for x in range(17):

    for y in range(17):

        for z in range(17):

            for t in range(17):

                if a[x]*b[y]*c[z]+a[x]*c[z]*d[t]+a[x]*b[y]*d[t]+d[t]*b[y]*c[z]==a[x]*b[y]*c[z]*d[t]:

                    n+=1

                    print(n,'-ий цілий розвязків рівняння: xyz+xzt+xyt+tyz=xyzt: (x,y,z,t)=(',a[x],'; ',b[y],'; ',c[z],'; ',d[t],')')

if n==0:

   print('На даній множині чисел розвязки відсутні.')

 

Протестувати програму декілька разів.

Тест 1. a=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,-12,-15,-18,-20,-24,-42];

Тест 2. a=[-1,2,-3,4,-5,6,-7,8,-9,10,-11,12,-15,18,-20,24,42];

Тест 3. a=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,0, 1,2,3,4,5,6,7,8,9,10]; у  першому циклі з лічильником 21

 

 

Завдання 5. Реалізувати алгоритм мовою програмування Python3 в середовищі програмування Thonny пошуку усіх цілих розвязків рівняння вигляду: 

 qxy+gxz+pyz=fxyz,  

де  q,g,p,f - відомі цілі числа  x,y,z - невідомі цілі числа.

Реалізація.

 

print('Пошук цілих розвязків рівняння qxy+gxz+pyz=fxyz.')

a=[-1,-2,-3,-4,-5,0, 1,2,3,4,5];

b=[-1,-2,-3,-4,-5,0, 1,2,3,4,5];

c=[-1,-2,-3,-4,-5,0, 1,2,3,4,5];

n=0; q=2; g=3; p=2; f=7;

for x in range(11):

    for y in range(11):

        for z in range(11):

            if q*a[x]*b[y]+g*a[x]*c[z]+p*b[y]*c[z]==f*a[x]*b[y]*c[z]:

                    n+=1

                    print(n,'-ий цілий розвязків рівняння: ',q,'xy+',g,'xz+',p,'yz=',f,'xyz: (x,y,z)=(',a[x],'; ',b[y],'; ',c[z],')')

if n==0:

   print('На даній множині чисел розвязки відсутні.')

 

Протестувати програму декілька разів.

Тест 1. q=1; g=3; p=2; f=5;

Тест 2. q=-1; g=3; p=7; f=10;

Тест 3.  q=6; g=-3; p=2; f=-9;

 

 

Завдання 6. Реалізувати алгоритм мовою програмування Python3 в середовищі програмування Thonny пошуку усіх цілих розвязків рівняння вигляду:

 qxm+gzk+pyl=f, 

 де  q, g, p,f, m,k,l - відомі цілі числа  x,y,z - невідомі цілі числа.

 

Реалізація.

 

print('Пошук цілих розвязків рівняння qx^m+gy^k+pz^l=f.')

a=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,0, 1,2,3,4,5,6,7,8,9,10];

b=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,0, 1,2,3,4,5,6,7,8,9,10];

c=[-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,0, 1,2,3,4,5,6,7,8,9,10];

n=0; q=1; g=2; p=3; f=30; m=2; k=3; l=4;

for x in range(21):

    for y in range(21):

        for z in range(21):

            if q*(a[x]**m)+g*(b[y]**k)+p*(c[z]**l)==f:

                    n+=1

                    print(n,'-ий цілий розвязків рівняння: ',q,'x**',m,'+',g,'y**',k,'+',p,'z**',l,'=',f,': (x,y,z)=(',a[x],'; ',b[y],'; ',c[z],')')

if n==0:

   print('На даній множині чисел розвязки відсутні')

 

 

Протестувати програму декілька разів.

Тест 1. q=1; g=2; p=3; f=50; m=2; k=3; l=4;

Тест 2. q=1; g=1; p=1; f=3; m=2; k=2; l=2;

Тест 3.  q=1; g=1; p=1; f=800; m=5; k=4; l=3;