Суббота, 04.04.2026, 21:47Приветствуем вас Гость | RSS
Решение задач в среде R
Главная | интеграл | Регистрация | Вход
» Меню сайта

» R практикум

» R кодинг

» Rmatem

» Опрос
Сколько вам лет?
Всего ответов: 9

» Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Вычисление определенного интеграла в R

integrate() функция вычисляет определенный интеграл. 
синтаксис: integrate(f, lower, upper)

Параметры:

f:  интегрируемая функция

lower: нижний предел

upper: верхний предел

# Create function 
f<-function(x) sin(x)
 # Integrate from 0 to 1 
integrate(f, 0, pi) 

> # Create function
> f<-function(x) sin(x)
> # Integrate from 0 to 1
> integrate(f, 0, pi)
2 with absolute error < 2.2e-14

# Create function
f<-function(x) 1/(1+x^2)
# Integrate from 0 to 1
integrate(f, 0, 1)
1-(0.78539816339744839002*4-pi)

> # Create function
> f<-function(x) 1/(1+x^2)
> # Integrate from 0 to 1
> integrate(f, 0, 1)
0.78539816339744839002 with absolute error < 8.7e-15
> 1-(0.78539816339744839002*4-pi)
[1] 0.99999999999999955591

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

#install.packages("fda.usc")
library(fda.usc)
options(digits = 20)
x<-seq(0,pi,length = 20)
fx<-fdata(sin(x),x)
int.simpson(fx,method ="ESR" )

# Posible values for method are:
# "TRAPZ": Trapezoid rule integration.
# "CSR": Composite Simpson's rule integration.
# "ESR": Extended Simpson's rule integration.
# If method=NULL (default), the value of par.fda.usc$int.method is used.
# "TRAPZ": Интеграция правил трапеции.
# "CSR": Комплексная интеграция правил Симпсона.
# "ESR": Расширенная интеграция правил Симпсона.

x = seq(0, 1, length = 10000)
fx = fdata(1/(1+x^2),x)
i = int.simpson(fx,method ="ESR" )
1 - abs(i*4-pi)
i

> x = seq(0, 1, length = 10000)
> fx = fdata(1/(1+x^2),x)
> i = int.simpson(fx,method ="ESR" )
> 1 - abs(i*4-pi)
[1] 1
> i
[1] 0.785398163397448279

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

# Вычисление интеграла 
# методом парабол (Симпсона)
options(digits=18) # Установка максимального количества используемых цифр
fx = function(x) 1/(1+x^2)
x1 = 0
x2 = 1
n = 100000
#
dx = integer = (x2 - x1)/n
for (i in  1:n) {
  integer = integer + (dx/6)*(fx(x1) + 4*fx((2*x1+dx)/2)+
                                fx(x1+dx))
  x1 = x1 + dx
}
integer

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

# Вычисление интеграла 
# методом парабол (Симпсона) по точной формуле

options(digits=20)

fx = function(x) 1/(1+x^2)
a = 0
b = 1
n = 100000
i = 0
stepx = (b-a)/(n*3)
x = seq(a, b, (b-a)/n)
y = fx(x)
i = i + y[1] + y[length(y)]
for (k in 2:(length(y)-1)) {
  if (k%%2==0) i = i + y[k]*4
  if (k%%2!=0) i = i + y[k]*2
  
}
I = stepx*i
I

> I
[1] 0.7853981633974453924196
» Вход на сайт

» Поиск

» Работа с файлами

» Вся графика

» Гистогра́мма

» Теория вероятности

» Сравнение групп

» Дисперс анализ

» Блог

» Календарь
«  Апрель 2026  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
27282930

» Архив записей


Copyright MyCorp © 2026
uCoz