Remkomplekty.ru

IT Новости из мира ПК
101 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Численное интегрирование метод прямоугольников паскаль

«Численное интегрирование в Pascal»

Как организовать дистанционное обучение во время карантина?

Помогает проект «Инфоурок»

Государственное профессиональное образовательное учреждение

«Усинский политехнический техникум»

Научная конференция студентов

Направление: Информационные технологии

Название исследования: «Численное интегрирование в Pascal »

Хворост Мария Григорьевна

ГПОУ «УПТ», преподаватель

Появление и непрерывное совершенствование быстродействующих электронных вычислительных машин (ЭВМ) привело к подлинно революционному преобразованию науки. Изменилась технология научных исследований, колоссально увеличились возможности теоретического изучения, прогноза сложных процессов, проектирования инженерных конструкций. Решение крупных научно-технических проблем, примерами которых могут служить проблемы овладения ядерной энергией и освоения космоса, стало возможным лишь благодаря применению математического моделирования и новых численных методов, предназначенных для ЭВМ.

В настоящее время можно говорить, что появился новый способ теоретического исследования сложных процессов, допускающих математическое описание, — вычислительный эксперимент, т.е. исследование естественнонаучных проблем средствами вычислительной математики. Разработка и исследование вычислительных алгоритмов и их применение к решению конкретных задач составляет содержание огромного раздела современной математики –«Численные методы».

Многие задачи для нахождения площадей поверхностей, объемов тел и длин приводят к вычислению определенных интегралов, которые могут быть образованы очень сложной функцией или вовсе первообразная функции отсутствует. Следовательно, невозможно аналитически вычислить значение определённого интеграла по формуле Ньютона-Лейбница.

Можем ли мы найти решение данной задачи? Обратимся к численным методам.

Предмет моего исследования – решение интегралов с помощью ЭВМ.

Объект исследования — численные методы решения интегралов.

Цель моей работы – изучить методы численного интегрирования, составить алгоритм программы для вычисления поставленной задачи методами параллелограммов и трапеций на языке Pascal .

Из цели вытекают следующие задачи:

Изучить методы численного интегрирования.

Составить алгоритм программы для вычисления поставленной задачи методом прямоугольников и трапеций.

Описание методов вычислительной математики, которые будут использованы при решении поставленной задачи.

Численные методы дают приближенное решение задачи. Это значит, что вместо точного решения и некоторой задачи мы находим решение у другой задачи, близкое в некотором смысле к искомому. Основная идея всех методов — дискретизация или аппроксимация (замена, приближение) исходной задачи другой задачей, более удобной для решения на ЭВМ, причем решение аппроксимирующей задачи зависит от некоторых параметров, управляя которыми, можно определить решение с требуемой точностью

Численное интегрирование — вычисление значения определённого интеграла (как правило, приближённое), основанное на том, что величина интеграла численно равна площади криволинейной трапеции, ограниченной осью абсцисс, графиком интегрируемой функции и отрезками прямых, которые являются пределами интегрирования.

Методы численного интегрирования, основаны на замене подынтегральной функции интерполяционным многочленом. Это позволяет приближенно заменить определенный интеграл интерполяционной суммой. В зависимости от способа ее вычисления получаются разные методы численного интегрирования:

• метод трапеций и т.д.;

На практике используют следующие методы прямоугольников:

При вычислении интеграла используют формулу трапеций

Разработка алгоритма решения задачи и написание программы

Рассмотрим задачу нахождения интеграла функции и найдем ее решение методами численного интегрирования.

В основной программе необходимо предусмотреть ввод необходимых данных и реализацию контрольно примера, а также удобное управление элементами программы и команду выхода.

Подпрограммы реализованы в виде функций. Существует главная функция, которая вызывается из основной программы и которая выполняет основные действия (подсчет значения интеграла и вывод на экран результата, вывод графика на экран), вызывая другие подпрограммы.

Главная функция вызывает функцию подсчета интеграла с заданной точностью вычислений, которая в свою очередь на каждом шаге вызывает функцию подсчета значения функции.

Вычислите по формуле прямоугольников интеграл от функции в границах от a=1 до b=1.5, при заданном n=10.

Программа вычисления интеграла по методу левых прямоугольников на языке

