пʼятниця, 17 вересня 2021 р.

20.09.2021-26.09.2021 Алгоритми різних типів

 20.09.2021-26.09.2021

Тема: Алгоритми різних типів мовою програмування Python

05.05.2021-08.09.2021

Тема: Нелінійні  алгоритми пошуку унікальних розв'язків лінійних рівнянь з параметрами за відомими властивостями чисел.


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

Створення та аналіз математичної моделі  лінійних рівнянь з параметром для "коректного" опрацювання  в алгоритмі пошуку коренів із відомими властивостями.

 

Запитання 1. Як аналізувати математичні моделі лінійних рівнянь з параметрами, якщо корені рівняння мають бути тільки натуральними числами?

Відповідь. Продемонструємо зразок аналізу такого лінійного рівняння з параметром.

Завдання. Вказати усі такі дійсні значення  параметра  а, при яких  дане рівняння

х-2а=2а-6

 з невідомим дійсним  х має тільки натуральні корені:

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

Виконаємо тотожні перетворення даного рівняння, які не змінюють корені даного рівняння.

-ах - 2а=2а-6;

-ах =2а+ 2а-6

-ах =4а-6

x=-4+6/a

 

Таким чином, відповідно до умови завдання, корінь рівняння х= -4+6/а =m, де - натуральне число.

6/а =4+m;

a=6/(4+m)де - натуральне число.

Перевірка.

У дане рівняння замість параметра а підставити вираз (6/(4+m)), то ми отримаємо рівняння:

-ах + 2а=2а-6;

-(6/(4+m))х+2*(6/(4+m))=2*(6/(4+m)-6;

Однакові доданки в обох частинах зникають.

-(6/(4+m))х=-6;

Обидві частини помножимо на множник:(4+m)/6.

Отримаємо:

-(6/(4+m))х*(4+m)/6). =-6*(4+m)/6);

x=m+4де - натуральне число.

Відповідь:  Якщо a=6/(4+m)де - натуральне число, то корені даного рівняння -ах-2а=2а-6

це натуральні числа.

 

Реалізація мовою програмування Python3

 

import random

print('Якщо a=6/(4+m), де m - натуральне число, ')

print('то корені даного рівняння -ах-2а=2а-6') 

print('це натуральні числа.')

k=40

m=random.randint(1,k)

print('Якщо параметр a=',6/(4+m),' то 1-ий корінь рівняння x1(a)=',m,'=', -4+6/(6/(4+m)))

 

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

Тест 1. Якщо  k=200;

Тест 2Якщо  k=40000;

Тест 3Якщо  k=100000.

 

 

Запитання 2. Як аналізувати математичні моделі лінійних рівнянь з параметрами, якщо відомо, що корені даного рівняння знаходяться на даному числовому проміжку?

Відповідь. Продемонструємо зразок аналізу лінійного рівняння з параметром.

 

Завдання. Знайти усі такі значення  параметра  а, при яких розв’язок  рівнянь з невідомим дійсним значенням х:

5|а|+1-4х = -4|а|+6.

знаходиться на проміжку 1<х<3.

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

Виконаємо тотожні перетворення даного рівняння, які не змінюють корені даного рівняння.

5|а|+1-4х = -4|а|+6.

-4х=6-1-5|а|-4|а|;

-4х=5-9|а|;

х=-1,25+2,25|а|.

 

Відповідно до умови завдання запишемо подвійну нерівність:

1<х<3.

Замінимо значення х на вираз -1,25+2,25|а|. Отримаємо:

1 <-1,25+2,25|а| < 3.

До трьох частин подвійної нерівності додамо число 1,25:

1+1,25 <-1,25+1,25+2,25|а| < 3+1,25.

2,25 <2,25|а|<4,25.

Три частини подвійної нерівності поділимо на 2,25:

2,25/2,25 <2,25|а|/2,25 < 4,25/2,25.

1 < |а|< 17/9.

Розкривши знак модуля в подвійній нерівності, отримаємо два проміжки:

-17/9 < а < -1     та  1 < а < 17/9.

 

Відповідь:  Якщо -17/9 < а < -1     та  1 < а < 17/9, то  корені х=-1,25+2,25|а|.

даного рівняння

5|а|+1-4х = -4|а|+6.

знаходяться на інтервалі 1<х<3.

 

Реалізація мовою програмування Python3

 

import random

print('Якщо множина параметра -17/9<а<-1 та  1<а<17/9')

print('то  корені х=-1,25+2,25|а| для  даного рівняння') 

print('5|а|+1-4х=-4|а|+6 знаходяться на інтервалах: 1<х<3.')

k=100;  a=-1.88; b=1

h=float((0.888)/k);

a=[0]*100; b=[0]*100; a[0]=a; b[0]=b

for i in range(k):

     a[i]=-1.88+i*h;

     b[i]=1.001+i*h;

m=random.randint(1,49)

print('Якщо параметр a=',a[100-m],' то 1-ий корінь рівняння x1(a)=',-1.25+2.26*abs(a[m]))

print('Якщо параметр a=',a[100-m],' то 2-ий корінь рівняння x2(a)=',-1.25+2.26*abs(a[m]))

print('Якщо параметр b=',b[1+m],'то 1-ий корінь рівняння x1(b)=',-1.25+2.26*abs(b[m]))

print('Якщо параметр b=',b[1+m],' то 2-ий корінь рівняння x2(b)=',-1.25+2.26*abs(b[m]))

 

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

Тест 1. Якщо  k=20;

Тест 2Якщо  k=40;

Тест 3Якщо  k=10;

 

 

Запитання 3. Як аналізувати математичні моделі лінійних рівнянь з параметрами, якщо корені знаходяться на даному числовому проміжку вигляду  а<|х|?

Відповідь. Продемонструємо зразок аналізу лінійного рівняння з параметром.

 

 

Завдання. Знайти усі такі значення  параметра  а, при яких розв’язок  рівнянь

-2|х|+4а = -7  

знаходиться на проміжку 5<|х|<9

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

Виконаємо тотожні перетворення даного рівняння, які не змінюють корені даного рівняння.

-2|х|+4а = -7;  

-2|х|=-7-4а;

Поділимо на число -2 обидві частини рівняння. Отримаємо:

|х|=3,5+2а;

х1= 3,5+2а;

х2= -3,5-2а;

Розглянемо умови для першого кореня.

Відповідно до умови завдання запишемо подвійну нерівність для х1:

5<|х|<9,  або  два інтервали: -9<х1<-5   та   5<х1<9

Замінимо значення х на вираз 3,5+2а. Отримаємо:

-9<3,5+2а <-5       та       5<3,5+2а <9

До трьох частин кожної подвійної нерівності додамо число -3,5. Отримаємо:

-9-3,5<3,5-3,5+2а <-5-3,5  та  5-3,5<3,5-3,5+2а <9-3,5;

-12,5<2a<-8,5       та   1,5<2a<5,5;

Три частини кожної подвійної нерівності поділимо на 2. Отримаємо:

-12,5/2<2a/2<-8,5/2       та   1,5/2<2a/2<5,5/2;

-6,25<a<-4,25      та   0,75<a<2,75.

Розглянемо умови для другого кореня.

Відповідно до умови завдання запишемо подвійну нерівність для х2:

5<|х2|<9,  або  два інтервали: -9<х2<-5   та   5<х2<9

Замінимо значення х на вираз -3,5-2а. Отримаємо:

-9<-3,5-2а <-5       та       5<-3,5-2а <9

До трьох частин кожної подвійної нерівності додамо число 3,5. Отримаємо:

-9+3,5<-3,5+3,5-2а <-5+3,5  та  5+3,5<3,5-3,5-2а <9+3,5;

-5,5<-2a<-1,5       та   8,5<-2a<12,5;

Три частини кожної подвійної нерівності поділимо на -2. Отримаємо:

1,5/2<2a/2<5,5/2  та -12,5/2<2a/2<-8,5/2      

0,75<a<2,75 та  -6,25<a<-4,25     

 

Відповідь:  Якщо -6,25<a<-4,25      та  0,75<a<2,75, то  корені х1= 3,5+2а;  х2= -3,5-2а;  для  даного рівняння 

