Длина дуги

⏱ 40 мин · 🧩 заданий: 10

Длина как предел ломаных

Длину отрезка мы знаем, а что такое длина кривой? Впишем в кривую ломаную с вершинами в точках M_0, M_1, \dots, M_n. Её длина легко считается. Длина кривой — предел длин вписанных ломаных при стремлении длины наибольшего звена к нулю (если он существует; тогда кривая называется спрямляемой).

Для гладкой кривой предел существует, и его можно найти интегралом. Звено между соседними точками графика y = f(x) имеет длину

\sqrt{\Delta x^2 + \Delta y^2} = \sqrt{1 + \left(\frac{\Delta y}{\Delta x}\right)^2}\,\Delta x \approx \sqrt{1 + f'(\xi)^2}\,\Delta x

(по теореме Лагранжа \Delta y = f'(\xi)\Delta x). Это интегральная сумма — переходим к пределу.

Три формулы

График y = f(x), x \in [a; b]:

L = \int_a^b\sqrt{1 + f'(x)^2}\,dx.

Параметрическая кривая x = x(t), y = y(t), t \in [\alpha; \beta]:

L = \int_\alpha^\beta\sqrt{x'(t)^2 + y'(t)^2}\,dt.
В пространстве добавляется z'(t)^2. Физический смысл: \sqrt{x'^2 + y'^2} — модуль скорости точки, а длина пути — интеграл скорости по времени.

Полярные координаты r = r(\varphi), \varphi \in [\alpha; \beta]: подставив x = r\cos\varphi, y = r\sin\varphi, получаем x'^2 + y'^2 = r^2 + r'^2 и

L = \int_\alpha^\beta\sqrt{r^2 + r'(\varphi)^2}\,d\varphi.

Удобно помнить дифференциал дуги: ds = \sqrt{dx^2 + dy^2} — теорема Пифагора для бесконечно малого треугольника.

Примеры

Цепная линия y = a\operatorname{ch}\frac xa — форма провисающей цепи:

L = \int_0^x\sqrt{1 + \operatorname{sh}^2\frac ta}\,dt = \int_0^x\operatorname{ch}\frac ta\,dt = a\operatorname{sh}\frac xa.

Циклоида: L = \int_0^{2\pi}\sqrt{2 - 2\cos t}\,dt = \int_0^{2\pi}2\sin\frac t2\,dt = 8 — ровно в 4 раза больше диаметра колеса (Рен, 1658).

import numpy as np
import vis

t = np.linspace(0, 2 * np.pi, 2001)
x, y = t - np.sin(t), 1 - np.cos(t)
speed = np.sqrt(np.gradient(x, t)**2 + np.gradient(y, t)**2)
print("длина арки циклоиды ≈", round(float(np.trapz(speed, t)), 6))
n = 6
tk = np.linspace(0, 2 * np.pi, n + 1)
poly = (tk - np.sin(tk), 1 - np.cos(tk))
print(f"вписанная ломаная из {n} звеньев:", round(float(np.sum(np.hypot(np.diff(poly[0]), np.diff(poly[1])))), 4))
vis.plane({"циклоида": (x, y), f"ломаная, {n} звеньев": poly}, title="Длина кривой — предел длин вписанных ломаных")

Длина эллипса

Для эллипса x = a\cos t, y = b\sin t:

L = \int_0^{2\pi}\sqrt{a^2\sin^2t + b^2\cos^2t}\,dt = 4a\int_0^{\pi/2}\sqrt{1 - e^2\sin^2t}\,dt = 4a\,E(e),

где e = \sqrt{1 - b^2/a^2} — эксцентриситет. Этот эллиптический интеграл не выражается через элементарные функции. Рамануджан нашёл замечательно точное приближение:

L \approx \pi\left(3(a + b) - \sqrt{(3a + b)(a + 3b)}\right).
import numpy as np
import sympy as sp

a, b = 5.0, 3.0
t = np.linspace(0, 2 * np.pi, 200001)
L = np.trapz(np.sqrt(a**2 * np.sin(t)**2 + b**2 * np.cos(t)**2), t)
ram = np.pi * (3 * (a + b) - np.sqrt((3 * a + b) * (a + 3 * b)))
e2 = 1 - b**2 / a**2
print(f"численно: {L:.10f}")
print(f"4a·E(e):  {float(4 * a * sp.elliptic_e(e2)):.10f}   (в SymPy аргумент — квадрат эксцентриситета)")
print(f"Рамануджан: {ram:.10f}")

Итог

  • L = \int\sqrt{1 + y'^2}\,dx для графика, \int\sqrt{x'^2 + y'^2}\,dt для параметрической кривой, \int\sqrt{r^2 + r'^2}\,d\varphi в полярных координатах.
  • ds = \sqrt{dx^2 + dy^2} — дифференциал дуги.
  • Длины многих кривых (эллипс) выражаются только через специальные функции.

Практика решено 0 из 10

Вы не вошли — ответы проверяются, но прогресс не сохранится. Войти или зарегистрироваться.
Задание 1 Ввод формулы

Длина отрезка прямой y = 2x + 1 при x \in [0;\,3] по формуле длины дуги.

Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 2 Ввод формулы

Длина дуги полукубической параболы y = x^{3/2}, x \in [0;\,4].

Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 3 Ввод формулы

Длина цепной линии y = \operatorname{ch} x при x \in [0;\,\ln 2].

Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 4 Ввод формулы

Длина дуги y = \ln\cos x при x \in \left[0;\,\frac\pi3\right].

Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 5 Ввод формулы

Длина окружности x = R\cos t, y = R\sin t при R = 5.

Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 6 Ввод формулы

Длина одной арки циклоиды x = t - \sin t, y = 1 - \cos t.

Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 7 Ввод формулы

Длина астроиды x = \cos^3t, y = \sin^3t (вся кривая).

Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 8 Ввод формулы

Длина кардиоиды r = 1 + \cos\varphi.

Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 9 Ввод формулы

Длина первого витка спирали Архимеда r = \varphi (\varphi \in [0;\,2\pi]) — введите число до тысячных.

Как вводить формулы Степень — ^ (x^2, e^(3x)), умножение можно не писать (2x, x sin(x)), дробь — / (1/(x+1)), корень — sqrt(x), модуль — |x| или abs(x). Функции: sin cos tg ctg arcsin arccos arctg arcctg sh ch ln lg exp, константы pi и e. Аргументы функций лучше брать в скобки: sin(2x). Для неопределённого интеграла допишите + C. Индексы пишутся слитно: m1, v0; греческие буквы — словом или символом: alpha или α. Десятичная дробь — через точку или запятую, большие числа — через 10^: 6,67*10^(-11).
Задание 10 Программа на Python

Длина ломаной. Напишите функцию curve_length(x, y, t0, t1, n): x, y — функции параметра, кривая приближается ломаной из n звеньев с равным шагом по t; верните её длину. Длина ломаной всегда не больше длины кривой и сходится к ней при n \to \infty.

Какие тесты проверяют код (1)
import math
assert abs(curve_length(lambda t: t, lambda t: 2 * t, 0, 3, 1) - 3 * math.sqrt(5)) < 1e-12, "Отрезок — точно одним звеном"
L = curve_length(math.cos, math.sin, 0, 2 * math.pi, 6)
assert abs(L - 6) < 1e-9, "Правильный шестиугольник, вписанный в единичную окружность, имеет периметр 6"
assert abs(curve_length(lambda t: t - math.sin(t), lambda t: 1 - math.cos(t), 0, 2 * math.pi, 20000) - 8) < 1e-6, "Длина арки циклоиды — 8"

Войдите, чтобы отмечать пройденные уроки.