Численное интегрирование метод прямоугольников паскаль

Подраздел FAQ (ЧАВО, ЧАстые ВОпросы) предназначен для размещения готовых рабочих программ, реализаций алгоритмов. Это нечто вроде справочника, он наполнялся в течение 2000х годов. Ваши вопросы, особенно просьбы решить задачу, не пройдут предмодерацию. Те, кто наполнял раздел, уже не заходят на форум, а с теми, кто на форуме сейчас, лучше начинать общение в других разделах. В частности, решение задач — здесь.

Четыре квадратика

Группа: Пользователи
Сообщений: 579
Пол: Мужской

Репутация: 4

var
n,i : integer;
a,b,shag,sum,itog : real;

BEGIN
write(‘Начало интегрирования a = ‘); readln(a);
write(‘Конец интегрирования b = ‘); readln(b);
write(‘Количество разбиений интервала n = ‘); readln(n);

shag:=(b-a)/n;
sum:=0;
for i:=1 to n-1 do
sum := sum + F(shag*i+a);
sum := sum + (F(a)+F(b))/2;

itog:=(b-a)/n * sum;
writeLn(‘Интеграл = ‘, itog:0:5)
END.

Профи

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: 11

var a,b,h,x :real;
n,i :integer;
integ :real;

begin
write(‘Введите начало интегрирования a=’); readln(a);
write(‘Введите конец интегрирования b=’); readln(b);
write(‘Введите количество разбиений интервала (четное число) n=’); readln(n);
if (n mod 2)>0 then
begin
n:=n+1;
writeln(‘Число n было введено нечетное, оно было заменено на n=’,n);
end;

Читать еще:  Тесты по си шарп

h:=(b-a)/n;
integ:=F(a)+F(b)+4*F(a+h);
for i:=1 to (n div 2)-1 do
begin
x:=a+2*h*i;
integ:=integ+2*F(x)+4*F(x+h);
end;
integ:=h*integ/3;

Профи

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: 11

<константы десятиточечного метода Гаусса>
const
g10c1=0.9739065285/6.2012983932;
g10c2=0.8650633667/6.2012983932;
g10c3=0.6794095683/6.2012983932;
g10c4=0.4333953941/6.2012983932;
g10c5=0.1488743390/6.2012983932;
g10x1=0.0666713443/6.2012983932;
g10x2=0.1494513492/6.2012983932;
g10x3=0.2190863625/6.2012983932;
g10x4=0.2692667193/6.2012983932;
g10x5=0.2955242247/6.2012983932;

function gauss_calc(a,b:real):real; <сам десятиточечный метод Гаусса>
var n,m,s,s1,s2,s3,s4,s5 :real;
begin
m:=(b+a)/2; n:=(b-a)/2;
s1:=g10c1*(f(m+n*g10x1)+f(m-n*g10x1));
s2:=g10c2*(f(m+n*g10x2)+f(m-n*g10x2));
s3:=g10c3*(f(m+n*g10x3)+f(m-n*g10x3));
s4:=g10c4*(f(m+n*g10x4)+f(m-n*g10x4));
s5:=g10c5*(f(m+n*g10x5)+f(m-n*g10x5));
s:=s1+s2+s3+s4+s5;
gauss_calc:=s*(b-a);
end;

var
Integral :real;
a,b,eps :real;

begin
write(‘Введите начало интервала интегрирования a=’); readln(a);
write(‘Введите конец интервала интегрирования b=’); readln(b);
write(‘Введите точность интегрирования eps=’); readln(eps);

Integral:=gauss(a,b,eps,gauss_calc(a,b));
writeln(‘Интеграл = ‘,Integral);
end.

Численное интегрирование

Оглавление

Численное интегрирование

Задача вычисления интегралов возникает во многих областях прикладной математики. В большинстве случаев не удается найти аналитической формулы, т. е. выразить неопределенный интеграл в виде алгебраических и трансцендентных функций. Даже если аналитическая формула находится, то она получается настолько сложной, что вычислять интеграл с ее помощью труднее, чем другими способами. Распространенными являются также случаи, когда подынтегральная функция задается графиком или таблицей экспериментально полученных значений. В таких ситуациях используют различные методы численного интегрирования, которые основаны на том, что интеграл представляется в виде предела интегральной суммы (суммы площадей), и позволяют определить эту сумму с приемлемой точностью.