-2|х|+4а = -7     знаходяться на інтервалах: 5<|х|<9.

 

Реалізація мовою програмування Python3

 

import random

print('Якщо множина параметра -6,25<a<-4,25 та  0,75<a<2,75,')

print('то  корені х1=3,5+2а;  х2=-3,5-2а;  для  даного рівняння') 

print('-2|х|+4а = -7 знаходяться на інтервалах: 5<|х|<9.')

k=4; m=1;

a=float(random.randint(-k-2,-k))

b=float(random.randint(m,m+1))

print('Якщо параметр a=',a,' то корінь рівняння x1(a)=',3.5+2*a)

print('Якщо параметр a=',a,' то корінь рівняння x2(a)=',-3.5-2*a)

print('Якщо параметр b=',b,'то корінь рівняння x1(b)=',3.5+2*b)

print('Якщо параметр b=',b,' то корінь рівняння x2(b)=',-3.5-2*b)

 

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

Тест 1. Якщо  k=2;

Тест 2Якщо  k=3;

Тест 3Якщо  k=10;

 

 

Запитання 4. Як аналізувати математичні моделі лінійних рівнянь з параметрами, якщо корені знаходяться на множині цілих чисел, які при ділені на 3 дають остачу 2, тобто мають вигляд 3n+2, де - ціле число?

Відповідь. Продемонструємо зразок аналізу лінійного рівняння з параметром.

 

Завдання. Знайти усі такі значення  параметра  а, при яких розв’язок  рівнянь

8 +2|а|-5|х| = -2|а|

знаходиться у множині цілих чисел вигляду 3n+2, де n - ціле число?

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

Виконаємо тотожні перетворення даного рівняння, які не змінюють корені даного рівняння.

8 +2|а|-5|х| = -2|а|;

-5|х| = -2|а|-8 -2|а|;

-5|х| = -8 -4|а|;

|х| =1,6 +0,8|а|;

х1=-1,6-0,8|а|;

х2=1,6+0,8|а|;

 

Розглянемо умови для 1-ого кореня.

х1=-1,6-0,8|а|; при умові х2=3n+2.

Тому маємо таку рівність:

-1,6-0,8|а|=3n+2

-0,8|а|=3n+2+1,6;

|а|=-3,75n-4,5;   -3,75n-4,5>0; n<-1

a1=-3,75n-4,5 де n - ціле число, n<-1;

a2=3,75n+4,5 де n - ціле число,  n<-1.

 

 

Розглянемо умови для 2-ого кореня.

х2=1,6+0,8|а|; при умові х2=3k+2.

Тому маємо таку рівність:

1,6+0,8|а|=3k+2;

0,8|а|=3k+2-1,6;

|а|=3,75k+0,5;    3,75k+0,5>0;   k>-1

a3=-3,75k-0,5 де - ціле число, k>-1 ;

a4=3,75k+0,5 де - ціле число, k>-1.

 

 

Відповідь:  Якщо параметр  рівняння приймає такі значення:

a1=-3,75n-4,5 де n - ціле число, n<-1; тоді від’ємні корені: х1=-1,6-0,8|а|;

 

a3=-3,75k-0,5 де - ціле число, k>-1; тоді додатні корені: х2=1,6+0,8|а|;

 

тобто  корені даного рівняння являються цілими числами

вигляду 3m+2, де m - ціле число.

 

 

 

Реалізація мовою програмування Python3

 

print('Алгоритм пошуку коренів вигляду 3m+2 для рівняння 8+2|а|-5|х| = -2|а|')

print('Для конкретного значення а існує два корені у рівняння 8+2|а|-5|х| = -2|а|')

k=5; a1=[0]*k;  a3=[0]*k;  x1=[0]*k; x2=[0]*k;

for i in range(k):

    a1[i]=-3.75*(-i-2)-4.5; print('дозволений параметр   a1[',i,']=',a1[i])

for i in range(k):

    a3[i]=-3.75*i-0.5; print('дозволений параметр  a3[',i,']=',a3[i])

print('1-ий параметр вигляду: -3.75*i-4.5 - це множина чисел ',a1)

print('2-ий параметр вигляду: -3.75*i-0.5 - це множина чисел',a3)

for j in range(k):

    x1[j]=-1.6-0.8*abs(a1[j]); print('1-ий корінь рівняння для 1-го параметру  х1[',j,']=',int(x1[j]))

    print('Це 1-a множина відємних коренів рівняння 1-ий параметр вигляду: якщо а1=',-3.75*j-4.5, '; тоді x1=',int(x1[j]))

for j in range(k):

    x2[j]=1.6+0.8*abs(a3[j]);  print('2-ий корінь рівняння для 3-го параметру х2[',j,']=',int(x2[j]))

    print('Це 2-a множина додоатних коренів рівняння 2-ий параметр вигляду: якщо а3=',-3.75*j-0.5,'; тоді x2=',int(x2[j]))

 

   

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

Тест 1. Якщо  k=20;

Тест 2Якщо  k=30;

Тест 3Якщо  k=100;


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

          

Завдання 1.  Створити, реалізувати, протестувати алгоритм мовою програмування Python у середовищі програмуванняThonny, який за двома введеними цілими різнознаковими та різнопарними  числами а та b виводить:
1) послідовність чисел вигляду 19*(a+i)+110*(b+i) , де і- ціле число.


Реалізація. Цей  алгоритм використовує один  цикл із лічильником

 

print('Перший циклічний алгоритм утворення числової послідовності')  
print('Введіть число а=')     # виведення  повідомлення на монітор

a=int(input())                          # введення з клавіатури числа а

print('Введіть число b=')    # виведення  повідомлення на монітор

b=int(input())                         # введення з клавіатури числа b

for i in range(1, 29,4):         # команда повторення від 1 до 29 з кроком 4

      z=19*(a+i)+110*(b+i)                            #присвоєння змінній z суми двох чисел

      print('Число вигляду 19*',a+i,'110*',b+i,'=', z)   # виведення  суми на монітор

 

Протестувати алгоритм для трьох випадків: 1)a= -3; b =1;  2) a= 4; b = -7; 3) a= -6; b=5.

Завдання 2.  Створити, реалізувати, протестувати алгоритм мовою програмування Python у середовищі програмуванняThonny, який за двома введеними цілими різнознаковими, однакової парності  числами n та m виводить:

2) послідовність чисел вигляду  (m+7*(k-i))*(2*(m-k+i)), де і- ціле число;                  

Реалізація. Цей  алгоритм використовує один  цикл із лічильником


print('Другий циклічний алгоритм утворення числової послідовності')  

print('Введіть число m=')       # виведення  повідомлення на монітор

m=int(input())                            # введення з клавіатури числа m

print('Введіть число k=')        # виведення  повідомлення на монітор

k=int(input())                             # введення з клавіатури числа k

for i in range(100, -2, -15):         # команда повторення від 100 до -2 з кроком -15

     x=(m+7*(k-i))*(2*(m-k+i))                  # присвоєння змінній  x  добутку двох чисел

     print('(m+7*(k-i ))*(2*m-k+i)=', x)    # виведення  результату на монітор
 
Протестувати алгоритм для трьох випадків: 1)m= -2; n = 3;  2) m= 4; n = -4; 3) m= -1; n=3.

 

 Завдання 3.  Створити, реалізувати, протестувати алгоритм мовою програмування Python у середовищі програмуванняThonny, який за двома введеними цілими, однаковознаковими,  різнопарними числами r  та  виводить:
3) послідовність чисел  вигляду  (26*(r-i)+7*(t+i) )//(t-r+i), де і- ціле число;            

 

Реалізація. Цей  алгоритм використовує  один цикл із лічильником


print('Третій циклічний алгоритм утворення числової послідовності')  

print('Введіть число r =')       # виведення  повідомлення на монітор

r =int(input())                            # введення з клавіатури числа r

print('Введіть число t =')        # виведення  повідомлення на монітор

t=int(input())                             # введення з клавіатури числа t

for i in range(1, -34, -2):    # команда повторення від 10 до -14 з кроком -2

     y=(26*(r-i)+7*(t+i) )//(t-r+i)             # присвоєння змінній у  частки двох чисел

     print(i,'-e число (26*(r-i)+7*(t+i) )//(t-r+i)=', y)   # виведення  результату на монітор

Протестувати алгоритм для трьох випадків: 1)r= -7; t= - 4;  2) t= 5; r = 4; 3) r= -67; t= -12.

 

 

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

 

Реалізація. Це алгоритм використовує два  цикли із передумовою

 

print("це алгоритм суми зростаючої послідовності чисел до 101: цикл 1 з передумовою")

b=1

g=0

while b<89:

          b=2*b+1

          g=3*g+b

          print("b=", b, " Результат: g=", g)

else:

       print("вихід із циклу")

print("це алгоритм суми спадної послідовності чисел до 0: цикл 2 з передумовою")

c=100

p=0

while (c>-100)and(c<100):

          c=4*c-20

          p=5*p+2*c

          print("c=", c, " Результат: P=", p)

else:

        print("вихід із циклу")

 

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

 

Реалізація. Це алгоритм використовує два  вкладені цикли із лічильниками

 

print("це алгоритм пошуку деяких розвязків рівняння: 7a+2b=14")

s=0

k=0

for i in range(-20,20,1):

      for j in range(-20,20,1):

            s=7*i+2*j

            if s==14:

                print("Це розвязок рівняння: 7a+2b=14 ", "a=",i,"b=", j)

                k=k+1

print("Це кількість знайдених розвязок рівняння: k= ", k)

 

Протестуйте алгоритм  для рівнянь:  1) a+b=4;       2)  -2a+b=8;      3) -2a-8b=-18;  

 

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

Реалізація. Це алгоритм використовує три вкладені цикли із лічильниками

 

 

print("це алгоритм пошуку окремих розвязків рівняння: 8a+2b+6c=80")

s=0

k=0

for i in range(-10,10):

      for j in range(-10,10):

             for m in range(-10,10):

                    s=8*i+2*j+6*m

                   if s==80:

                       print("Це розвязок рівняння: 8a+2b+6c=80: ", "a=",i,"b=", j,"c=", m)

                       k=k+1

print("Це кількість знайдених розвязок рівняння: k= ", k)


Протестуйте  алгоритм для рівнянь:  1) a+b+c=4;       2)  -2a+b+4c=8;      3) -2a+b+4c=8.


Результати виконаної практичної частини надіслати на електронну адресу учителя: vinnser@gmail.com




**********

Завдання на розвиток  кмітливості 

та винахідливості

































 




Для наступних завдань записати, реалізувати програму мовою програмування та протестувати її на правильність.

Завдання на програмування мовою Pascal або Python

Початковий рівень

Завдання з програмування слідувань

Для наступних завдань записати, реалізувати програму мовою програмування та протестувати її на правильність.

 

 

Завдання 1.0 Дано відстань L в сантиметрах. Використовуючи операцію ділення без остачі, знайти кількість повних метрів в нім (1 метр = 100 см).

Завдання 1.1. Дано тризначне число. Вивести спочатку його останню цифру (одиниці), а потім - його середню цифру (десятки).

Завдання 1.2. З початку доби пройшло N секунд (N - ціле). Знайти кількість повних годин, що пройшло з початку доби.

Завдання 2.0 Дано маса M в кілограмах. Використовуючи операцію ділення без остачі знайти кількість повних тонн в ній (1 тонна = 1000 кг).

Завдання 2.1. Дано тризначне число. Знайти суму і добуток його цифр.

Завдання 2.2. З початку доби пройшло N секунд (N - ціле). Знайти кількість секунд, що пройшли з початку останньої хвилини.

Завдання 3.0 Даний розмір файлу в байтах. Використовуючи операцію ділення без остачі знайти кількість повних кілобайт, які займає даний файл (1 кілобайт = 1024 байти).

Завдання 3.1. Дано тризначне число. У нім закреслили першу зліва цифру  приписали її справа. Вивести отримане число.

