Численное интегрирование: различия между версиями

[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
м многоточие
→‎Примеры реализации: Добавил поддержку Питона 3, исправил опечатки, сделал нормальный порядок вывода границ промежутка.
Метка: редактор вики-текста 2017
Строка 148:
 
== Примеры реализации ==
Ниже приведена реализация (Python 2.7 и 3.6), метода Симпсонасредних прямоугольников, метода средних прямоугольниковтрапеций, метода Монте-КарлоСимпсона и метода средних трапецийМонте-Карло.
<source lang="python">
from matplotlib.mlab import mlabfrange
import math, random
 
Строка 160:
integral = 0.0
step = (max_lim - mim_lim) / n
for x in mlab.frange(mim_lim, max_lim-step, step):
integral += step * func(x + step / 2)
return integral
Строка 169:
n *= 2
 
a = str(math.fabs(integrate(func, mim_lim, max_lim, n))),
print 'Rect'
b = str(math.fabs(integrate(func, mim_lim, max_lim, n)) + d)])
print ' '.join([
if a > '\t',b:
str(n)a, b = b, a
print('Rectangles:')
str(math.fabs(integrate(func, mim_lim, max_lim, n))),
print('\t%s\t%s\t%s' % (n, a, b))
str(math.fabs(integrate(func, mim_lim, max_lim, n)) + d)])
 
def trapezium_method(func, mim_lim, max_lim, delta):
Строка 180:
integral = 0.0
step = (max_lim - mim_lim) / n
for x in mlab.frange(mim_lim, max_lim-step, step):
integral += step*(func(x) + func(x + step)) / 2
return integral
Строка 189:
n *= 2
 
a = str(math.fabs(integrate(func, mim_lim, max_lim, n))),
print 'Rect'
b = str(math.fabs(integrate(func, mim_lim, max_lim, n)) + d)])
print ' '.join([
if a > '\t',b:
str(n)a, b = b, a
print ('RectTrapezium:')
str(math.fabs(integrate(func, mim_lim, max_lim, n))),
print('\t%s\t%s\t%s' % (n, a, b))
str(math.fabs(integrate(func, mim_lim, max_lim, n)) + d)])
 
def simpson_method(func, mim_lim, max_lim, delta):
Строка 200:
integral = 0.0
step = (max_lim - mim_lim) / n
for x in mlab.frange(mim_lim + step / 2, max_lim - step / 2, step):
integral += step / 6 * (func(x - step / 2) + 4 * func(x) + func(x + step / 2))
return integral
Строка 209:
n *= 2
 
a = str(math.fabs(integrate(func, mim_lim, max_lim, n))),
print 'Rect'
b = str(math.fabs(integrate(func, mim_lim, max_lim, n)) + d )])
print ' '.join([
if a > '\t',b:
str(n)a, b = b, a
print ('RectSimpson:')
str(math.fabs(integrate(func, mim_lim, max_lim, n))),
print('\t%s\t%s\t%s' % (n, a, b))
str(math.fabs(integrate(func, mim_lim, max_lim, n)) +d )])
 
def monte_karlo_method(func, n):
Строка 222:
if y < func(x): in_d += 1
 
print ('MkM-K:')
print ('\t%s\t%s' +% str(n), + ' ' + str(math.fabs(in_d/n * 3)))
 
method_of_rectangles(lambda x: math.e ** x, 0.0, 1.0, 0.001)
Строка 229:
simpson_method(lambda x: math.e ** x, 0.0, 1.0, 0.001)
monte_karlo_method(lambda x: math.e ** x, 100)
print('True value:\n\t%s' % get_i())
</source>
 
 
== Литература ==