пʼятниця, 3 грудня 2021 р.

06.12.2021-12.12.2021 Нелінійні алгоритми з масивами.

  

06.12.2021-12.12.2021

 

Тема: Нелінійні алгоритми з масивами.

 

 

Теоретична частина

 

Інформаційна частина заняття.

Учень розповідає про українського математика Михайла Кравчука

"Михайло Кравчук - математик широкого масштабу. Його ім'я добре відоме у світовій математичній науці. Світ не знав лише, що він - українець." Довго не знали про цю надзвичайно талановиту людину і його земляки. Про це з болем пише у своїй статті його син О.М. Кравчук, доцент Волинського державного університету. Адже ім'я М. Кравчука було занесено до списку "ворогів народу", а сам він, повний енергії і творчих задумів, був засланий на Колиму і пішов з життя у неповних п'ятдесят років.

Лише 1992 року, після довгих літ забуття, наукова громадськість України та світу широко відзначила 100-річчя від дня народження видатного вченого. Його ім'я було занесено по лінії ЮНЕСКО до Міжнародного календаря визначних наукових діячів. Для цього були поважні підстави, адже праці М.П. Кравчука становлять фундаментальне надбання кількох галузей математичної науки.

З наведених нарисів та статей ти довідаєшся, що народився М. Кравчук 1892 року у селі Човниці на Волині в сім'ї інженера-землеміра. Початкову освіту він здобув удома. Його мати була освіченою жінкою, знала кілька іноземних мов і добре виховувала чотирьох дітей. 1901 року сім'я переїхала до Луцька, де в 1910 році Михайло Кравчук закінчив гімназію із золотою медаллю. Цього ж року він вступив на математичне відділення фізико-математичного факультету університету Св. Володимира в Києві, закінчив його у 1914 р. з дипломом 1-го ступеня і залишився в ньому працювати.
Відтоді й почалася його титанічна творча наукова і педагогічна праця. Він викладав різні математичні курси у багатьох вищих та середніх закладах м. Києва.

У роки громадянської війни М. Кравчук виїжджає на село. У 1919-21 рр. він був викладачем і директором школи в селі Саварці на Богуславщині. Його колишні учні, які вступали до технікумів та вузів, вражали викладачів своїми знаннями з математики. У цій школі під опікою М.П. Кравчука розпочав свій шлях у велику науку сільський хлопець Архип Люлька, пізніше - відомий український вчений, творець реактивних авіадвигунів. До речі, у Київському політехнічному інституті лекції М. Кравчука слухав і майбутній славетний конструктор космічних кораблів Сергій Корольов.

Михайло Пилипович був людиною неабиякої ерудиції та культури. У 25 років він став приватдоцентом кафедри математики, у 33 - доктором наук, у 37 - дійсним членом Всеукраїнської академії наук. Вільно володіючи кількома мовами, він підтримував наукові й особисті дружні стосунки з відомими математиками світу - Адамаром, Гільбертом, Курантом та ін. Свої наукові праці писав різними мовами, але найбільше - рідною. Академік М. П. Кравчук брав найактивнішу участь у творенні української наукової термінології та у запровадженні наукової мови в математичну галузь.
М. П. Кравчук належав до тих учених, чиї праці відкривають нові шляхи у розвитку науки і передбачають напрямки її розвитку в майбутньому.

"Моя любов - Україна і математика", - ці слова Михайла Пилиповича Кравчука викарбовано на гранітному постаменті пам'ятника, який встановлено йому в 2003 році перед корпусом музею Національного технічного університету України "Київський "Київський політехнічний інститут". У селі, де він народився, в 1979 році відкрито музей та встановлено погруддя великого патріота і математика.

 

 

Практична частина

Завдання 1. Створити алгоритм для виведення таблиці 5х7 випадкових цілих чисел на Python3 у середовищі Thonny.

Реалізація.

import random

print(" Алгоритм 1 ")