Пусть требуется вычислить определенный интеграл

при условии, что A и B конечны и f(x) является непрерывной функцией x во всем интервале A x ≤ B . Значение интеграла I представляет собой площадь, ограниченную кривой f(x) , осью x и прямыми x = A , x = B . Вычисление I проводится путем разбиения интервала от A до B на множество меньших интервалов, приближенным нахождением площади каждой полоски, получающейся при таком разбиении, и дальнейшем суммировании площадей этих полосок.

Суть методов численного интегрирования состоит в замене подынтегральной функции f(x) вспомогательной, интеграл от которой легко вычисляется в элементарных функциях. Обычно f(x) заменяется некоторым интерполяционным многочленом, что приводит к квадратурным формулам:

,

где xi – узлы интерполяции;

i – произвольный номер узла;

R остаточный член, или погрешность метода.

Неучет (отбрасывание) R приводит к погрешности усечения. К этим погрешностям в процессе вычислений добавляются погрешности округления. Геометрическая интерпретация численного интегрирования представлена на рис. 5.1. и 5.2.

1. Методы прямоугольников

Самыми простыми методами численного интегрирования являются методы прямоугольников. При этом непосредственно используется замена определенного интеграла интегральной суммой:

, hi = xi xi 1 , xi 1 zi xi

;

Для частного случая hi = h = const формулы примут вид

;

» width=»147″ height=»60″ alt=» » />;

Если координату выразить через начальную точку и принять, что I ≈ S, то получим формулы, готовые для применения в операторе цикла с переменной:

» width=»188″ height=»60″ alt=» » /> – для метода левых прямоугольников;

» width=»153″ height=»60″ alt=» » /> – для метода правых прямоугольников;

» width=»203″ height=»52″ alt=» » /> – для метода средних прямоугольников.

» width=»480″ height=»308.08510638298″ alt=» » style=»display: block; margin-left: auto; margin-right: auto;» />

Рис. 5.1. Графическая интерпретация методов прямоугольников

2. Метод трапеций

В данном методе f(x) заменяется на линейный интерполяционный многочлен, т. е. на элементарном отрезке [xi —1, xi] подынтегральная функция представляет собой отрезок прямой линии. Значение I в пределах [xi —1, xi], равное площади криволинейной фигуры, заменяется площадью прямоугольной трапеции с высотой hi и основаниями f(xi —1), f(xi):

После сложения этих соотношений получим формулу трапеций

» width=»212″ height=»52″ alt=» » />.

Если шаг интегрирования постоянный (hi = h = const), то

» width=»241″ height=»60″ alt=» » />.

Если координату выразить через начальную точку и принять, что I » S, то получим формулу, готовую для применения в операторе цикла с переменной

» width=»325″ height=»52″ alt=» » />.

» width=»480″ height=»308.33333333333″ alt=» » />

Рис. 5.2. Графическая интерпретация метода трапеций

3. Процедура вычисления интеграла

Процедура вычисления интеграла при заданном числе разбиений и границами интегрирования должна иметь входные параметры этих величин и выходной параметр результата. Выходной параметр должен содержать перед собой ключевое слово var для передачи параметра по ссылке.

Здесь должен вычисляться шаг в соответствии с числом разбиений.

Сумма может вычисляться при помощи цикла for по числу разбиений или при помощи циклов repeat или while с перемещением текущей точки от начальной до конечной. Например, для метода правых прямоугольников процедура может быть описана так:

procedure integral(a,b:real;n:integer; var s:real);

var i:integer; h:real;

begin

h:=abs(b-a)/n; s:=0;

for i:=1 to n do

s:=s+h*f(a+h*i);

end;

Конечно, перед описанием процедуры необходимо описать подынтегральную функцию f(x). Смотрите описание функций в 3.1.

Замечание! При вычислении интеграла функция должна браться по модулю, т. к. площадь фигуры всегда положительна, независимо от того, что функция может быть и отрицательной. Для упрощения программы модуль можно вставить сразу в описание функции.

4. Вычисление интегралов с заданной точностью и оценка методов интегрирования

