Справочник от Автор24
Поделись лекцией за скидку на Автор24

Вычислительная математика

  • ⌛ 2022 год
  • 👀 408 просмотров
  • 📌 359 загрузок
Выбери формат для чтения
Загружаем конспект в формате doc
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
Конспект лекции по дисциплине «Вычислительная математика» doc
  Преподаватель: Клинаев Юрий Васильевич, д.ф.-м.н., профессор 10.01.2022 бЗ-ИВЧТипу -31 Д-362 09:45-11:15 лекция Вычислительная математика Д-356 11:30-13:00 лекция Вычислительная математика (Методы) № почта 1. Алимов Александр Дмитриевич sanek1998_ax@mail.ru 2. Афонин Андрей blackufor@gmail.com 3. Белинин Владислав Олегович vladbelinin.vv@gmai.com 4. Буслаева Алина Игоревна buslaeva.alina@bk.ru 5. Глухов Кирилл Игоревич  kiryshqaaaa@mail.ru 6. Грачёв Денис Дмитриевич d.grachev@volga.rt.ru 7. Гуляев Руслан Азадович 89085403354 8. Долгов Ярослав Владимирович yaroslav.dolgov.97@mail.ru 9. Ефремов Никита Дмитриевич  Glog0070@yandex.ru 10. Жигачев Дмитрий Алексеевич zhigachevdima@mail.ru 11. Кадушкин Андрей Вячеславович andrey.kadushkin1998@gmail.com 12. Кениг Артём Владимирович  temak1998@yandex.ru 13. Кудряшов Артём Владимирович kudryashov.artyom98@gmail.com 14. Куку Владислав Сергеевич vladislav24031999@mail.ru 15. Макян Артур Сагателович artur_makyann@mail.ru 16. Никифоров Владислав Витальевич marjerovine@gmail.com 17. Потапов Владислав Евгеньевич 89172111013q@gmail.com 18. Сафонов Евгений Константинович safon64r@yandex.ru 19. Титов Артем Геннадьевич artemtitov609@gmail.com 20. Хачатуров Давид Каренович Dav.99@mail.ru Лекция 1(конспект) Вычислительная математика Концепция итерационных вычислений в вычислительной математике на примере: Решение алгебраических и трансцендентных уравнений В практике вычислений приходится решать уравнения вида f(x) = 0, где f(x) определена на некотором конечном или бесконечном интервале (a, b). Если f(x) — многочлен, то f(x) =0 — алгебраическое уравнение, иначе f(x) = 0 — трансцендентное уравнение. Всякое значение x* такое, что f(x*) 0, называется корнем, а способ нахождения этого x* и есть решение уравнения. Этапы решения: 1. Отделение корней, то есть отыскание достаточно малых областей, в каждой из которых заключен один и только один корень уравнения. 2. Вычисление корней с заданной точностью. Комментарий 1. Для выделения областей, в которых находятся действительные корни уравнения, можно воспользоваться тем, что если на концах отрезка непрерывная функция f(x) принимает значение разных знаков, то на этом отрезке f(x) = 0 имеет хотя бы один корень. Для выделения областей, содержащих один и только один корень можно воспользоваться, например, графическим способом. Комментарий 2. Для решения 2-й задачи существуют многочисленные методы: метод итераций, метод Ньютона, метод половинного деления и т.д. Считаем, что нам известен отрезок , внутри которого существует и располагается один и только один из корней уравнения. Уравнение f(x) =0 представим в виде x = ,то есть f(x) = x- = 0. В общем случае: , то есть или , где = const. Выберем на отрезке произвольную точку x0 — нулевое приближение, а далее в качестве следующего приближения: x1=, x2=, … xn=. Процесс последовательного вычисления чисел xn (n=1, 2, …) по формуле xn=называется методом итераций. Если на , содержащем корень x = x* , а так же его последовательные приближения x0, x1,…,xn, вычислимые по методу итераций, выполнено условие , то процесс итераций сходится, то есть увеличивая n, можно получить приближение, сколь угодно мало отличающееся от истинного значения корня x*. Процесс итераций следует продолжать до тех пор, пока для 2-х последовательных приближений xn-1 и xn не будет обеспечено выполнение неравенства , где — заданная погрешность Если g0.5, то и можно ограничиться . Итак, ||<1 : — докажем сходимость. Действительно : пусть x* — корень, то есть x* = — с одной стороны, xn = — схема итераций. xn-x* = xn-x* = Используем теорему о среднем значении: если непрерывна на [], то существует точка а, такая, что , где а. Или . Пусть m = max, где x{x0, x1, x2, …, xn} | xn-x* |m| xn-1-x* | | xn-1-x* |m| xn-2-x* | | xn--x* |m2| xn-2-x* | | xn-x* |mk| xn-k-x* | Если k = n, то | xn--x* |mn| x0-x* | Если m<1, то с ростом n: xnx* При ||>1 |xn – x*| неограниченно растет! расходится сходится сходится расходится Для приведения уравнения к виду x = существует следующий способ: Пусть 00 Пример: (извлечение корня степени N из числа A) ; ; ; N = 2; N = 3; Или Лекция 2 (конспект) Вычислительная математика (Методы) (для нелинейных алгебраических и трансцендентных уравнений) Усовершенствованный метод последовательный приближений f(xn-1) = xn; f(xn) = xn+1 ∆x = xn-1 – xn = f(xn) - xn xn+1 = xn + ∆x, лучше взять xn+1 = xn + λ *∆x, λ>1 tg = tg = , где xn f'() = —известно, но можно принять f'( Геометрический процесс отыскания следующего приближения xn-1 сводится к тому, что проводится хорда через точки (xn, f(xn)) и (xn-1, f(xn-1)) и определяется точка ее пересечения с прямой y = x. Сходимость: 1) 01 Так как , то в усовершенствованном методе знаки поправок изменяются нужным образом. 4) f'(x)<-1 0< — расходится, так как поправки велики Каждая поправка умножается на коэффициент между 0 и и процесс расходится. Описанная модификация метода итераций принадлежит Векштейну (1958 г) Метод Ньютона – Рафсона Пусть xn и Если , то метод сходится: Так как f (x) = x, (F (x) = 0 = x – f (x)), то для x, близких к «a», (f (x) - x) – мало. Поэтому (1) сходится, если: 1) выбрано близко к решению x = f (x) 2) f ''(x) – не становится слишком большой. 3) f ' (x) не слишком близка к 1. Это и есть знаменитый метод Ньютона – Рафсона. F (x) = x – f (x) = 0 Или: 1) близко к корню F (x) = 0 2) - не слишком большая 3) - не близка к нулю «3)» означает, что никакие два корня не находятся слишком близко один к другому. Геометрическое толкование. а) , то есть равен углу наклона касательной к y = f (x) в точке б) Уравнение касательной: Пусть выбирать так, чтобы Пример: F (x) = sin x – x + 0.15 = 0 на отрезке [0.5; 1] с погрешностью То необходимо найти чтобы Это верно при = 1 на [0.5; 1] Примечание: если , то можно 1) 2) 3) Вычисляем 4) Проверяем и так далее. Случай почти равных корней (Масштаб сильно увеличен: на самом деле х0 очень близок к х1 ) Производная близка к 1 при На основании теоремы о среднем Итерационный процесс осциллирует (колеблется) между до бесконечности, не сходясь ни к одному значению корня. Другими словами – не удаётся отделить эти два корня, так как они расположены слишком близко один к другому. Трудности возникают, так как Мейкон (1963) предложил метод, согласно которому сначала находят значение x, где , то есть решается уравнение: Пусть - решение. Эта точка Положим для начального приближения Пусть Разложим f (x) в ряд Тейлора в окрестности точки Так как Пусть Но по условию Если , так как надо решить уравнение Сначала решаем: Потом ищется: Затем начальные приближения для Если , то это означает что имеет более чем один корень вблизи , тогда сначала решается уравнение , то это означает, что имеет более чем один корень . Метод хорд Каждое значение xn+1 находится как точка пересечения оси абсцисс с хордой, проведенной через точки F(a) и F(b) , причем одна из этих точек фиксируется — та, для которой F(x)·F''(x)>0. Если неподвижен конец хорды x = a, то xn+1 = xn - Если неподвижен конец хорды x = b, то xn+1 = xn - Если |xn+1 - xn|>,то в первом случае считаем b = xn+1, во втором a = xn+1 и повторяем вычисление. При использовании метода хорд полагается, что корень находится на отрезке [a,b]. Метод секущих (графическая иллюстрация) Реализуется алгоритмом, описанным выше, если абсцисса a и b взяты с одной стороны от корня. Необходимость вычисления F'(x) и выбора одной из двух формул затрудняют практическое применение методов хорд и секущих в отдельности. Примечание. Студент выбирает вариант задания по своему № в списке таблицы с электронными адресами. Если номер больше, чем Ваш № в списке, то надо сложить цифры своего двузначного номера и взять задание с полученным таким образом №. ЗАДАНИЯ (для КР и зачёта) I. Отделить корни уравнения графически (используя мастер диаграмм среды Excel 2000) и уточнить один из них методом итераций (используя среду VBA для Excel 2000 и «выше») с точностью до 0,001. Вариант №1 Вариант №2 Вариант №3 Вариант №4 Вариант №5 Вариант №6 Вариант №7 Вариант №8 Вариант №9 Вариант №10 Вариант №11 Вариант №12 Вариант №13 Вариант №14 Вариант №15 Необходимо вычислить приближенное значение корней уравнения с заданной точностью методом итераций и методом Ньютона-Рафсона. Необходимо построить график y(x) для этих уравнений, отделить корни на соответствующих отрезках. N варианта Уравнение Заданная точность ε 1 10-3 2 10-2 3 10-3 4 10-2 5 10-3 6 10-2 7 10-3 8 10-2 9 10-3 10 10-2 11 10-2 12 10-3 13 10-2 14 10-3 15 10-2 16 10-3 17 10-2 18 10-3 Решение систем линейниых (СЛАУ) и нелинейных уравнений (СНАУ) Метод Ньютона - Рафсона для систем нелинейных уравнений Будем искать решение системы нелинейных уравнений . Считая заданными начальные приближения корней (x0, y0), будем искать поправки к ним h и k: или в общем виде . Таким образом, имеем систему: Раскладывая функции в ряд Тейлора, имеем: Уравнения системы содержат члены более высокого порядка малости, чем h и k. Пренебрегая ими, получим систему относительно h1 и k1: Отсюда Тогда и так далее. Пример. Найти корни системы уравнений: Пусть Тогда Получаем и так далее. Метод итерациЙ для систем нелинейных уравнений Пусть дана система уравнений с двумя неизвестными: . Функции и называются итерирующими. Алгоритм решения задается формулами: Если функции F (x, y) и Ф (x, y) непрерывны и последовательности и сходятся, то пределы их являются корнями системы. Исследуем сходимость. Пусть — истинные значения корней системы и известно, что и в прямоугольнике x = a, x = b, y = c, y = d других корней нет. Тогда, если в этом прямоугольнике выполняются неравенства: . Где , то итерационный процесс сходится, причём в качестве нулевого приближения можно брать любую точку прямоугольника. Пример. Рассмотрим точку x0 = 3,4; y0 = 2,2 Приведём систему (различными путями) к виду: Для — процесс расходится. Поэтому, определим x из 2-го уравнения; y — из 1-го: ; За область изоляции корня можно принять прямоугольник 3 < x < 4; 2 < y < 2,5 Процесс сходится, но так как - близко к единице, то скорость сходимости будет небольшой: ЗАДАНИЯ (для КР и зачёта) II. Решить при помощи метода Ньютона–Рафсона системы уравнений, определив точку начального приближения графически: 1) , 2) , 3) , 4) , 5) , 6) , 7) , 8) , 9) , 10) Системы линейных уравнений Метод Простой итерации Пусть дана система n линейных алгебраических уравнений с n неизвестными Перепишем систему уравнений в виде: Обозначим правую часть i-го уравнения через . Без потери общности не обращаем внимание на то, что в правой части i-го уравнения xi не содержится. Тогда: Зададимся начальными приближениями корней системы Тогда: Итерационный процесс продолжается до тех пор, пока все не станут достаточно близки к , где i = 1, 2, 3, …, n, то есть: Лучше сравнивать с E относительные разности: Исследуем сходимость. Пусть , где xi — истинное значение i-го корня. Так как xi — истинное значение корня, то: Кроме того: Поэтому: Иначе: Обозначим наибольшее из через . Тогда . Если взять: то . Так как это справедливо при любых k, то: Откуда . Если A < 1, то или при . Таким образом, условие сходимости , то есть диагональные элементы системы удовлетворяют условию . Пример: Выбор начальных приближений не влияет на условия сходимости, поэтому чаще всего полагают . Метод Зейделя Метод Зейделя является модификацией метода простой итерации. Итак дана система уравнений: . Для вычисления (k + 1)-го приближения в методе итераций мы использовали , где i = 1, 2, …, n, но так как к моменту вычисления уже найдены то возникает идея: при нахождении использовать найденные ранее . В этом и заключается метод Зейделя: для вычисления (k + 1)-го приближения используется не только k-e, но и (k+1)-e приближения: Пример. В случае, если коэффициенты решаемой системы не удовлетворяют условию сходимости, то с помощью линейного комбинирования уравнений исходной системы получают новую, для которой сходимость обеспечивается. Для этого выбирают из системы уравнений такие, модули коэффициентов в которых больше суммы модулей остальных коэффициентов. Выбранные уравнения записывают так, чтобы наибольший по модулю коэффициент оказался диагональным. Уравнение с): - будет 2-е уравнение Уравнение d): - будет 4-е уравнение a) - b): - будет 3-е уравнение, . a) + b) + 2c) + d): - 1-е уравнение, При получении системы уравнений, удовлетворяющей условиям сходимости метода итераций, необходимо, чтобы каждое уравнение исходной системы, не вошедшее в явном виде в новую систему, попало хотя бы в одну из линейных комбинаций. Примеры. Программные реализации некоторых численных методов в среде VB for Applications Sub Метод_Гаусса() Dim m As Integer 'кол-во ур-й СЛАУ или кол-во строк Dim n As Integer 'кол-во столбцов в матрице коэффициентов Dim a(100, 101) As Single 'матрица коэффициентов Dim c(1 To 100) As Single 'матрица для хранения результатов Dim i As Integer 'счетчик цикла Dim l As Integer 'счетчик цикла Dim z As Integer 'счетчик Dim j As Integer 'счетчик цикла Dim d As Integer 'счетчик Dim f As Single 'переменная для хранения эл-ов массива Dim b As Single 'переменная для хранения эл-ов массива Dim x As Single 'вспомогательная переменная Dim p As Integer 'счетчик цикла x = 0 Worksheets(1).Cells(1, 1).Value = "Метод Гаусса" 'выводим пояснения на лист1 Worksheets(1).Cells(2, 1).Value = "Коэффициенты системы" Stop 'останов исп-ся для того, чтобы задать коэффициенты системы m = CInt(InputBox("Введите кол-во ур-й СЛАУ")) 'переменной m присваиваем кол-во ур-й СЛАУ n = m + 1 'коэффициентов будет на 1 больше, чем уравнений СЛАУ Worksheets(1).Cells(m + 3, 1).Value = "Результат:" 'выводим пояснение на лист1 For i = 1 To m 'с листа считываем коэффициенты в массив коэффициентов For j = 1 To n a(i, j) = Worksheets(1).Cells(i + 2, j).Value Next j Next i z = 0 d = 0 1 For i = 1 To (m - z) 'Методом исключения Гаусса преобразуем матрицу коэффициентов СЛАУ b = a(i + z, z + 1) For j = 1 To (n - z) If (d = 0) Then f = a(i + z, j + z) For l = (1 + z) To n a(i + z, l) = a(i + z, l) / f Next l d = d + 1 If z = (m - 1) Then GoTo 3 GoTo 4 Else: a(i + z, j + z) = a(i + z, j + z) - a(z + 1, j + z) * b End If Next j 4 Next i z = z + 1 d = d - 1 GoTo 1 3 For i = m To 1 Step -1 'выведем преобразованную матрицу коэффициентов СЛАУ на лист2 For j = n To 1 Step -1 Worksheets(2).Cells(i, j).Value = a(i, j) Next j Next i c(m) = a(m, n) 'запоминаем найденную переменную в матрицу резудьтата For i = (m - 1) To 1 Step -1 'ищем значения остальных переменных x = a(i, n) For j = (n - 1) To (i + 1) Step -1 x = x - a(i, j) * c(j) Next j 5 c(i) = x 'заносим найденное значение в матрицу результата Next i For i = 1 To m 'выводим корни СЛАУ на лист1 Worksheets(1).Cells(m + 4, i).Value = c(i) Next i End Sub Sub Метод_Простых_итераций() Dim n As Integer 'порядок матрицы системы Dim a(100, 100) As Double 'преобразованная матрица Dim x(100) As Double 'матрица для хранения результатов Dim f(100) As Double 'матрица для хранения результатов Dim b(100) As Double 'столбец свободных членов Dim e As Double 'погрешность Dim i As Integer 'счетчик цикла Dim j As Integer 'счетчик цикла Dim c As Boolean 'Переменная для принятия возвращаемого функцией значения n = CInt(InputBox("Введите порядок матрицы системы")) 'переменной m присваиваем порядок матрицы системы Worksheets(3).Cells(1, 1).Value = "Метод простых итераций" 'выводим пояснения на лист1 Worksheets(3).Cells(2, 1).Value = "Преобразованная матрица" Worksheets(3).Cells(2, n + 2).Value = "Столбец свободных членов" Worksheets(3).Cells(2, n + 6).Value = "Столбец начальных приближений" Worksheets(3).Cells(n + 3, 1).Value = "Результат" Worksheets(3).Cells(n + 3, 3).Value = "Счетчик числа итераций" Stop 'останов исп-ся для того, чтобы задать коэффициенты системы e = CDbl(InputBox("Введите погрешность")) For i = 1 To n 'с листа считываем элементы в матрицу a For j = 1 To n a(i, j) = Worksheets(3).Cells(i + 2, j).Value Next j Next i For j = 1 To n 'с листа считываем элементы в матрицу b b(j) = Worksheets(3).Cells(j + 2, n + 2).Value Next j For j = 1 To n 'с листа считываем элементы(начальные приближения) в матрицу x x(j) = Worksheets(3).Cells(j + 2, n + 6).Value Next j c = Itera(n, a(), b(), x(), f(), e) 'Вызываем ф-ю Itera и возвращаемое значение присваиваем переменной с If (c = False) Then MsgBox ("Условие сходимости не выполняется"): GoTo 1 'Если ф-я вернула False For j = 1 To n 'Выводим решение на лист1 Worksheets(3).Cells(n + 3 + j, 1).Value = x(j) Next j 1 End Sub Function Itera(n As Integer, a() As Double, b() As Double, x() As Double, f() As Double, e As Double) As Boolean Dim i As Integer, j As Integer, p As Integer 'Счетчики цикла Dim s As Double 'Переменная для суммирования элементов уравнения всех, кроме диагонального Dim m As Double 'Переменная для хранения модуля разности между ближайшими приближениями Dim s1 As Double Dim k As Integer ' счетчик числа итерации Dim v As Double 'Переменная для хранения передыдущего приближения k = 0 For i = 1 To n 'Проверяем выполняется ли условие сходимости s = 0 For j = 1 To n If j <> i Then s = s + Abs(a(i, j)) 'Если элемент не диагональный Next j If s >= Abs(a(i, i)) Then Itera = False: GoTo 2 'Если условие сходимости не выполняется Next i Do m = 0 For i = 1 To n 'Просматриваем строки матрицы коэффициентов s1 = 0 For j = 1 To n 'Просматриваем столбцы матрицы коэффициентов s1 = s1 + a(i, j) * x(j) Next j v = x(i) 'Запоминаем приближение f(i) = x(i) - (1 / a(i, i)) * (s1 - b(i)) 'Высчитываем следующее приближение If (Abs(v - f(i)) > m) Then m = Abs(v - f(i)) 'Запоминаем модуль разности ' соседних приближений для сравнения его затем с заданной точностью Next i For p = 1 To n x(p) = f(p) Next p k = p + 1 'Увеличиваем значение счетчика Loop While m >= e 'Продолжаем вычисления пока не достигнута точность Itera = True Worksheets(3).Cells(n + 4, 3).Value = k 'Выводим значение счетчика на лист 2 End Function Sub Метод_Зейделя() Dim n As Integer 'порядок матрицы системы Dim a(100, 100) As Double 'преобразованная матрица Dim x(100) As Double 'матрица для хранения результатов Dim b(100) As Double 'столбец свободных членов Dim e As Double 'погрешность Dim i As Integer 'счетчик цикла Dim j As Integer 'счетчик цикла Dim c As Boolean 'Переменная для принятия возвращаемого функцией значения n = CInt(InputBox("Введите порядок матрицы системы")) 'переменной m присваиваем порядок матрицы системы Worksheets(2).Cells(1, 1).Value = "Метод Зейделя" 'выводим пояснения на лист1 Worksheets(2).Cells(2, 1).Value = "Преобразованная матрица" Worksheets(2).Cells(2, n + 2).Value = "Столбец свободных членов" Worksheets(2).Cells(2, n + 6).Value = "Столбец начальных приближений" Worksheets(2).Cells(n + 3, 1).Value = "Результат" Worksheets(2).Cells(n + 3, 3).Value = "Счетчик числа итераций" Stop 'останов исп-ся для того, чтобы задать коэффициенты системы e = CDbl(InputBox("Введите погрешность")) For i = 1 To n 'с листа считываем элементы в матрицу a For j = 1 To n a(i, j) = Worksheets(2).Cells(i + 2, j).Value Next j Next i For j = 1 To n 'с листа считываем элементы в матрицу b b(j) = Worksheets(2).Cells(j + 2, n + 2).Value Next j For j = 1 To n 'с листа считываем элементы(начальные приближения) в матрицу x x(j) = Worksheets(2).Cells(j + 2, n + 6).Value Next j c = Zeidel(n, a(), b(), x(), e) 'Вызываем ф-ю Zeidel и возвращаемое значение присваиваем переменной с If (c = False) Then MsgBox ("Условие сходимости не выполняется"): GoTo 1 'Если ф-я вернула False For j = 1 To n 'Выводим решение на лист1 Worksheets(2).Cells(n + 3 + j, 1).Value = x(j) Next j 1 End Sub Function Zeidel(n As Integer, a() As Double, b() As Double, x() As Double, e As Double) As Boolean Dim i As Integer, j As Integer 'Счетчики цикла Dim s As Double 'Переменная для суммирования элементов уравнения всех, кроме диагонального Dim m As Double 'Переменная для хранения модуля разности между ближайшими приближениями Dim s1 As Double Dim p As Integer ' счетчик числа итерации Dim v As Double 'Переменная для хранения предыдущего приближения p = 0 For i = 1 To n 'Проверяем выполняется ли условие сходимости s = 0 For j = 1 To n If j <> i Then s = s + Abs(a(i, j)) 'Если элемент не диагональный Next j If s >= Abs(a(i, i)) Then Zeidel = False: GoTo 2 'Если условие сходимости не выполняется Next i Do m = 0 For i = 1 To n 'Просматриваем строки матрицы коэффициентов s1 = 0 For j = 1 To n 'Просматриваем столбцы матрицы коэффициентов s1 = s1 + a(i, j) * x(j) Next j v = x(i) 'Запоминаем приближение x(i) = x(i) - (1 / a(i, i)) * (s1 - b(i)) 'Высчитываем следующее приближение If (Abs(v - x(i)) > m) Then m = Abs(v - x(i)) 'Запоминаем модуль разности ' соседних приближений для сравнения его затем с заданной точностью Next i p = p + 1 'увеличиваем счетчик Loop While m >= e 'Продолжаем вычисления пока не достигнута точность Zeidel = True Worksheets(2).Cells(n + 4, 3).Value = p 'Выводим значение счетчика на лист 2 End Function ЗАДАНИЯ (для КР и зачёта) III. Методом Зейделя решить с точностью 0,001 систему линейных уравнений, приведя ее к виду, удобному для итераций. Программу реализовать в среде VBA MS Excel. Вариант №1 Вариант №2 Вариант №3 Вариант №4 Вариант №5 Вариант №6 Вариант №7 Вариант №8 Вариант №9 Вариант №10 Вариант №11
«Вычислительная математика» 👇
Готовые курсовые работы и рефераты
Купить от 250 ₽
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ
Получи помощь с рефератом от ИИ-шки
ИИ ответит за 2 минуты

Тебе могут подойти лекции

Смотреть все 588 лекций
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot