5.21. Численное вычисление определенного интеграла
5.21. Численное вычисление определенного интеграла
Я очень хорошо владею дифференциальным и интегральным исчислением…
У.С.Джильберт, «Пираты Пензанса», акт 1
Для приближенного вычисления определенного интеграла имеется проверенная временем техника. Любой студент, изучавший математический анализ, вспомнит, что она называется суммой Римана.
Приведенный ниже метод integrate принимает начальное и конечное значения зависимой переменной, а также приращение. Четвертый параметр (который на самом деле параметром не является) — это блок. В блоке должно вычисляться значение функции от переданной в него зависимой переменной (здесь слово «переменная» употребляется в математическом, а не программистском смысле). Необязательно отдельно определять функцию, которая вызывается в блоке, но для ясности мы это сделаем.
def integrate(x0, x1, dx=(x1-x0)/1000.0)
x = x0
sum = 0
loop do
y = yield(x)
sum += dx * y
x += dx
break if x > x1
end
sum
end
def f(x)
x**2
end
z = integrate(0.0,5.0) {|x| f(x) }
puts z, " " # 41.7291875
Здесь мы опираемся на тот факт, что блок возвращает значение, которое может быть получено с помощью yield. Кроме того, сделаны некоторые допущения. Во-первых, мы предполагаем, что x0 меньше x1 (в противном случае получится бесконечный цикл). Читатель сам легко устранит подобные огрехи. Во-вторых, мы считаем, что функцию можно вычислить в любой точке заданной области. Если это не так, мы получим хаотическое поведение. (Впрочем, подобные функции все равно, как правило, не интегрируемы — по крайней мере, на указанном интервале. В качестве примера возьмите функцию f(x)=x/(x-3) в точке x=3.)
Призвав на помощь полузабытые знания об интегральном исчислении, мы могли бы вычислить, что в данном случае результат равен примерно 41.666 (5 в кубе, поделенное на 3). Почему же ответ не так точен, как хотелось бы? Из-за выбранного размера приращения; чем меньше величина dx, тем точнее результат (ценой увеличения времени вычисления).
Напоследок отметим, что подобная методика более полезна для действительно сложных функций, а не таких простых, как f(x) = x**2.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Вычисление постоянных
Вычисление постоянных Вот что мы собираемся сделать: пройтись по всем объявлениям стилей и заменить вычисление выражения его постоянным значением. В предыдущем примере, предполагая, что мы используем IE6 в стандартном режиме, нам хотелось бы видеть следующий код:#myDiv {border:
Заблуждение № 5: сначала надо поднять продажи до определенного уровня, а потом уж заняться коэффициентом конверсии
Заблуждение № 5: сначала надо поднять продажи до определенного уровня, а потом уж заняться коэффициентом конверсии Неправда! Если нет времени на конверсию сейчас, то чем вообще вы занимаетесь? Быть может, привлечь покупателя для вас не проблема? Или прибыль сайта
2.2.2. Понимание повторяемого и определенного уровней
2.2.2. Понимание повторяемого и определенного уровней По мере роста объема и сложности проекта, внимание постепенно смещается от технических вопросов к организационным и управленческим — т. е. к вопросам, которые находятся в фокусе рассмотрения модели зрелости процессов
5.27. Вычисление коэффициента корреляции
5.27. Вычисление коэффициента корреляции Коэффициент корреляции — одна из самых простых и полезных статистических мер. Он измеряет «линейность» набора, состоящего из пар (x, у), и изменяется от -1.0 (полная отрицательная корреляция) до +1.0 (полная положительная корреляция).Для
7.5. Вычисление n-ого дня недели в месяце
7.5. Вычисление n-ого дня недели в месяце Иногда, зная год и месяц, хочется вычислить дату, скажем, третьего понедельника или второго вторника в этом месяце. Такую задачу решает код в листинге 7.1.Чтобы найти n-ое вхождение данного дня недели, мы передаем n в качестве первого
Вычисление площади и периметра
Вычисление площади и периметра Команда AREA вычисляет площадь и периметр объекта или заданной области. Вызывается из падающего меню Tools ? Inquiry ? Area или щелчком на пиктограмме Area панели инструментов Inquiry.Воображаемая фигура, предназначенная для вычисления площади и
Вычисление геометрии и массы
Вычисление геометрии и массы Команда MASSPROP вычисляет массовые характеристики областей и тел. Вызывается из падающего меню Tools ? Inquiry ? Region/Mass Properties или щелчком на пиктограмме Region/Mass Properties на панели инструментов Inquiry.Команда MASSPROP отображает массовые характеристики в
Вычисление размера кэша
Вычисление размера кэша Когда Firebird читает страницу базы данных с диска, он сохраняет эту страницу в кэше. Обычно размер кэша по умолчанию является достаточным. Если ваше приложение использует соединения из пяти и более таблиц, Firebird Суперсервер может автоматически
Вычисление площади и периметра
Вычисление площади и периметра Команда AREA вычисляет площадь и периметр объекта или заданной области. Вызывается из падающего меню Tools ? Inquiry ? Area или щелчком на пиктограмме Area на панели инструментов Inquiry.Воображаемая фигура, предназначенная для вычисления площади и
2.3.9. Вычисление размера БД
2.3.9. Вычисление размера БД ERwin позволяет рассчитать приблизительный размер БД в целом, а также таблиц, индексов и других объектов через определенный период времени после начала эксплуатации ИС. Для расчета размеров физических объектов служит диалог Volumetrics Editor (рис. 2.99),
Вычисление номеров
Вычисление номеров Пожалуй, самым простым для понимания (но не самым простым в использовании) способом вычисления номера является использование XPath-выражений. Этот способ практически идентичен использованию xsl:value-of, как было показано в начале этой главы. Единственным
Выбор шаблонов для элементов пространства имен, определенного по умолчанию
Выбор шаблонов для элементов пространства имен, определенного по умолчанию Одним из значительных неудобств первой версии XSLT была невозможность сменить пространство имен, определенное по умолчанию для паттернов. То есть, если шаблон будет определен как<xsl:template
5.2.1. Вычисление максимума
5.2.1. Вычисление максимума Процедуру нахождения наибольшего из двух чисел можно запрограммировать в виде отношенияmах( X, Y, Мах)где Мах = X, если X больше или равен Y, и Мах есть Y, если X меньше Y. Это соответствует двум таким предложениям:mах( X, Y, X) :- X >= Y.max( X, Y, Y) :- X < Y.Эти