Оценка погрешности усечения R в формулах численного интегрирования оказывается трудоемкой и малоэффективной из-за трудностей оценки производных высокого порядка подынтегральных функций. Поэтому в практических расчетах для достижения требуемой точности вычислений или допустимой погрешности E используют правило Рунге.

Читать еще:  Табулирование функции паскаль примеры

Согласно этому правилу вычисление заданного интеграла проводят для разных интервалов разбиения отрезка [A,B]. Так, если начальное число интервалов разбиения есть n и соответствующее ему приближенное значение интеграла In, то для числа интервалов 2n получим значение интеграла I2n. Число интервалов можно увеличивать в 2, 3 и т. д. раз по сравнению с базовым значением n. При двукратном увеличении числа отрезков погрешность D приближенного значения интеграла для методов прямоугольников и трапеций оценивается как

Если Δ > E, то количество интервалов разбиения [A,B] опять увеличивают вдвое, т. е. значение I вычисляют для 4n. Такое удвоение повторяют до тех пор, пока не выполнится условие Δ

При выводе результата полезно также вывести конечное число разбиений, чтобы знать, на сколько частей нужно разбить отрезок для обеспечения заданной точности вычисления интеграла.

Численное интегрирование. Метод прямоугольников и метод трапеций.

Вычисление интегралов встречается при моделировании дос­таточно часто. Численные методы обычно применяются при взя­тии неберущихся интегралов от достаточно сложных функций, которые предварительно табулируются, или при интегрировании таблично заданных функций, что в экономических приложениях встречается значительно чаще.

Концепция численного интегрирования.

Все численные методы строятся на том, что подынтегральная функция приближенно заменяется более простой (горизонталь­ной или наклонной прямой, параболой 2-го, 3-го или более высо­кого порядка), от которой интеграл легко берется. В результате получаются формулы интегрирования, называемые квадратур­ными, в виде взвешенной суммы ординат подынтегральной функ­ции в отдельных точках:

Чем меньше интервалы, на которых производят замену, тем точнее вычисляется интеграл. Поэтому исходный отрезок [а, b]для повышения точности делят на несколько равных или нерав­ных интервалов, на каждом из которых применяют формулу ин­тегрирования, а затем складывают результаты.

В большинстве случаев погрешность численного интегриро­вания определяется путем двойного интегрирования: с исходным шагом (шаг определяется путем равномерного деления отрезка b-а на число отрезков nh=(b-a)/n)u c шагом, увеличенным в 2 раза. Разница вычисленных значений интегралов определяет погрешность.

Сравнение эффективности различных методов проводится по степени полинома, который данным методом интегрируется точ­но, без ошибки. Чем выше степень такого полинома, тем выше точность метода, тем он эффективнее.

К простейшим методам можно отнести методы прямоуголь­ников (левых и правых) и трапеций. В первом случае подынте­гральная функция заменяется горизонтальной прямой (у = с0) со значением ординаты, т.е. значения функции соответственно слева или справа участка, во втором случае — наклонной прямой (у =с1х + с). Формулы интегрирования при разбиении отрезка [а, b] на n частей с равномерным шагом h соответственно приоб­ретают вид:

• для одного участка интегрирования:

для п участков интегрирования:

Нетрудно заметить, что в методе прямоугольников интеграл вычислится абсолютно точно только при f (х) = с (const), а в мето­де трапеций — при f(x) линейной или кусочно-линейной.

На рис. 4 для сравнения приведены примеры прямоугольни­ков при различном числе участков. Наглядно видно, что площадь всех прямоугольников на правом рисунке меньше отличается от площади под кривой f(x),чем на левом.

а — с 3 участками разбиения отрезка интегрирования [а, b];

б — с 6 участками разбиения отрезка интегрирования [а, b]

Метод прямоугольников не на­ходит практического применения в силу значительных погрешностей, что тоже видно из рис. 4.

На рис. 5 приведен пример вы­числения интеграла методом тра­пеций. По сравнению с методом прямоугольников метод трапеций более точный, так как трапеция точнее заменяет соответствующую криволинейнуютрапецию, чем прямоугольник. Рис 5.

Погрешность Rвычисления интеграла методом трапеций при использовании двойного просчета на практике может быть опре­делена из следующего соотношения:

