Паскаль. Основы программирования


           

а поэтому ее можно считать


Примером может быть интеграл



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

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

Задание 5

1. Используя оператор выбора Case ... of ..., составьте программу, с помощью которой пользователю можно было бы выбирать метод интегрирования, подобно программе выбора метода решения уравнений.

2. Вычислите по формуле Симпсона следующие интегралы:

1) полный эллиптический интеграл 2-го рода  


2)  
       3)     


3.6. Вычисление  интегралов  методом  Монте-Карло

Вычисление интегралов методом Монте-Карло часто применяется для двойных, тройных, вообще, кратных интегралов. Идея метода состоит в следующем.

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



Тогда, значение интеграла приблизительно равно
 где D - многомерный объем области интегрирования.

Применим этот метод для простейшего интеграла на промежутке [a, b], т.е. необходимо вычислить интеграл:



В этом случае в качестве объема области интегрирования D выступает длина отрезка [a, b], которая равна: D = b - a.

Пусть xi (i = 1, 2, ..., n) - случайные точки из промежутка [a, b], тогда значение функции f(x) в некоторой "средней" точке будет:



а значение интеграла станет равно



Для получение точек xi можно использовать уже известный способ нахождения случайных точек с помощью функции random,

x := random*(b - a) + a

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

{ Функция вычисления интеграла методом Монте-Карло }

   Function I(n : longint; a, b : real) : real;

      var

        x, f : real;

        k    : longint;

      begin

        randomize;

        f := 0;

        for k := 1 to n do


Содержание  Назад  Вперед