Математические модели в транспортных системах-1
.pdfРассмотренные методы являются по сравнению с другими более простыми, но менее эффективными.
В качестве примера более эффективного (точного) метода рассмотрим метод НьютонаКотеса. Этот метод базируется на применении к каждому i-му из m отрезков разбиения следующей формулы:
S.i = h/840( ]rd(j) f(x(j))),
J=0
где x(j) = x(i) + j h / 6 ; x(i)= a + (i -1) h ;
d(0)= d(6)= 41;d(1)= d(5)= 216;d(2)= d(4)= 27;d(3)=272. Значение интеграла S находится суммированием значений S. :
m
S = E Si .
i=1
Вариант программной реализации алгоритма последнего метода приводится ниже. 10 REM МЕТОД НЬЮТОНА-КОТЕСА
15 CLS |
|
|
20 INPUT"a";a |
|
|
30 |
INPUT"b";b |
|
40 |
INPUT"m";m |
|
45 |
DIM d(6) |
|
47 |
d(0)=41:d(1)=216:d(2)=27:d(3)=272:d(4)=27:d(5)=216:d(6)=82 |
|
50 |
h=(b-a)/m:E=h/6 |
|
70 FOR I=1 TO m |
|
|
72 |
XT=a+(I-1)*h |
|
75 |
FOR J=0 TO 6 |
|
80 X=XT+J*E:GOSUB 200 |
||
90 |
SI=SI+d(J)*F |
|
100 NEXT J |
|
|
110 NEXT I |
|
|
130 SI=SI*H/840 |
|
|
140 PRINT"SI="SI:GOTO 300 |
||
200 F= |
:RETURN |
|
300 END
Ошибка вычисления значения интеграла зависит от величины h и производной k-го порядка от интегрируемой функции в точке, где она максимальна (для первых трех методов k=2 и для Ньютона-Котеса k=8).
2.1.4. Вычисление специальных функций
Специальные функции - это такие, которые нельзя выразить аналитически через элементарные функции. Примерами таких функций являются гамма-функция, интегральная функция нормального закона распределения и др.
Значения специальных функций вычисляются в зависимости от их вида одним из следующих методов:
численным интегрированием; по реккурентным соотношениям; разложением в ряды;
21
на основе аппроксимаций.
Гамма-функция точно определяется по формуле
от
r(x) = |
e • t tx-1 dt, х>0. |
|
t = 0 |
|
|
Для гамма-функции справедливы соотношения |
|
|
Г(х+1)=х Г(х); |
(*) |
|
Г(1)= 1; |
|
|
Г(0,5)= |
л/Л; |
|
r(n+1)= n!, n= 0,1,2,... ; |
|
|
г(х) Г(-х) = -п /(х sin п x). |
(**) |
|
Рассчитывают с применением формулы Стирлинга или на основе аппроксимации.
Для x > -18 с погрешностью порядка 1Е-04 гамма-функция может быть вычислена на основе 20-кратного преобразования следующим образом:
1) z=21 + x; |
|
2) по формуле Стирлинга r(z) ^ л/2 п /z e-z zz (1 ^ |
; |
|
12z |
3) последовательное уменьшение значения z на |
единицу до значения х по формуле |
r(z) = r(z+1)/ z . |
|
Преобразование обеспечивает вычисления для отрицательн^хх чисел х и с высокой точностью при их мал^1х значениях.
Пример программной реализации метода:
cls: input "Введите x= ";x:z=x+21: b=x g=log(sqr(2*3.141592/z))-z+z*log(z)+log(1+1/12/z) for i = 1 to 20
b=b*(z-i) next i g=exp(g)/b
print "r("using"####.###";x;:print ")= "using"^.######^^^^";g end
Гамма-функция на основе коррекции формулы Стирлинга вычисляется по формуле
|
r(x) = л/2 п /x e"x xx |
H(x) , |
где |
x > 1.0; |
|
|
H(x) = 1 + ]r1/(ai |
x1) , |
|
i=1 |
|
где |
a1= 12; a2= 288; a3= -139/51840; a4= 571/2488320. |
|
При 0<x<1 значение Г(x) с целью повышения точности находится с использованием формулы (*)
Г(x) = Г(x+1)/x.
22
Если x<0, то гамма-функция вычисляется на основе формулы (**) как
Г(x) =-п/( z Г(z)sin nz) ,
где z=abs(x).
Ниже приведен пример программы на основе коррекции формулы Стирлинга:
cls:input "x";x
if x>1 then z=x:gosub pp:goto kon
if x>0 then z=x+1:gosub pp:g3=g3/x:goto kon if x<=-1 then z=abs(x):gosub pp:goto 10
if x<0 then z=abs(x)+1:gosub pp:z=abs(x):g3=g3/007A
10 g3=-3.141592/z/sin(3.141592*z)/g3 goto kon
pp: h=1+1/12/z+1/(288*z^2)-139/(51840*z^3)+571/(2488320*z^4) g3= sqr(2*3.141592/z)*exp(-z)*z^z*h
return kon:
print "Г("using"####.###";x;:print ")= "using"^.######^^^^";g3 end
На основе аппроксимации определение Г(z+1) для значений z от 0 до 1 может производиться с использованием степенного полинома
8
r ( z + 1) = 1 + E b. zi10
i=1
где b1= -57719165, b2= 98820589, b3= -89705694, b4= 91820688, b5= -75670408, b6= 48219934, b7= -19352782, b8=3586835.
Для расчета гамма-функции по аппроксимации необходимо вычислить гамма-функцию от абсолютной величины дробной части заданного аргумента и затем на основе использования выражения (*) и, при необходимости, выражения (**) найти значение гамма-функции исходного числа.
Для |
вычислений интегральной функции нормального закона |
распределения |
(рисунок 2.4) применяются численное интегрирование или аппроксимации. |
|
|
Для |
вычисления F(x) = у с точностью 0,0001 на основе численного |
интегрирования |
интервал интегрирования необходимо принимать от а-3,9а до х, |
|
|
где x - значение аргумента; |
|
|
a и а - параметры функций нормального закона распределения: a = xм ; а = s, xм -оценка математического ожидания случайной величины;
s - оценка среднеквадратического отклонения случайной величины.
Вычисление значения интегральной функции нормального распределения F(x) = у на основе аппроксимации возможно по следующему алгоритму:
1) z = (х- a)/ а ,
2)P(abs(z)) = 1 - ( 1 + EEci z1 )-1 6 /2, i=1
23
Программа сортировки по методу Шелла
10 'СОРТИРОВКА SHELL
20 DEFINT I-M: INPUT "M";M:DIM A(M)
25 FOR I=1 TO M:READ A(I):NEXT I
30 D=1
35 D=D*2
40 IF D<=M THEN 35
45 D=INT((D-1)/2)
50 IF D=0 THEN 90
55 K=M-D
60 FOR I=1 TO K
65 J=I
70 L=J+D
75 IF A(L)>=A(J) THEN 88
80 X=A(J):A(J)=A(L):A(L)=X:J=J-D
85 IF J>0 THEN 70
88 NEXT I
89 GOTO 45
90 FOR I=1 TO M:PRINT A(I):NEXT I
95 DATA 44,12,15,4,8,79,11,14,78,22,33,2,1,4,5,7,8,6,1,4,5,6
100END
2.2.Стохастические модели
2.2.1. Исследование распределения случайных величин
Случайная (стохастическая) величина может быть одной двух видов - дискретная или непрерывная.
Распределение случайных величин подчиняется определенным закономерностям, называемым законами распределения. Примерами законов распределения являются:
для дискретных - биномиальный, отрицательный биномиальный, Пуассона, гипергеометрический, Паскаля и его частный случай геометрический (Фарри), дискретный равномерный;
для непрерывных - нормальный, логарифмически нормальный, экспоненциальный (показательный), равномерный, Эрланга, Релея, Вейбулла.
Для практических целей находят применение кроме базовых законов распределения их усеченные и сдвинутые (со смещением) варианты.
Усеченные варианты законов распределения ограничивают интервал варьирования случайной величины слева или справа или слева и справа. Если функция распределения базового (неусеченного) закона имеет вид
x
F(x) = f(x) dx,
то функции усеченного варианта этого же закона представляют следующие выражения
f у ( x » = t T F ^ T F : f ( x » ;
|
|
1 |
f |
F( x ) - F |
|
|
Р у ( x ) |
= - — |
— |
f ( x ) |
d x = , ^ |
J |
п р и x н < x < x в , |
у |
1 - F н |
- F вxX„ |
1 - F н |
- F в |
|
|
|
F |
н = |
f(x) |
dx ; Fв = |
f(x) |
dx , |
|
|
|
-ад |
|
|
|
28