где In и Iп/2 — соответственно значения интеграла при числе раз­биений п и п/2. Существуют и аналитические выражения для определения погрешности, но они требуют знания второй произ­водной подынтегральной функции, поэтому имеют только теоре­тическое значение. С использованием двойного просчета можно организовать автоматический подбор шага интегрирования (т.е. числа разбиений n) для обеспечения заданной погрешности ин­тегрирования (последовательно удваивая шаг и контролируя по­грешность).

Численное интегрирование методом прямоугольников. Разработка программы для реализации метода прямоугольников с использованием подпрограмм. — презентация

Презентация была опубликована 4 года назад пользователемГавриил Аргамаков

Похожие презентации

Презентация на тему: » Численное интегрирование методом прямоугольников. Разработка программы для реализации метода прямоугольников с использованием подпрограмм.» — Транскрипт:

1 Численное интегрирование методом прямоугольников. Разработка программы для реализации метода прямоугольников с использованием подпрограмм

2 Цель урока рассмотреть приближенное вычисление интеграла методом прямоугольников разработать алгоритм и программу для реализации данного метода на компьютере

4 Какое число называется приближенным? Для чего нужны приближенные числа?

5 Что называется абсолютной и относительной погрешностью числа? По каким формулам они вычисляются? Относительная погрешность Абсолютная погрешность

6 Формула для вычисления определенного интеграла Формула Ньютона — Лейбница

Читать еще:  Повторно объявленный идентификатор паскаль

7 Геометрический смысл интеграла Интеграл от функции на отрезке равен площади криволинейной трапеции

8 Найдите ошибку в вычислениях

9 Структура программы на Паскале Program ; Uses ; Const ; Type ; Label ; Var ; Procedure (Function) ; Begin End.

10 В каких случаях возникает необходимость использования подпрограмм при составлении программ? 1. когда какой-либо под алгоритм неоднократно повторяется в программе 2. имеется возможность использовать некоторые фрагменты уже разработанных ранее алгоритмов. 3. подпрограммы применяются для разбиения крупных программ на отдельные смысловые части в соответствии с модульным принципом в программировании.

11 Какие виды подпрограмм имеются в языке Паскаль? 1.Подпрограммы-функции 2.Подпрограммы-процедуры

12 Как называются параметры, использующиеся при записи текста подпрограммы в разделе описаний? Формальные

13 Как называются параметры, использующиеся при вызове подпрограммы? Фактические

14 При вызове процедур и функций необходимо соблюдать следующие правила: количество фактических параметров должно совпадать с количеством формальных; соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.

20 Метод левых прямоугольников Метод правых прямоугольников Метод средних прямоугольников Блок- схема

21 Разработка программы для вычисления определенного интеграла методом левых прямоугольников

22 Задача. Разработать программу вычисления значения определенного интеграла от заданной функции методом левых прямоугольников. Подынтегральную функцию описать с помощью подпрограммы-функции

23 Постановка задачи Дано: f(x) – подынтегральная функция, а – нижний предел интегрирования, b – верхний предел интегрирования, n – количество элементарных отрезков Найти :

24 Формализация задачи Блок-схема задачи Начало Ввод a,b,n h=(b-a)/n s=0 xb=a i=0,n-1,1 x=xb+ih s=s+hf(x) Вывод s Конец

25 Блок-схема метода левых прямоугольников Программа метода левых прямоугольников Начало Ввод a,b,n h=(b-a)/n s=0 xb=a i=0,n-1,1 x=xb+ih s=s+hf(x) Вывод s Конец Program Integral1; uses crt; var i,n: integer; a,b,h,x,xb,s: real; function f(x:real):real; begin f:=……….. end; begin write(Введите нижний предел интегрирования); readln(a); write(Введите верхний предел интегрирования); Readln(b); write(Введите количество отрезков); readln(n); h:=(b-a)/n; s:=0; xb=a; for i:=0 to n-1 do begin x:=xb+i*h; s:=s+h*f(x); end; writeln(Интеграл равен,s:12:10); end.