Завдання 3.2. З початку доби пройшло N секунд (N - ціле). Знайти кількість секунд, що пройшли з початку останньої години.

 Завдання 4.0 Дані цілі позитивні числа A і B (A > B). На відрізку довжини A розміщена максимально можлива кількість відрізків довжини В (без накладень). Використовуючи операцію ділення без остачі, знайти кількість відрізків B, розміщених на відрізку A.

Завдання 4.1. Дано тризначне число. Вивести число, отримане при прочитанні початкового числа справа наліво.

Завдання 4.2. З початку доби пройшло N секунд (N - ціле). Знайти кількість повних хвилин, що пройшли з початку останньої години.

Завдання 5.0 Дані цілі позитивні числа A і B (A > B). На відрізку довжини  розміщена максимально можлива кількість відрізків довжини B (без накладень). Використовуючи операцію узяття залишку від ділення без остачі, найти довжину незайнятої частини відрізку A.

Завдання 5.1. Дано тризначне число. У нім закреслили першу справа цифру і приписали її зліва. Вивести отримане число.

Завдання 5.2. Дні тижня пронумеровані таким чином: 0 – нeділя, 1 - понеділок, 2 - вівторок . . ., 6 - субота. Дано ціле число K, що в діапазоні 1-365. Визначити номер дня тижня для K -го дня року, якщо відомо, що цього року 1 січня було понеділком.

 

Середній рівень

Складіть програми мовою програмування 

або Scratch  або Python або  Pascal 

для розв´язування наступних задач

Завдання з програмування слідувань

D1.Програма задає два випадкових додатних парних числа k та b.  Створити алгоритм мовою програмування, який спочатку додає до кожного числа однакове випадкове число, що більше 102, а потім знаходить потроєну суму  двох чисел.  А в  остаточному результаті  виводить остачу від  ділення знайденої суми на 12.

D2. Програма задає два випадкових непарних числа k та b, що більші, ніж 199 і менші 899.  Створити алгоритм мовою програмування, який спочатку знаходить квадрати обох чисел, а потім середнє арифметичне цих квадратів.  А в  остаточному результаті  виводить остачу від  ділення  середнього арифметичного на 13.

D3. Програма задає два випадкових непарних числа k та b, що більші, ніж 399 і менші 999.  Створити алгоритм мовою програмування, який спочатку знаходить більше число та його квадрат , а потім знаходить куб меншого числа,   а потім знаходить їхнє середнє арифметичне квадрату та кубу.  А в  остаточному результаті  виводить остачу від  ділення  середнього арифметичного на 19.

D4. Програма задає два випадкових непарних числа k та b, що більші, ніж 499 і менші 799.  Створити алгоритм мовою програмування, який спочатку знаходить більше число та його подвоює, а потім знаходить потроєне менше число,  а потім знаходить їхнє середнє арифметичне.  А в  остаточному результаті  виводить остачу від  ділення  середнього арифметичного на 17.

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

Завдання E

 Завдання з програмування слідувань та розгалужень


E1. Дано два випадкових числа. Визначити більше з двох чисел за допомогою таких трьох дій.
1. Знайти середнє арифметичне двох чисел.
2. Знайти модуль різниці двох чисел.
3. Додати два попередні результати.
Упорядкувати ці числа за зростання.


E2. Дано два випадкових числа. Визначити менше з двох чисел за допомогою таких дій.
1)Знайти середнє арифметичне двох чисел.
2)Знайти модуль різниці двох чисел.
3)Від середнього арифметичного відняти модуль  різниці, тобто, відняти два попередні результати.
Упорядкувати ці числа за спаданням.


E3. Дано три випадкових числа. Визначити більше з таких трьох чисел за допомогою умовних операторів розгалуження. Упорядкувати ці числа за спаданням.

E4. Дано три випадкових числа. Визначити менше з таких трьох чисел за допомогою умовних операторів розгалуження. Упорядкувати ці числа за зростання.

E5. Дано чотири випадкових числа. Визначити більше з таких  чисел за допомогою умовних операторів розгалуження. Упорядкувати ці числа за спаданням.

E6 Дано чотири випадкових числа. Визначити менше з таких  чисел за допомогою умовних операторів розгалуження. Упорядкувати ці числа за зростанням.

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

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