Путенихин Петр Васильевич : другие произведения.

Парадокс близнецов - обзор решений. Приложения, гл.11

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:


 Ваша оценка:
  • Аннотация:
    Приложения к циклу статей "Парадокс близнецов - обзор решений"

Парадокс близнецов - обзор решений,
гл.11 Приложения

Путенихин П.В.

   Оглавление, URL:
   http://samlib.ru/p/putenihin_p_w/twin00.shtml
   11.1 Численное интегрирование
   11.2 Проверка численного интегрирования на функции Sin
   11.3 Сравнение численного и аналитического интегрирования
   11.4 Фрагмент кода VBA в приложении Excel 2010
  
   11.1 Численное интегрирование
  
   Интеграл от некоторой функции геометрически представляет собой площадь под графиком этой функции. Таким образом, для вычисления интеграла функции существуют, по меньшей мере, три принципиально отличных способа. Первый - это аналитической вычисление новой функции - интеграла, второй - разбиение площади на элементарные участки и их пересчет, третий - подобен такому же разбиению на участки, но аналитически, с использованием уравнения интегрируемой функции. В этом случае мы получаем либо график, либо таблицу числовых данных. Напротив, первый способ позволяет получить решение в точном аналитическом виде, что позволяет в дальнейшем осуществлять строгие аналитические преобразования и исследование интеграла, если только при его вычислении не использовались упрощающие замены, фактически подменяющие исходную функцию её подобием.
   Современные компьютерные технологии позволяют вычислить значение интеграла в виде графической функции. Мы получаем некую линию, график, предельно точно соответствующий интегралу функции, которая даже может быть и сама представлена в графическом или табличном виде, но аналитическое исследование этой графической (или табличной) функции-интеграла затруднено. Можно отдельные участки интеграла аппроксимировать какими-либо элементарными функциями, но фундаментальную суть интеграла они, разумеется, не отражают.
   Тем не менее, графическое, числовое (табличное) интегрирование даёт немало ценной информации. Если не предполагается дальнейшее фундаментальное исследование собственно интеграла, то такие графики вполне достаточны.
   Рассмотрим подробнее, как выглядит такое числовое, табличное интегрирование. Возьмем функцию, например, cos(x). Строим её график. Теперь вычисляем последовательно величины cos(x)dx и находим возрастающую сумму: cos1+ cos2+ cos3... для каждого текущего значения х. Пары значений (сумма; х) изображаем в виде графика. Результатом и является график - уравнение интеграла:

Приложения

Рис.11.1 Числовой интеграл функции cos(x)

  
   На рисунке представлены три графика. Первый - одиночная тонкая линия - это исходная, интегрируемая функция - cos(x). Толстая линия рядом - это её числовой интеграл - sin(x). Рядом с толстой линией интеграла для примера показана аналитическая линии функции sin(x), которая немного смещена вправо, чтобы не сливаться с интегральной линией.
   Подобный алгоритм позволяет производить интегрирование любой как аналитической, так и аппроксимированной, табличной функции. Например, трапецеидальное интегрирование состоит из следующих шагов:
   Находим первое значение функции.
   Находим второе значение функции для прироста аргумента
   Запоминаем его для следующего шага
   Находим полу-сумму запомненного и нового значений
   Умножаем на приращение аргумента (оно неизменно)
   Получено значение площади первого интервала
   В цикле находим остальные и суммируем их.
   Вычисленный интеграл является определенным, на некотором интервале, поэтому каждая промежуточная сумма является точкой графика (таблицы) интеграла.
   На следующем рисунке показано, как вычисляется площадь элементарной трапецеидальной ячейки интегрируемой функции f(x)

Приложения

Рис.11.2 Площадь интегральной трапеции

  
   При уменьшении приращения (x2-x1) площадь прямоугольной трапеции предельно приближается к площади косоугольной трапеции, одна из сторон которой является отрезком линии графика.

Приложения

   11.2 Проверка численного интегрирования на функции Sin
  
   Проверка, демонстрация численного интегрирования - функция Sin(ф)

Приложения

   Численным интегрированием получен результат 2,000:

Приложения

Рис.11.3 Численное интегрирование уравнения Sin(x)

  
   Такое совпадение означает корректность модели численного интегрирования.
  
   11.3 Сравнение численного и аналитического интегрирования
  
   Значение следующего интеграла может быть вычислено аналитически абсолютно точно:

Приложения      (11.1)

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

Приложения
Рис.11.4 Численное интегрирование уравнения (11.1)

  
   Получено: tB=17,093246. Дискретность - 8000, точность результата - 0,007%
   Получено: tB=17,094495. Дискретность - 4000, точность результата - 0,015%
   Получено: tB=17,096933. Дискретность - 2000, точность результата - 0,029%
   Получено: tB=17,101986. Дискретность - 1000, точность результата - 0,058%
   Получено: tB=17,111956. Дискретность - 500, точность результата - 0,117%
   Получено: tB=17,131836. Дискретность - 250, точность результата - 0,233%
   Получено: tB=17,171356. Дискретность - 125, точность результата - 0,462%
   Как видим и в этом случае результат численного интегрирования с высокой точностью совпал с аналитическим значение интеграла, что означает корректность метода.
  
   11.4 Фрагмент кода VBA в приложении Excel 2010
  
   Sub calculate_tB()
   'Пример табличного вычисления интеграла, имеющего аналитическую форму
   int_xtB = 0
   int_ytB = 0
   integ_tB = 0
   d_step = speed * 2 / step_b
   step_time_A = time_A / step_b
  
   chet = 1
   For s = 0 To step_b
   'значение координаты Х
   int_xtBs = Round(s * step_time_A, digits)
   'значение координаты Y
   int_ytBs = -speed + s * d_step
   int_ytBs = 1 - int_ytBs ^ 2
   int_ytBs = Sqr(int_ytBs)
   int_ytBs = int_ytBs * d_step
   int_ytBs = int_ytBs * time_A / 2 / speed
   integ_tB = integ_tB + int_ytBs
   'Для графика используем только половину значений
   If chet > 0 Then
   int_xtB = int_xtB & ";" & int_xtBs * 1
   int_ytB = int_ytB & ";" & Round(integ_tB, digits)
   End If
   chet = -chet
   'аварийный останов - нажатие любой клавиши
   aaa = DoEvents
   Sheets(Str1).Range("mods") = s
   Sheets(Str1).Range("integral_t") = integ_tB
   Next
   dash = msoLineSolid 'график штриховой линией
   Call graph(int_xtB, int_ytB, colorD, 2) 'x, y, цвет линии, толщина линии
   End Sub
  
   Исходные данные:
   Шаг интегрирования: step_b = 2000
   Скорость движения: speed = -3/2 - 0,866 (св.лет/год)
   Верхний предел интегрирования: time_A = 20 (лет)
   Аналитическое значение tB = time_B - 17,091996 (лет)
  
   Итоги вычислений:
   Интегральное значение tB= integ_tB - 17,096933 (лет)
   Погрешность: 100*(time_B - integ_tB)/integ_tB - 0,029%
  

 Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список
Сайт - "Художники" .. || .. Доска об'явлений "Книги"