26 Программа вычисления интеграла методом левых прямоугольников Program Integral1; <метод левых прямоугольников>uses crt; var i,n: integer; a,b,h,x,xb,s: real; function f(x:real):real; begin f:=……….. end; begin write(Введите нижний предел интегрирования); readln(a); write(Введите верхний предел интегрирования); readln(b); write(Введите количество отрезков); Readln(n); h:=(b-a)/n; s:=0; xb=a; for i:=0 to n-1 do begin x:=xb+i*h; s:=s+h*f(x); end; writeln(Интеграл равен,s:12:10); end. Program Integral1; <метод левых прямоугольников>uses crt; var i,n: integer; a,b,h,x,xb,s: real; function f(x:real):real; begin f:=……….. end; begin write(Введите нижний предел интегрирования); readln(a); write(Введите верхний предел интегрирования); readln(b); write(Введите количество отрезков); Readln(n); h:=(b-a)/n; s:=0; xb=a; for i:=0 to n-1 do begin x:=xb+i*h; s:=s+h*f(x); end; writeln(Интеграл равен,s:12:10); end.

28 Метод левых прямоугольников Метод правых прямоугольников Метод средних прямоугольников

29 Программа вычисления интеграла методом правых прямоугольников Program Integral1; <метод правых прямоугольников>Uses crt; Var i,n: integer; a,b,h,x,xb,s: real; function f(x:real):real; begin f:=……….. end; begin Write(Введите нижний предел интегрирования); Readln(a); Write(Введите верхний предел интегрирования); Readln(b); Write(Введите количество отрезков); Readln(n); h:=(b-a)/n; s:=0; xb=a; For i:=1 to n do Begin x:=xb+i*h; s:=s+f(x)*h; End; Writeln(Интеграл равен,s:12:10); end. Program Integral1; <метод правых прямоугольников>Uses crt; Var i,n: integer; a,b,h,x,xb,s: real; function f(x:real):real; begin f:=……….. end; begin Write(Введите нижний предел интегрирования); Readln(a); Write(Введите верхний предел интегрирования); Readln(b); Write(Введите количество отрезков); Readln(n); h:=(b-a)/n; s:=0; xb=a; For i:=1 to n do Begin x:=xb+i*h; s:=s+f(x)*h; End; Writeln(Интеграл равен,s:12:10); end.

31 Метод левых прямоугольников Метод правых прямоугольников Метод средних прямоугольников

32 Программа вычисления интеграла методом средних прямоугольников Program Integral1; <метод средних прямоугольников>Uses crt; Var i,n: integer; a,b,h,x,xb,s: real; function f(x:real):real; begin f:=……….. end; begin Write(Введите нижний предел интегрирования); Readln(a); Write(Введите верхний предел интегрирования); Readln(b); Write(Введите количество отрезков); Readln(n); h:=(b-a)/n; s:=0; xb=a+h/2; For i:=0 to n-1 do Begin x:=xb+i*h; s:=s+f(x)*h; End; Writeln(Интеграл равен,s:12:10); end. Program Integral1; <метод средних прямоугольников>Uses crt; Var i,n: integer; a,b,h,x,xb,s: real; function f(x:real):real; begin f:=……….. end; begin Write(Введите нижний предел интегрирования); Readln(a); Write(Введите верхний предел интегрирования); Readln(b); Write(Введите количество отрезков); Readln(n); h:=(b-a)/n; s:=0; xb=a+h/2; For i:=0 to n-1 do Begin x:=xb+i*h; s:=s+f(x)*h; End; Writeln(Интеграл равен,s:12:10); end.

34 вычислить интеграл одним из рассмотренных способом, меняя шаг разбиения запустить программу несколько раз меняя шаг вычислений n = 10; 100; сравнить полученное значение с найденным по формуле Ньютона-Лейбница. Для этого подсчитайте подсчитать относительную погрешность вычисления. результаты занести в сводную таблицу. сделать выводы. Таблица Компьютерный эксперимент

36 Домашнее задание Составьте проверочные вопросы по данной теме ( не менее 5). Выяснить, существуют ли другие способы приближенного вычисления определенных интегралов. Какие? В чем их суть? Составьте программу вычисления двух определенных интегралов от функций y=sin(x) и y=cos(x) на отрезке [0,π].

37 Считаете ли вы данный урок эффективным? В чем его эффективность? Какую пользу лично для себя вы извлекли из полученной информации?

Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector
×
×