Интегрирование уравнений движения. Явный метод Эйлера

21.09.2019

  • Перевод

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

Темой этой статьи как раз и будет реализация такого интегрирования.

Интегрирование уравнений движения

Вы можете помнить из курса старшей школы или вуза, что сила равна произведению массы на ускорение.
Преобразуем это уравнение и увидим, что ускорение равно силе, делённой на массу. Это соответствует нашим интуитивным ожиданиям, потому что тяжёлые объекты труднее бросать.
Ускорение - это темп изменения скорости от времени:

Аналогично, скорость - это темп изменения позиции от времени:


Это значит, что если мы знаем текущие позицию и скорость объекта, а также приложенные к нему силы, то сможем проинтегрировать, чтобы найти его позицию и скорость в определённый момент времени.

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

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

Вот как работает численное интегрирование: во-первых, начнём с исходной позиции и скорости, затем сделаем небольшой шаг вперёд, чтобы найти скорость и позицию в будущем. Затем повторим это, двигаясь вперёд небольшими шагами, используя результат предыдущих вычислений как исходную точку следующих.

Но как нам найти изменение скорости и позиции на каждом шаге?

Ответ лежит в уравнениях движения .

Давайте назовём наше текущее время t , а шаг времени dt или «delta time».

Теперь мы можем представить уравнения движения в понятном всем виде:

Ускорение = сила / масса изменение позиции = скорость * dt изменение скорости = ускорение * dt
Интуитивно это понятно: если вы находитесь в автомобиле, движущемся со скоростью 60 км/ч, то за один час вы проедете 60 км. Аналогично, автомобиль, ускоряющийся на 10 км/ч в секунду, через 10 секунд будет двигаться на 100 км/ч быстрее.

Разумеется, эта логика сохраняется, только когда ускорение и скорость постоянны. Но даже если они меняются, то это для начала вполне неплохая аппроксимация.

Давайте представим это в коде. Начнём с стационарного объекта массой один килограмм и приложим к нему постоянную силу в 10 кН (килоньютонов) и сделаем шаг вперёд, принимая, что один временной шаг равен одной секунде:

Double t = 0.0; float dt = 1.0f; float velocity = 0.0f; float position = 0.0f; float force = 10.0f; float mass = 1.0f; while (t <= 10.0) { position = position + velocity * dt; velocity = velocity + (force / mass) * dt; t += dt; }
Вот каким будет результат:

T=0: position = 0 velocity = 0 t=1: position = 0 velocity = 10 t=2: position = 10 velocity = 20 t=3: position = 30 velocity = 30 t=4: position = 60 velocity = 40 t=5: position = 100 velocity = 50 t=6: position = 150 velocity = 60 t=7: position = 210 velocity = 70 t=8: position = 280 velocity = 80 t=9: position = 360 velocity = 90 t=10: position = 450 velocity = 100
Как вы видите, на каждом шаге мы знаем и позицию, и скорость объекта. Это и есть численное интегрирование.

Явный метод Эйлера

Вид интегрирования, который мы только что использовали, называется явным методом Эйлера .

Он назван в честь швейцарского математика Леонарда Эйлера , впервые открывшего эту технику.

Интегрирование Эйлера - это простейшая техника численного интегрирования. Она точна на 100% только когда темп изменений в течение шага времени постоянен.

Поскольку в примере выше ускорение постоянно, интегрирование скорости выполняется без ошибок. Однако мы ещё интегрируем и скорость для получения позиции, а скорость увеличивается из-за ускорения. Это значит, что в проинтегрированной позиции возникает ошибка.

Но насколько велика эта ошибка? Давайте выясним!

Существует аналитическое решение движения объекта при постоянном ускорении. Мы можем использовать его, чтобы сравнить численно интегрированную позицию с точным результатом:

S = ut + 0.5at^2 s = 0.0*t + 0.5at^2 s = 0.5(10)(10^2) s = 0.5(10)(100) s = 500 метров
Через 10 секунд объект должен был переместиться на 500 метров, но явным метод Эйлера даёт нам результат 450. То есть погрешность в целых 50 метров всего за 10 секунд!

Кажется, что это невероятно плохо, но в играх обычно для шага физики берётся не такой большой временной интервал. На самом деле, физика обычно вычисляется с частотой, примерно равной частоте кадров дисплея.

Если задать шаг dt = 1 ⁄ 100 , то мы получим гораздо лучший результат:

T=9.90: position = 489.552155 velocity = 98.999062 t=9.91: position = 490.542145 velocity = 99.099060 t=9.92: position = 491.533142 velocity = 99.199059 t=9.93: position = 492.525146 velocity = 99.299057 t=9.94: position = 493.518127 velocity = 99.399055 t=9.95: position = 494.512115 velocity = 99.499054 t=9.96: position = 495.507111 velocity = 99.599052 t=9.97: position = 496.503113 velocity = 99.699051 t=9.98: position = 497.500092 velocity = 99.799049 t=9.99: position = 498.498077 velocity = 99.899048 t=10.00: position = 499.497070 velocity = 99.999046
Как вы видите, это достаточно хороший результат, определённо вполне достаточный для игры.

Почему явный метод Эйлера не (всегда) так уж хорош

С достаточно малым шагом времени явный метод Эйлера при постоянном ускорении даёт вполне достойные результаты, но что будет, если ускорение не постоянно?

Хорошим примером переменного ускорения является система пружинного амортизатора .

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

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

В большинстве коммерческих игровых физических движков используется этот интегратор.

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

Position += velocity * dt; velocity += acceleration * dt;
на:

Velocity += acceleration * dt; position += velocity * dt;
Использование симплектического интегратора Эйлера при dt = 1 ⁄ 100 для системы пружинного амортизатора даёт стабильный результат, очень близкий к точному решению:

Даже несмотря на то, что симплектический метод Эйлера имеет ту же степень точности, что и явный метод (степень 1), при интегрировании уравнений движения мы получаем намного лучший результат, потому что оно является симплектическим .

Существует множество других методов интегрирования

И теперь нечто совершенно другое.

RK4 - это интегратор четвёртого порядка, то есть накапливаемая ошибка имеет порядок четвёртой производной. Это делает метод очень точным, гораздо более точным, чем явный и неявный методы Эйлера, имеющие только первый порядок.

Но хотя он более точен, нельзя сказать, что RK4 автоматически становится «лучшим» интегратором, или даже что он лучше симплектического метода Эйлера. Всё гораздо сложнее. Тем не менее, это довольно интересный интегратор и его стоит изучить.

Реализация RK4

Существует уже много объяснений математики, используемой в RK4. Например: , и . Я настоятельно рекомендую изучить его выведение и понять, как и почему он работает на математическом уровне. Но я понимаю, что целевая аудитория этой статьи - программисты, а не математики, поэтому мы здесь будем рассматривать только реализацию. Так что давайте приступим.

Прежде чем приступить, давайте зададим состояние объекта как struct в C++, чтобы можно было удобно хранить позицию и скорость в одном месте:

Struct State { float x; // позиция float v; // скорость };
Также нам нужна структура для хранения производных значений состояний:

Struct Derivative { float dx; // dx/dt = скорость float dv; // dv/dt = ускорение };
Теперь нам нужна функция для вычисления состояния физики из t в t+dt с помощью одного набора производных, а после этого для вычисления производных в новом состоянии:

Derivative evaluate(const State & initial, double t, float dt, const Derivative & d) { State state; state.x = initial.x + d.dx*dt; state.v = initial.v + d.dv*dt; Derivative output; output.dx = state.v; output.dv = acceleration(state, t+dt); return output; }
Функция ускорения управляет всей симуляцией. Давайте используем её в системе пружинного амортизатора и вернём ускорение для единичной массы:

Float acceleration(const State & state, double t) { const float k = 15.0f; const float b = 0.1f; return -k * state.x - b * state.v; }
То, что нужно здесь записать, разумеется, зависит от симуляции, но необходимо структурировать симуляцию таким образом, чтобы можно было вычислять ускорение внутри этого метода для заданных состояния и времени, в противном случае он не подойдёт для интегратора RK4.

Наконец, мы получаем саму процедуру интегрирования:

Void integrate(State & state, double t, float dt) { Derivative a,b,c,d; a = evaluate(state, t, 0.0f, Derivative()); b = evaluate(state, t, dt*0.5f, a); c = evaluate(state, t, dt*0.5f, b); d = evaluate(state, t, dt, c); float dxdt = 1.0f / 6.0f * (a.dx + 2.0f * (b.dx + c.dx) + d.dx); float dvdt = 1.0f / 6.0f * (a.dv + 2.0f * (b.dv + c.dv) + d.dv); state.x = state.x + dxdt * dt; state.v = state.v + dvdt * dt; }
Интегратор RK4 делает выборку производной в четырёх точках, чтобы определить кривизну. Заметьте, как производная a используется при вычислении b, b используется при вычислении c, и c для d. Эта передача текущей производной в вычисление следующей и даёт интегратору RK4 его точность.

Важно то, что каждая из этих производных a, b, c и d будет разной , когда темп изменения в этих величинах является функцией времени или функцией самого состояния. Например, в нашей системе пружинного амортизатора ускорение является функцией текущей позиции и скорости, которые меняются в шаге времени.

После вычисления четырёх производных наилучшая общая производная вычисляется как взвешенная сумма, полученная из разложения в ряд Тейлора . Эта комбинированная производная используется для перемещения позиции и скорости вперёд во времени, точно так же, как мы делали это в явном интеграторе Эйлера.

Сравнение симплектического метода Эйлера и RK4

Давайте подвергнем проверке интегратор RK4.

Очевидно, что поскольку он является интегратором более высокого порядка (четвёртый против первого) он наглядно будет более точен, чем симплектический метод Эйлера, правда?

Неправда . Оба интегратора так близки к точному результату, что при таком масштабе почти невозможно найти между ними разницу. Оба интегратора стабильны и очень хорошо повторяют точное решение при dt = 1 ⁄ 100 .

При увеличении видно, что RK4 действительно более точен, чем симплектический метод Эйлера, но стоит ли эта точность сложности и лишнего времени выполнения RK4? Трудно судить.

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

Вот точный результат, к которому мы будем стремиться:

Чтобы усложнить интеграторам задачу, давайте увеличим шаг времени до 0,1 секунды.

Теперь запустим интеграторы на 90 секунд и увеличим масштаб:

Через 90 секунд симплектический метод Эйлера (оранжевая кривая) сдвинулся по фазе относительно точного решения, потому что его частота немного отличалась, в то время как зелёная кривая RK4 соответствует частоте, но теряет энергию!

Мы чётко можем это заметить, увеличив шаг времени до 0,25 секунды.

RK4 сохраняет верную частоту, но теряет энергию:

А симплектический метод Эйлера в среднем намного лучше сохраняет энергию:

Но от сдвигается от фазы. Какой интересный результат! Как вы видите, если RK4 имеет более высокий порядок точности, то он не обязательно «лучше». В этом вопросе есть множество нюансов.

Заключение

Мы реализовали три различных интегратора и сравнили результаты.
  1. Явный метод Эйлера
  2. Симплектический метод Эйлера
  3. Метод Рунге-Кутты порядка 4 (RK4)
Так какой же интегратор стоит использовать в игре?

Если вам действительно нужна бОльшая точность, чем у симплектического метода Эйлера, я рекомендую посмотреть на симплектические интеграторы более высокого порядка, рассчитанные на

  • уравнения движения
  • Добавить метки

    Интеграл является одним из важнейших понятий математики. Понятие «интеграл» возникло в связи со следующими потребностями:

    • отыскание функции по ее производной (например, нахождение функции пути по известной функции скорости);
    • измерение различных характеристик объектов (например, площади плоской фигуры и т.д.).

    Различают несколько видов интегралов: неопределенный, определенный и несобственный интегралы.

    Интеграл: как вычислить?

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

    Вычисление интеграла состоит из нескольких этапов:

    1. приведение подынтегральной функции к сумме табличных функций;
    2. разложение интеграла на сумму табличных интегралов;
    3. вычисление каждого интеграла по отдельности;
    4. формирование окончательного решения.

    Это только поначалу кажется сложным, однако при наличии некоторого опыта по вычислению интегралов каждая пара этапов (1 и 2; 3 и 4) интуитивно объединяются в один этап.

    При вычислении определенных интегралов основной является формула Ньютона-Лейбница, которую обязательно (!) нужно запомнить:

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

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

    Приложение интеграла к решению задач

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

    Пример . Вычислить определенный интеграл

    Как правило, решение задач с интегралами выполняется с использованием некоторой формулы, будь то формула вычисления площади плоской фигуры, длины дуги или какая-то другая формула. Поэтому решение любой задачи с интегралами можно выполнить в три этапа:

    • выбор формулы;
    • определение пределов интегрирования (если используется определенный интеграл);
    • непосредственное вычисление интеграла.

    Приложение интеграла к решению задач в геометрии

    Основными формулами при решении задач с интегралами по геометрии являются:

    Пример . Вычислить объем тела вращения, образованного вращением кривой y = x 2 вокруг оси ОХ, x ∈ .

    Решение . На первом этапе определяется используемая для решения задачи формула. В рассматриваемой задаче все сказано в условии «вычислить объем тела вращения». Следовательно, используем формулу .

    Переходим ко второму этапу решения задачи. Пределы интегрирования также заданы условием задачи (x ∈ ), следовательно, остается только подставить все необходимое в формулу.

    На третьем этапе необходимо вычислить полученный интеграл, который, кстати, является табличным интегралом.

    Приложение интеграла к решению задач в механике

    Основными формулами при решении задач с интегралами по механике являются:

    — путь, пройденный телом

    Пример . Тело движется со скоростью v(t) = t + 2 (м/с). Найти путь, который пройдет тело за 2 секунды после начала движения.

    Решение . На первом этапе определяется необходимая для решения задачи формула. Из условия задачи видно, что используется формула

    Пределы интегрирования также заданы условием задачи (t 1 = 0 — время начала движения; t 2 = 2 — время завершения движения), следовательно, остается только подставить все необходимое в формулу и вычислить полученный интеграл.

    Примечание: при вычислении интеграл был приведен к сумме табличных интегралов.

    Пример . Тело движется с ускорением 2 м/с 2 . Найти в общем виде функции, задающие изменение скорости и пройденный путь.

    Решение . На первом этапе определяется используемая для решения задачи формула. Взаимосвязь между ускорением и скоростью аналогична взаимосвязи между скоростью и путем. Для определения зависимости пути от времени используется формула Для определения же зависимости скорости от времени формула .

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

    Заключение

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

    Учите теорию и решайте задачи! И помните, что мы всегда готовы помочь Вам.

    Обсудим теперь обратную проблему. Пусть вместо таблицы расстояний нам дана таблица скоростей в различные моменты времени, начиная с нуля. В табл. 8.4 представлена зависимость скорости падающего шара от времени. Аналогичную таблицу можно составить и для машины, если записывать показания спидометра через каждую минуту или полминуты. Но можно ли, зная скорость машины в любой момент времени, вычислить расстояние, которое ею было пройдено?

    Таблица 8.4 скорость падающего шара

    Эта задача обратна той, которую мы только что рассмотрели. Как же решить ее, если скорость машины непостоянна, если она то ускоряется до 90 км/час, то замедляется, затем где-то останавливается у свето­фора и т.д.? Сделать это нетрудно. Нужно использовать ту же идею и выражать полное расстояние через бесконечно малые его части. Пусть в первую секунду скорость будет v 1 , тогда по формуле s= v 1 t можно вычислить расстояние, пройденное за эту секунду. В следующую секунду скорость будет несколько другой, хотя, может быть, и близкой к первоначальной, а расстояние, пройденное машиной за вторую секунду, будет равно новой скорости, умноженной на интервал времени (1 сек). Этот процесс можно продолжить дальше, до самого конца пути. В ре­зультате мы получим много маленьких отрезков, которые в сум­ме дадут весь путь. Таким образом, путь является суммой ско­ростей, умноженных на отдельные интервалы времени, или s = vt, где греческая буква  (сигма) означает сумми­рование. Точнее, это будет сумма скоростей в некоторые мо­менты времени, скажем t i , умноженные на t:

    причем каждый последующий момент t i+1 находится по пра­вилу t i+1 =t i +t. Но расстояние, полученное этим методом, не будет точным, поскольку скорость за время t все же изменяет­ся. Выход из этого положения заключается в том, чтобы брать все меньшие и меньшие интервалы t, т. е. разбивать время дви­жения на все большее число все меньших отрезков. В конце концов мы придем к следующему, теперь уже точному выра­жению для пройденного пути:

    Математики придумали для этого предела, как и для диф­ференциала, специальный символ. Значок  превращается в d, напоминая о том, что интервал времени сколь угодно мал, а знак суммирования превращается в ∫ - искаженное большое S, первая буква латинского слова «Summa». Этот значок назван интегралом. Таким образом, мы пишем

    s=∫v(t)dt, (8.8)

    где v(t) - скорость в момент t. Сама же операция суммирования этих членов называется интегрированием. Она противополож­на операции дифференцирования в том смысле, что производная этого интеграла равна v(t), так что один оператор (d/dt) «уничто­жает» другой (∫). Это дает возможность получать фор­мулы для интегралов путем обращения формул для дифферен­циалов: интеграл от функции, стоящей в правой колонке табл.8.3, будет равен функции, стоящей в левой колонке. Диф­ференцируя все виды функций, вы сами можете составить таблицу интегралов.

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

    Слово «интеграл» происходит от латинского integralis - целостный. Это название предложил в 17 в. ученик великого Лейбница (и также выдающийся математик) И. Бернулли. А что такое интеграл в современном понимании? Ниже мы постараемся дать всесторонний ответ на этот вопрос.

    Исторические предпосылки возникновения понятия интеграла

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

    Поначалу из рассмотрения таких зависимостей физических величин, например, пути от скорости, было сформировано математическое понятие функции y = f(x). Исследование свойств различных функций привело к зарождению математического анализа. Ученые активно искали способы изучения свойств различных функций.

    Как возникло вычисление интегралов и производных?

    После создания Декартом основ аналитической геометрии и появления возможности изображать функциональные зависимости графически в осях декартовой системы координат, перед исследователями встали две крупные новые задачи: как провести касательную к кривой линии в любой ее точке и как найти площадь фигуры, ограниченной сверху этой кривой и прямыми, параллельными осям координат. Неожиданным образом оказалось, что первая из них эквивалентна нахождению мгновенной скорости, а вторая - нахождению пройденного пути. Ведь он при неравномерном движении изображался в декартовых осях координат «расстояние» и «время» некоторой кривой линией.

    Гением Лейбница и Ньютона в середине 17 в. были созданы методы, позволившие решать обе эти задачи. Оказалось, что для проведения касательной к кривой в точке нужно найти величину так называемой производной от функции, описывающей эту кривую, в рассматриваемой ее точке, и эта величина оказывается равной скорости изменения функции, т. е. применительно к зависимости «путь от скорости» собственно мгновенной скоростью тела.

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

    Площадь под кривой линией

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

    Пусть f является непрерывной на отрезке функцией. Рассмотрим кривую у = f(x), изображенную на рисунке ниже. Как найти площадь области, ограниченной кривой), осью х, и линиями х = а и х = b? То есть площадь заштрихованной фигуры на рисунке.

    Самый простой случай, когда f является постоянной функцией; то есть, кривая есть горизонтальная линия f(X) = k, где k постоянная и k ≥ 0, как показано на рисунке ниже.

    В этом случае область под кривой - всего лишь прямоугольник с высотой k и шириной (b - a), так что площадь определяется как: k · (b - а).

    Области некоторых других простых фигур, таких как треугольник, трапеция и полуокружность, даются формулами из планиметрии.

    Площадь под любой непрерывной кривой у = f(х) дается определенным интегралом, который записывается так же, как обычный интеграл.

    Риманова сумма

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

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

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

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

    Но мы можем также взять высоту каждого из аппроксимирующих прямоугольников, равной просто некоторому значению функции в произвольной точке x* i внутри соответствующей полоски Δx i (смотри рис. ниже). При этом мы даже можем не брать одинаковую ширину всех полосок.

    Составим Риманову сумму:

    Переход от Римановой суммы к определенному интегралу

    В высшей математике доказывается теорема, которая гласит, что если при неограниченном возрастании числа n аппроксимирующих прямоугольников наибольшая их ширина стремится к нулю, то Риманова сумма A n стремится к некоторому пределу A. Число A - одно и то же при любом способе образования аппроксимирующих прямоугольников и при любом выборе точек x* i .

    Наглядное пояснение теоремы дает рисунок ниже.

    Из него видно, что, чем уже прямоугольники, тем ближе площадь ступенчатой фигуры к площади под кривой. При числе прямоугольников n→∞ их ширина Δx i →0, а предел A суммы A n численно равен искомой площади. Этот предел и есть определенный интеграл функцииf (х):

    Символ интеграла, представляющий собой видоизмененную курсивную литеру S, был введен Лейбницем. Ставить сверху и снизу обозначения интеграла его пределы предложил Ж. Б. Фурье. При этом ясно указывается начальное и конечное значение x.

    Геометрическое и механическое истолкование определенного интеграла

    Попробуем дать развернутый ответ на вопрос о том, что такое интеграл? Рассмотрим интеграл на отрезке от положительной внутри него функции f(х), причем считаем, что верхний предел больше нижнего a

    Если ординаты функции f(х) отрицательны внутри , то абсолютное значение интеграла равно площади между осью абсцисс и графиком y=f(х), сам же интеграл отрицателен.

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

    Так, для функции, показанной на рисунке выше, определенный интеграл от a до b будет равен (S1 + S3) - (S2+S4).

    Механическое истолкование определенного интеграла тесно связано с геометрическим. Вернемся к разделу «Риманова сумма» и представим, что приведенный на рисунках график выражает функцию скорости v=f(t) при неравномерном движении материальной точки (ось абсцисс является осью времени). Тогда площадь любого аппроксимирующего прямоугольника шириной Δt, который мы строили при формировании Римановой суммы, будет выражать приближенно путь точки за время Δt, а именно v(t*)Δt.

    Полная сумма площадей прямоугольников на отрезке от t 1 =a до t 2 =b выразит приближенно путь s за время t 2 - t 1 , а предел ее, т. е. интеграл (определенный) от a до b функции v = f(t) по dt даст точное значение пути s.

    Дифференциал определенного интеграла

    Если вернуться к его обозначению, то вполне можно предположить, что a = const, а b является конкретным значением некоторой независимой переменной x. Тогда определенный интеграл с верхним пределом x̃ из конкретного числа превращается в функцию от x̃. Такой интеграл равен площади фигуры под кривой, обозначенной точками aABb на рисунке ниже.

    При неподвижной линии aA и подвижной Bb эта площадь становится функцией f(x̃), причем приращения Δx̃ по-прежнему откладываются вдоль оси х, а приращением функции f(x̃) являются приращения площади под кривой.

    Предположим, что мы дали переменной x̃ = b некоторое малое приращение Δx̃. Тогда приращение площади фигуры aABb складывается из площади прямоугольника (заштрихован на рисунке) Bb∙Δx̃ и площади фигуры BDC под кривой. Площадь прямоугольника равна Bb∙Δx̃ = f(x̃)Δx̃, т.е она является линейной функцией приращения независимой переменной. Площадь же фигуры BDC заведомо меньше, чем площадь прямоугольника BDCK = Δx̃∙Δy, и при стремлении Δx̃ →0 она уменьшается еще быстрее него. Значит, f(x̃)Δx̃ = f(x̃)dx̃ есть дифференциал переменной площади aABb, т. е. дифференциал определенного интеграла

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

    Фундаментальное соотношение интегрального исчисления

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

    Пусть функция F(x) является обозначением результата интегрирования функции f(х). Соответствие между этими двумя функциями в результате интегрирования второй из них обозначается следующим образом:

    Как видно, при символе интеграла отсутствуют пределы интегрирования. Это означает, что из определенного он преобразован в неопределенный интеграл. Слово «неопределенный» означает, что результатом операции интегрирования в данном случае является не одна, а множество функций. Ведь, кроме собственно функции F(x), последним выражениям удовлетворяет и любая функция F(x)+С, где С = const. При этом подразумевается, что постоянный член в ансамбле первообразных можно задавать по произволу.

    Следует подчеркнуть, что, если интеграл, определенный от функции, является числом, то неопределенный есть функция, точнее, их множество. Термин «интегрирование» применяется для определения операции разыскания обоих видов интегралов.

    Основное правило интегрирования

    Оно представляет собой полную противоположность соответствующему правилу для дифференцирования. Как же берутся неопределенные интегралы? Примеры этой процедуры мы рассмотрим на конкретных функциях.

    Давайте посмотрим на степенную функцию общего вида:

    После того как мы сделали это с каждым слагаемым в выражении интегрируемой функции (если их несколько), мы добавляем постоянную в конце. Напомним, что взятие производной от постоянной величины уничтожает ее, поэтому взятие интеграла от любой функции даст нам восстановление этой постоянной. Мы обозначаем ее С, так как постоянная неизвестна - это может быть любое число! Поэтому мы можем иметь бесконечно много выражений для неопределенного интеграла.

    Давайте рассмотрим простые неопределенные интегралы, примеры взятия которых показаны ниже.

    Пусть нужно найти интеграл от функции:

    f(х) = 4x 2 + 2x - 3.

    Начнем с первого слагаемого. Мы смотрим на показатель степени 2 и увеличиваем его на 1, затем делим первый член на результирующий показатель 3. Получаем: 4(x 3) / 3.

    Затем мы смотрим на следующий член и делаем то же самое. Так как он имеет показатель степени 1, то результирующий показатель будет 2. Таким образом, мы разделим это слагаемое на 2: 2(x 2) / 2 = x 2 .

    Последний член имеет множитель х, но мы просто не видим его. Мы можем представить себе последнее слагаемое как (-3x 0). Это эквивалентно (-3)∙(1). Если мы используем правило интегрирования, мы добавим 1 к показателю, чтобы поднять его до первой степени, а затем разделим последний член на 1. Получим 3x.

    Это правило интегрирования работает для всех значений n, кроме n = - 1 (потому что мы не можем разделить на 0).

    Мы рассмотрели самые простой пример нахождения интеграла. Вообще же решение интегралов является делом непростым, и в нем хорошим подспорьем является уже накопленный в математике опыт.

    Таблицы интегралов

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

    Еще одна таблица интегралов содержит основные тригонометрические функции:

    Как же вычислить определенный интеграл

    Оказывается, сделать это, умея интегрировать, т. е. находить неопределенные интегралы, очень просто. И помогает в этом формула основателей интегро-дифференциального исчисления Ньютона и Лейбница

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

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

    Найдем площадь участка под одной полуволной синусоидой.

    Вычислим заштрихованную площадь под гиперболой.

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

    y=(1+t)/t 3 от t=1 до t=2.

    Теперь покажем, как можно упростить взятие интеграла введением промежуточной переменной. Пусть нужно вычислить интеграл от (x+1) 2 .

    О несобственных интегралах

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

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

      Понятие площади

      Площадь - очень тонкое понятие. На данный момент, давайте представим площадь как визуальную интерпретацию умножения:

      Мы можем “применять” числа на разных осях друг к другу (3 применяется к 4) и получить результат (12 единиц площади). Свойства каждого вводного значения (длина и длина) превратились в результат (единицы площади).

      Легко, правда? Не так, как кажется на первый взгляд. Умножение может привести к “отрицательному результату” (3×(-4) = -12), которого не существует.

      Мы понимаем график как представление умножения, и используем эту аналогию из-за удобства. Если бы все были слепыми, и в мире не существовало диаграмм, мы бы все равно хорошо справлялись с умножением. Площадь - это всего лишь интерпретация.

      Умножение по частям

      А теперь давайте умножим 3 × 4.5:

      Что происходит? Ну, 4.5 - это не целочисленное число, но мы же можем воспользоваться “частичным” умножением. Если 3×4 = 3 + 3 + 3 + 3, то

      3 × 4.5 = 3 + 3 + 3 + 3 + 3×0.5 = 3 + 3 + 3 + 3 + 1.5 = 13.5

      Мы берем 3 (значение) 4.5 раза. Таким образом, мы объединили 3 с 4 полными сегментами (3 × 4 = 12), а также одним частичным сегментом (3 × 0.5 = 1.5).

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

      Проблема с числами

      Числа не всегда ведут себя постоянно для наших расчетов. Сценарии типа “Вы ехали 3 часа со скоростью 30 км/ч” не имеют ничего общего с реальностью. Так условия описываются просто для удобства.

      Формулы по типу “расстояние = скорость × время” только маскируют проблему; нам все еще нужно брать постоянные числа и умножать. А как узнать пройденное расстояние, если наша скорость постоянно изменялась во времени?

      Описываем изменение

      Первым испытанием для нас будет описание изменяющегося числа. Мы можем просто сказать: “Моя скорость менялась с 0 до 30 км/ч”. Это не совсем точно: как быстро она изменялась? Были ли изменения плавными?

      Давайте будем точны: моя скорость в каждый момент времени равнялась удвоенному количеству секунд. В 1 секунду я двигался со скоростью 2 км/ч. Во 2 секунду скорость уже была 4 км/ч, в 3 секунду - уже 6 км/ч, и так далее:

      Вот теперь у нас есть хорошее описание, достаточно подробное, чтобы знать свою скорость в каждый момент времени. Формальное описание звучит как “скорость - это функция времени”, и оно означает, что мы можем взять любой момент времени (t) и узнать нашу скорость в тот момент (“2t” км/ч).

      (Это, конечно, не дает ответа на вопрос, почему скорость и время связаны. Я могу ускоряться за счет гравитации, или ослик может толкать меня сзади. Мы всего лишь установили, что с изменением времени изменяется и скорость).

      Наше произведение “расстояние = скорость × время”, возможно, лучше написать так:

      расстояние = скорость(t) × t

      где скорость (t) - это скорость в любой момент времени. В нашем случае скорость (t) = 2t, так что мы пишем:

      расстояние = 2t × t

      Но это уравнение выглядит странно! “t” по-прежнему выглядит как единичный момент, который нужно выбирать (например, t=3 секунды), а значит и скорость (t) примет единичное значение (6 км/ч). А это нехорошо.

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

      Вот как это выглядит в большой перспективе:

    • Обычное умножение (прямоугольник): берем расстояние, на которое мы продвинулись за секунду, предполагая, что эта величина была постоянной во все последующие секунды движения, и “масштабируем ее”.
    • Интегрирование (по частям): рассматриваем время как ряд мгновений, в каждое из которых скорость разная. Суммируем расстояния, пройденные посекундно.

    Мы видим, что обычное умножение - это частный случай интегрирования, когда количество пройденных метров не изменяется.

    Насколько большая эта “часть”?

    Насколько велика “часть”, при прохождении дистанции по частям? Секунда? Миллисекунда? Наносекунда?

    Ответ навскидку: достаточно мала, чтобы значение было постоянным все время. Нам не нужна идеальная точность.

    Более длинный ответ: такие понятия, как пределы, были придуманы, чтобы помочь в покусочном умножении. Принося пользу, они просто решают проблему и отвлекают от сути “объединения величин”. Мне очень не нравится, что пределы проходят в самом начале матанализа, еще перед тем, как студенты вникнут в проблему, которую они решают.

    А что по поводу начала и конца?

    Скажем, мы исследуем интервал от 3 до 4 секунд.

    Скорость вначале (3×2 = 6 км/ч) отличается от скорости в конце (4×2 = 8 км/ч). Так какое же значение мне брать при вычислении “скорости × время”?

    Решением будет разбить наши кусочки времени на достаточно мелкие отрезки (от 3.00000 до 3.00001 секунд), пока разность скоростей от начала до конца интервала будет для нас незначительной. Опять же, это более длинный разговор, но “поверьте мне”, что это временной отрезок, который делает разницу незначительной.

    На графике представьте, что каждый интервал - это одна точка на прямой. Вы можете нарисовать ровную линию к каждой скорости, и ваша “площадь” будет представлять собой множество отрезков, которое и будет измерять умножение.

    Где же “часть”, и каково ее значение?

    Разделение части и ее значения далось мне нелегко.

    “Часть” - это интервал, который мы рассматриваем (1 секунда, 1 миллисекунда, 1 наносекунда). “Позиция” - это то, где начинается секундный, миллисекундный или наносекундный интервал. Значение - это наша скорость в той позиции.

    Например, рассмотрим интервал от 3.0 до 4.0 секунд:

    • “Ширина” отрезка времени составляет 1.0 секунду
    • Позиция (начальное время) равно 3.0
    • Значение (скорость(t)) - это скорость(3.0) = 6.0 км/ч

    Опять же, матанализ учит нас сокращать интервал до тех пор, пока разница между значениями в начале и конце интервала будет на столько мала, что ею можно пренебречь, считая этот интервал "точкой". Не выпускайте из вида большую картинку: мы умножаем набор частей.

    Понимание записи интеграла

    У нас есть здравая идея “покусочного умножения”, но мы никак не можем ее выразить. “Расстояние = скорость(t) × t” все еще выглядит, как обычное уравнение, где t и скорость(t) принимают одно единственное значение.

    В матанализе мы пишем это соотношение как

    расстояние = ∫ скорость(t)dt

    • знак интеграла (s-образная кривая) означает, что мы умножаем покусочно и суммируем значения в одно.
    • dt представляет временной “интервал”, который мы рассматриваем. Его называют “дельта t” а не “d раз по t”.
    • t представляет положение dt (если dt - это промежуток от 3.0 до 4.0, то t равно 3.0)
    • скорость(t) - это значение, на которое мы умножаем (скорость(3.0) = 6.0))

    У меня есть парочка претензий к этой записи:

    • То, как здесь используются буквы, немного смущает. “dt” выглядит как “d раз по t” в отличие от любого уравнения, которое вы ранее видели.
    • Мы пишем скорость(t) × dt, вместо скорость(t_dt) × dt. Последний вариант четко указывает, что мы исследуем “t” на конкретном участке “dt”, а не какое-то глобальное “t”
    • Вы часто встретите скорость(t) , без dt . Это вообще помогает легко забыть, что мы выполняем покусочное умножение двух элементов.

    Похоже, уже поздно менять форму записи интегралов. Просто запомните эту идею насчет “умножения” чего-то, что изменяется.

    Как это понимать

    Когда я вижу вот это:

    расстояние = ∫ скорость(t)dt

    Я думаю “Расстояние равно скорости t раз (читая левую часть первой) или “совместите скорость и время, чтобы получить расстояние” (читая правую часть первой).

    В уме я перевожу “скорость(t)” как скорость и “dt”, и это превращается в умножение, при условии, что скорости позволено изменяться. Представление интегрирования подобным образом помогает мне сконцентрироваться на том, что на самом деле происходит (“Мы совмещаем скорость и время, чтобы получить расстояние!”) вместо зацикливания на деталях действия.

    Бесплатный сюрприз: новые идеи

    Интегралы - это очень глубокая идея, также, как и умножение. У вас могло появиться много вопросов, основанных на этой аналогии:

    • Если интегралы умножают изменяющиеся величины, есть ли что-то, что делит их? (ДА - производные).
    • Являются ли интегралы (умножение) и производные (деление) взаимообратными? (Да, с некоторыми тонкостями).
    • Можем ли мы преобразовать уравнение “расстояние = скорость × время” в “скорость = расстояние / время”? (Да).
    • Можем ли мы совмещать несколько величин одновременно? (Да - это называется многократное интегрирование).
    • Влияет ли как-то порядок совмещения на результат? (Обычно нет).

    Как только вы начнёте воспринимать интегралы как “улучшенное умножение”, вы сразу начнете задумываться о таких вещах, как “улучшенное деление”, “повторное интегрирование” и так далее. Застряв на “площади под кривой”, вы не уловите связи между этими темами. (Математических заучек видение “площади под кривой” и “угла наклона кривой” обратными понятиями ставит в тупик).

    Как читать интегралы

    У интегралов масса применений. Одним из них является объяснение того, что две величины были “умножены” для получения результата.

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

    Площадь = ∫ Длина окружности (r) · dr = ∫ 2πr · dr = π · r 2

    Нам бы очень хотелось взять площадь кривой умножением. Но мы не можем - высота изменяется в каждой ее точке. Если мы “развернем” круг, мы увидим, что частичка площади под каждой порцией радиуса будет равна “радиус × отрезок окружности”. Мы можем описать эту связь с помощью интеграла (как описано выше).

    А вот как интеграл описывает идею, что “масса = плотность × объем”:

    масса = ∫ V ρ(r) ∙ dv

    Что здесь сказано? Греческая буква "ро" ("ρ") - это функция плотности, которая говорит нам, насколько плотен материал в определенном положении. Так, r∙dv - это частичка объема, который мы рассматриваем. Так что мы умножаем маленький кусочек объема (dv) на плотность в том интервале ρ(r), и потом складываем все эти части, чтобы получить массу.

    Мы привыкли просто умножать плотность на объем, но если плотность изменяется, то нужно интегрировать. Индекс V просто означает “интеграл объема”, что по сути является тройным интегралом длины, ширины и высоты! Интеграл предполагает четыре “умножения”: 3 для поиска объема, и еще одно для умножения на плотность.

    Что это нам дало?

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

    Рассматривайте интегралы как улучшенный способ умножения: вычисления станут проще, и вам под силу станут понятия типа кратного интеграла и производной . Приятных вычислений!



    © dagexpo.ru, 2024
    Стоматологический сайт