def rand_matrix(n,m):
    A=[[random.randint(-9,9) for j in range(m)] for i in range(n)]
    return A
def show_matrix(A):
    for a in A:
        for b in a:

            print(b, end="   ")
        print()
A=rand_matrix(5,7)
show_matrix(A)
print(A)

 

 

Завдання 2. Створити алгоритм для множення на число і додавання двох числових таблиць розмірами 4х4 випадкових цілих чисел на Python3 у середовищі Thonny.

Реалізація.

import random

print(" Алгоритм 2 ")

def rand_matrix(n,m):

    A=[[random.randint(0,9) for j in range(m)] for i in range(n)]

    return A

def show_matrix(A):

    for a in A:

        for b in a:

            print(b, end="   ")

        print()

def suma_matrix(n,m):

    C=[[A[i][j]+B[i][j] for j in range(m)] for i in range(n)]

    return C

def dobutok_matrix(n,m,k, t):

    D=[[(A[i][j])*k for j in range(m)] for i in range(n)]

    F=[[(B[i][j])*t for j in range(m)] for i in range(n)]

    S=[[D[i][j]+F[i][j] for j in range(m)] for i in range(n)]

    return S

print("Перша таблиця випадкових цілих чисел або матриця А(4,4): ")

A=rand_matrix(4,4); show_matrix(A)

print("Друга таблиця випадкових цілих чисел або матриця B(4,4): ")

B=rand_matrix(4,4); show_matrix(B)

print("Третя таблиця випадкових цілих чисел або матриця С(4,4): ")

C=rand_matrix(4,4); show_matrix(C)

print("Четверта таблиця випадкових цілих чисел або матриця D(4,4): ")

D=rand_matrix(4,4); show_matrix(D)

print("Пята таблиця випадкових цілих чисел або матриця F(4,4): ")

F=rand_matrix(4,4); show_matrix(F)

print("Шоста таблиця випадкових цілих чисел або матриця S(4,4): ")

S=rand_matrix(4,4); show_matrix(S)

print("Таблиця чисел або матриця C(4,4)=A(4,4))+B(4,4): ")

print("Додавання двох таблиць чисел або матриць A(4,4)+B(4,4): ")

suma_matrix(4,4); show_matrix(C)

print("Множення двох таблиць на число і сума матриць -8*A(4,4)+9*B(4,4): ")

dobutok_matrix(4,4,-8, 9); show_matrix(S);

 

 

Завдання 3. Створити алгоритм  мовою програмування Python3 для знаходження властивостей подільності трицифрового натурального числа в середовищі програмування Thonny.

Реалізація.


import random

print(" Алгоритм 3 ")

print("пошук властивостей числа: abc")

k=random.randint(100,998)

print("трицифрове число:",k)

a=k//100; print("цифра розряду сотень:",a)

b=(k-a*100)//10; print("цифра розряду десятків:",b)

c=k%10; print("цифра розряду одиниць:",c)

if (a!=b)and (a!=c)and (b!=c):

     print("немає рівних цифр")

if (a==b) or (b==c) or (a==c):

     print("має однакові цифри")

if (a==c):

    print("це число паліндромне")

g=max([a,b,c]); q=min([a,b,c])

p=a+b+c-g-q

if q+p>g:

     print("це трикутне число")

if g==p+q:

     print("це дивакувате число")

if g==p*q:

    print("це добуткове число")

if (g==p**2)or(g==q**2)or(p**2==q):

     print('це квадратоване число')

if (g==c)and(a==q)and(p==b):

     print('це неспадний порядок цифр числа')

if (g==a)and(q==c)and(p==b):

     print('це незростаючий порядок цифр числа')

if (c%2==0)and((a+b+c)%3==0)and((a+b+c)%9==0):

     print('це парне число, що ділиться на 3, на 6, на 9, на 18')

if (c%2==0)and(c%5==0)and((a+b+c)%3==0):

     print('це парне число, що ділиться на 3, на 6, на 10, на 15')

h=[2,3,5,7,11,13,17,19,23,29,31]

v=['None']*11

z=0

m=0

for j in range(len(h)):

    z=z+k%int(h[j])

    print("k=",k,"=", h[j],"*",k//int(h[j]), "+", k%int(h[j]))

    if k%int(h[j])==0:

        print("це складене число")

    else:

        m=m+1

if m==11:

   print("це просте число")

else:

     print("це складене число")

 


Завдання 4. Створити алгоритм  мовою програмування Python3 для знаходження найменшого значення виразу з модулями вигляду: m*|x-a|+n*|x-b|, якщо  змінні a,b,m,n – натуральні  числа в середовищі програмування Thonny.

Реалізація.


import random


print(" Алгоритм 4 ")

print("Глобальний екстремум(MIN,MAX)")

print("Вираз з модулями: m*|x-a|+n*|x-b|=?")

q=10000

m=random.randint(-q,q)

n=random.randint(-q,q)

a=random.randint(-q,q)

b=random.randint(-q,q)

print("Вираз:",m,"*|x-",a,"|+",n,"*|x-",b,"|")

print("m=",m, "n=",n)

print("a=",a, "b=",b)

print("m+n=",m+n)

FA=n*abs(a-b)

FB=m*abs(b-a)

if m+n>=0:

    print(" MIN_F(х)= m*|x-a|+n*|x-b|=", min([FA,FB]))

else:

        print("MAX_F(х)= m*|x-a|+n*|x-b|", max([FA,FB]))

 

Завдання 5. Створити та протестувати алгоритм виведення постійного  числового масиву у вигляді  таблиці чисел, розміром 2х2.

Реалізація.

print('Алгоритм 5 виведення масиву А на екран')

А=[[1,2],[3,4]]

print('Двовимірний масив А має вигляд')

for n in range(2):

      for m in range(2):

            print(А[n][m], end=' ')

      print('  ')  

Завдання 6. Створити та протестувати алгоритм виведення числового масиву у вигляді  таблиці чисел, розміром 3х3, при цьому замінити усі елементи на головній діагоналі на 0.

Реалізація.

print('Алгоритм 6 виведення масиву B на екран')

B=[[1,2,3],[4,5,1],[3,4,5]]

print('Двовимірний масив B із ненульовими діагональними елементами має вигляд')

for n in range(3):

      for m in range(3):

            if m==n:

                 B[n][m]=0

           print(B[n][m], end=' ')

      print('  ')

Завдання 7.  Створити та протестувати алгоритм виведення числового масиву у вигляді  таблиці чисел, розміром 4х4, при цьому замінити усі елементи, окрім елементів на головній діагоналі, - на 0.

Реалізація.

print('Алгоритм 7 виведення масиву C на екран')

C=[[1,2,3,4],[2,3,4,5],[3,4,5,1],[4,5,1,2]]

print('Двовимірний масив C  із ненульовими діагональними елементами має вигляд')

for n in range(4):

      for m in range(4):

            if m!=n:

                 C[n][m]=0

            print(C[n][m], end=' ')

      print('  ')

Завдання 8.  Створити та протестувати алгоритм виведення числового масиву у вигляді  таблиці чисел, розміром 5х5, при цьому замінити усі парні елементи, окрім непарних елементів, на 1000.

Реалізація.

print('Алгоритм 8 виведення масиву D на екран')

D=[[1,2,3,4,5],[2,3,4,5,1],[3,4,5,1,2],[4,5,1,2,3],[5,1,2,3,4]]

print('Двовимірний масив D має вигляд')

for n in range(5):

    for m in range(5):

        if D[n][m]%2==0:

             D[n][m]=1000

        print(D[n][m], end=' ')

    print('  ') 

Завдання 9.  Створити та протестувати алгоритм виведення числового масиву у вигляді  таблиці чисел, розміром 5х6, при цьому замінити усі непарні елементи, окрім парних елементів, на 7777.

Реалізація.

print('Алгоритм 9 виведення масиву E на екран')

E=[[1,2,3,4,5,6],[2,3,4,5,1,6],[3,4,5,1,2,6],[4,5,1,2,3,6],[5,1,2,3,4,6]]

print('Двовимірний масив E має вигляд')

for n in range(5):

      for m in range(6):

            if E[n][m]%2==1:

                E[n][m]=7777

            print(E[n][m], end='     ')

    print('  ') 

Протестувати алгоритм для двовимірного масиву розміром   7х4.

Завдання 10.  Створити та протестувати алгоритм виведення числового масиву у вигляді  таблиці чисел, розміром 5х7, при цьому замінити усі непарні елементи на 3333,  а парні елементи - на 2222.

Реалізація.

print('Алгоритм 10 виведення масиву F на екран')

F=[[1,2,3,4,5,6,7],[2,3,4,5,1,6,7],[3,4,5,1,2,7,6],[4,5,1,2,3, 7, 6],[5,1,2,3,7, 6, 4]]

print('Двовимірний масив F має вигляд')

for n in range(5):

      for m in range(7):

            if F[n][m]%2==0:

                  F[n][m]=2222

           if F[n][m]%2==1:

                 F[n][m]=3333

          print(F[n][m], end='     ')

     print('  ')    

Протестувати алгоритм для двовимірного масиву розміром   5х3.

 

  Завдання 11.  Створити та протестувати алгоритм виведення числового масиву у вигляді  таблиці чисел, розміром 5х8, при цьому замінити усі 3k-елементи на 9999,  а усі 3k+1-елементи - на 7777, тa усі усі 3k+2-елементи - на 5555,

Реалізація.

print('Алгоритм 11 виведення масиву G на екран')

G=[[1,2,3,4,5,6,7,8],[2,3,4, 6,7,8, 5,1],[3,4,5,1,6,7,8,2],[4,5,1,2,6,7,8, 3],[5,1,2,6,7,8, 3,4]]

print('Двовимірний масив G має вигляд')

for n in range(5):

    for m in range(8):

        if G[n][m]%3==0:

             G[n][m]=9999

        if G[n][m]%3==1:

             G[n][m]=7777

        if G[n][m]%3==2:

             G[n][m]=5555

        print(G[n][m], end='     ')

    print('  ')   

Протестувати алгоритм для двовимірного масиву розміром   5х2.

 

 

 

Завдання 12. Створити алгоритм  мовою програмування Python3 для знаходження найменшого значення виразу з модулями вигляду: m*|x-a|+n*|x-b|+k*|x-c|,  якщо  змінні a,b,с,m,n,k –  різні натуральні  числа в середовищі програмування Thonny.

 

import random

print(" Алгоритм 12 ")

print(" Пошук глобального  екстремуму(або MIN, або MAX)")

print("Вираз з модулями: m*|x-a|+n*|x-b|+k*|x-c|=?")

q=100

m=random.randint(-q,q)        # присвоєння випадкового цілого числа змінній m

n=random.randint(-q,q)          # присвоєння випадкового цілого числа змінній n

k=random.randint(-q,q)          # присвоєння випадкового цілого числа змінній k

a=random.randint(-q,q)        # присвоєння випадкового цілого числа змінній a

b=random.randint(-q,q)        # присвоєння випадкового цілого числа змінній b

c=random.randint(-q,q)      # присвоєння випадкового цілого числа змінній c

g=max([a,b,c]); q=min([a,b,c]); p=a+b+c-g-q; s=m+n+k

print("Точки екстремуму:","x1=",q, "x2=",p, "x3=", g)

print("Вираз з модулями:",m,"*|x-",q,"|+",n,"*|x-",p,"|+",k,"*|x-",g,"|")

print("Коефіцієнти:","m=",m, ";n=",n, ";k=", k, ";Сума: m+n+k=",m+n+k)

print("1-ий проміжок: x<",q)

if -m-n-k==0:

    F1=m*q+n*p+k*g; print("константа, якщо х<x1, F1(x)=", F1); FQ=F1  

elif -m-n-k<0:

    k1=-m-n-k; l1=m*q+n*p+k*g; FQ=k1*q+l1; X01=-l1/k1

    print("спадна, якщо х<x1, F1(x)=",k1,"*x+",l1,"FQ=",k1*q+l1,"X01=",-l1/k1)

else:

    k1=-m-n-k; l1=m*q+n*p+k*g; FQ=k1*q+l1;X01=-l1/k1

    print("зростаюча, якщо х<x1, F1(x)=",k1,"*x+",l1,"FQ=",k1*q+l1,"X01=",-l1/k1)  

print("2-ий проміжок: xє[",q, ";",p,")")

if m-n-k==0:

    F2=-m*q+n*p+k*g; print("константа, якщо х<x1, F2(x)=", F2); FP=F2 

elif m-n-k<0:

    k2=m-n-k; l2=-m*q+n*p+k*g;FP=k2*p+l2; X02=-l2/k2

    print("спадна, якщо x1 < x < x2, F2(x)=",k2,"*x+",l2, "FP=",k2*p+l2,"X02=",-l2/k2)

else:

    k2=m-n-k; l2=-m*q+n*p+k*g;   FP=k2*p+l2;X02=-l2/k2

    print("зростаюча, якщо x1 < x < x2, F2(x)=",k2,"*x+",l2,  "FP=",k2*p+l2, "X02=",-l2/k2)

print("3-iй проміжок: xє[",p, ";",g,")")

if m+n-k==0:

    F3=-m*q-n*p+k*g; print("константа, якщо x2< х <x3, F3(x)=", F3);FG=F3 

elif -m+n+k<0:

    k3=m+n-k; l3=-m*q-n*p+k*g; FG=k3*g+l3; X03=-l3/k3

    print("спадна, якщо x2 < x < x3, F3(x)=",k3,"*x+",l3,  "FG=",k3*g+l3, "X03=",-l3/k3)

else:

    k3=m+n-k; l3=-m*q-n*p+k*g; FG=k3*g+l3; X03=-l3/k3

    print("зростаюча, якщо x2 < x < x3, F3(x)=",k3,"*x+",l3,  "FG=",k3*g+l3,"X03=",-l3/k3) 

print("4-iй проміжок: xє[",g, "; +oo)")

if +m+n+k==0:

    F4=-m*q-n*p-k*g; print("константа, якщо x3< х <+oo, F4(x)=", F4); FG=F4  

elif +m+n+k<0:

    k4=m+n+k; l4=-m*q-n*p-k*g; FG= k4*g+l4; X04=-l4/k4 

    print("спадна, якщо x3 < x < +oo, F4(x)=",k4,"*x+",l4, "FG=",k4*g+l4,"X04=",-l4/k4 )

else:

    k4=m+n+k; l4=-m*q-n*p-k*g; FG= k4*g+l4

    print("зростаюча, якщо x3 < x < +oo, F4(x)=",k4,"*x+",l4, "FG=",k4*g+l4,"X04=",-l4/k4 ) 

if m+n+k==0:

    MIN=min([FQ,FP,FG]); MAX=max([FQ,FP,FG])

    print("MIN=", MIN, "MAX=",MAX)

elif m+n+k<0:

    MIN=min([FQ,FP,FG]); MAX=max([FQ,FP,FG])

    print("LOCAL_MIN=", MIN, "GLOBAL_MAX=",MAX)

else:

    MIN=min([FQ,FP,FG]); MAX=max([FQ,FP,FG])

    print("LOCAL_MAX=", MAX, "GLOBAL_MIN=",MIN)

 

Результати виконання практичної частини надіслати не eлектронну адресу учителя:

vinnser@gmail.com

**********************

Немає коментарів:

Дописати коментар