Введение
Для вычисления функций используются степенные, рациональные и другие разложения, а также дифференциальные уравнения [1, 2].
Многие методы решения дифференциальных уравнений переводятся на язык клеточных автоматов, где допускают дальнейшее развитие, приобретают наглядную форму, удобную для вычислений и программирования.
В статье показано создание клеточных автоматов для приближенного вычисления некоторых функций. На основе этих клеточных автоматов можно создать программы для приближенного вычисления соответствующих функций. Делается сравнение клеточных автоматов по точности вычисления.
Клеточные автоматы изучаются и используются в математике, теории вычислимости, физике, теоретической биологии, микромеханике. Применение клеточных автоматов для приближенного вычисления функций в литературе не обнаружено.
Клеточные автоматы для приближенного вычисления y(x)=lnx
Составим из первой и второй производных функции y(x)=lnx обыкновенное дифференциальное уравнение (1).
(1)
Чтобы найти решение уравнения (1), удовлетворяющее условиию y(x0)=lnx0, делим интервал (x0, xm] на m промежутков длины ∆x=(xm–x0)/m и, заменяя y'(x)≈∆y/∆x, y x)≈∆2y/∆x2, получаем разностное уравнение (2)
(yk+2−2yk+1+yk)/∆x2=−((yk+1−yk)/∆x)2
(k=0,1,…,m−2; ∆x=(xm–x0)/m) (2)
с дополнительными условиями y0=lnx0, y1=ln(x0+∆x). Равенство (2) эквивалентно (3), которое формально совпадает с определением клеточного автомата.
yk+2=2yk+1−yk−(yk+1−yk)2 (3)
Для решения уравнения (1) можно получить другое разностное уравнение (4), если ∆y заменить на yk−yk−1
(yk+2−2yk+1+yk)/∆x2=−((yk−yk−1)/∆x)2
(k=1,2,…,m−2; ∆x=(xm–x0)/m) (4)
с дополнительными условиями y0=lnx0, y1=ln(x0+∆x), y2=ln(x0+2∆x). Равенство (4) эквивалентно (5), которое формально совпадает с определением клеточного автомата.
yk+2=2yk+1−yk−(yk−yk−1)2 (5)
Составим из первой и третьей производных функции y(x)=lnx обыкновенное дифференциальное уравнение (6).
Y’’’(x)=2/x3 ; y’’’=2y’3 (6)
Чтобы найти решение уравнения (6), удовлетворяющее условию y(x0)=lnx0, делим интервал (x0, xm] на m промежутков длины ∆x=(xm–x0)/m и, заменяя y’(x)≈∆y/∆x, y’’’(x)≈∆3y/∆x3, получаем разностное уравнение (7)
(yk+3−3yk+2+3yk+1−yk)/∆x3=2((yk+1−yk)/∆x)3
(k=0,1,…,m−3; ∆x=(xm–x0)/m)(7)
с дополнительными условиями y0=lnx0, y1=ln(x0+∆x), y2=ln(x0+2∆x). Равенство (7) эквивалентно (8), которое формально совпадает с определением клеточного автомата.
yk+3=3yk+2−3yk+1+yk+2(yk+1−yk)3 (8)
В табл. 1 приведены отличия между y(x)=lnx и клеточными автоматами (3), (5), (8) при разных значениях m, x0=1, xm=2.
Таблица 1
Отличия между y(x)=lnx и клеточными автоматами (3), (5), (8) при разных значениях m, x0=1, xm=2
m |
клеточный автомат (3) |
клеточный автомат (5) |
клеточный автомат (8) |
10 |
1.4028*10-2 |
3.7446*10-2 |
3.3367*10-2 |
102 |
1.5205*10-3 |
4.5129*10-3 |
5.6231*10-3 |
103 |
1.5329*10-4 |
4.5937*10-4 |
5.9244*10-4 |
104 |
1.5341*10-5 |
4.6019*10-5 |
5.953*10-5 |
105 |
1.5342*10-6 |
4.6025*10-6 |
3.8345*10-5 |
Наименьшие отличия у клеточного автомата (3). Сдвиг по ∆y дал клеточный автомат (4), у которого отличия увеличились. Использование третьей производной функции дало клеточный автомат (8), у которого наибольшие отличия. Увеличение m уменьшает отличие.
Клеточные автоматы для приближенного вычисления y(x)=sinx. Составим из функции y(x)=sinx и ее производной обыкновенное дифференциальное уравнение (9).
y’(x)=cosx=(1−sin2x)1/2 ; y’=(1−y2)1/2 (9)
Чтобы найти решение уравнения (4), удовлетворяющее условию y(x0)=sinx0, делим интервал (x0, xm] на m промежутков длины ∆x=(xm–x0)/m и, заменяя y’(x)≈∆y/∆x, получаем разностное уравнение (10)
(yk+1−yk)/∆x=(1−yk2)1/2
(k=0,1,…,m−1; ∆x=(xm–x0)/m) (10)
с дополнительным условием y0=sinx0. Равенство (10) эквивалентно (11), которое формально совпадает с определением клеточного автомата.
yk+1=yk+∆x(1−yk2)1/2 (11)
Для решения уравнения (9) можно получить другое разностное уравнение (12), если y заменить на yk−1
(yk+1−yk)/∆x=(1−yk−12)1/2
(k=1,2,…,m−1; ∆x=(xm–x0)/m) (12)
с дополнительными условиями y0=sinx0, y1=sin(x0+∆x). Равенство (12) эквивалентно (13), которое формально совпадает с определением клеточного автомата.
yk+1=yk+∆x(1−yk−12)1/2 (13)
Составим из функции y(x)=sinx и ее второй производной обыкновенное дифференциальное уравнение (14).
y’’(x)=−sinx ; y’’=−y (14)
Чтобы найти решение уравнения (14), удовлетворяющее условию y(x0)=sinx0, делим интервал (x0, xm] на m промежутков длины ∆x=(xm–x0)/m и, заменяя y’’(x)≈∆2y/∆x2, получаем разностное уравнение (15)
(yk+2−2yk+1+yk)/∆x2=−yk
(k=0,1,…,m−2; ∆x=(xm–x0)/m) (15)
с дополнительными условиями y0=sinx0, y1=sin(x0+∆x), y2=sin(x0+2∆x). Равенство (15) эквивалентно (16), которое формально совпадает с определением клеточного автомата.
yk+2=2yk+1−yk(1+∆x2) (16)
В таблице 2 приведены отличия между y(x)=sinx и клеточными автоматами (11), (13), (16) при разных значениях m, x0=0, xm=1.
Таблица 2
Отличия между y(x)=sinx и клеточными автоматами (11), (13), (16) при разных значениях m, x0=0, xm=1
m |
клеточный автомат (11) |
клеточный автомат (13) |
клеточный автомат (16) |
10 |
1.7085*10-2 |
5.1126*10-2 |
3.9567*10-2 |
102 |
1.6676*10-3 |
5*10-3 |
4.1855*10-3 |
103 |
1.6636*10-4 |
4.9916*10-4 |
4.2052*10-4 |
104 |
1.6632*10-5 |
4.9896*10-5 |
4.2071*10-5 |
105 |
1.6632*10-6 |
4.9894*10-6 |
4.2074*10-6 |
Наименьшие отличия у клеточного автомата (11). Сдвиг по ∆y дал клеточный автомат (13), у которого отличия увеличились. Использование второй производной функции дало клеточный автомат (16), у которого наибольшие отличия. Увеличение m уменьшает отличие.
Клеточные автоматы для приближенного вычисления y(x)=tgx. Составим из функции y(x)=tgx и ее производной обыкновенное дифференциальное уравнение (17).
y’(x)=1/cos2x=tg2x+1 ; y’=y2+1 (17)
Чтобы найти решение уравнения (17), удовлетворяющее условию y(x0)=tgx0, делим интервал (x0, xm] на m промежутков длины ∆x=(xm–x0)/m и, заменяя y’(x)≈∆y/∆x, получаем разностное уравнение (18)
(yk+1−yk)/∆x=yk2+1
(k=0,1,…,m−1; ∆x=(xm–x0)/m) (18)
с дополнительным условием y0=tgx0. Равенство (18) эквивалентно (19), которое формально совпадает с определением клеточного автомата.
yk+1=yk+∆x(yk2+1) (19)
Для решения уравнения (17) можно получить другое разностное уравнение (20), если y заменить на yk−1
(yk+1−yk)/∆x=yk−12+1
(k=1,2,…,m−1; ∆x=(xm–x0)/m) (20)
с дополнительными условиями y0=tgx0, y1=tg(x0+∆x). Равенство (20) эквивалентно (21), которое формально совпадает с определением клеточного автомата.
yk+1=yk+∆x(yk−12+1) (21)
Составим из функции y(x)=tgx и ее второй производной обыкновенное дифференциальное уравнение (22).
y’’(x)=2tgxsec2x=2(tg3x+tgx) ; y’’=2(y3+y) (22)
Чтобы найти решение уравнения (22), удовлетворяющее условию y(x0)=tgx0, делим интервал (x0, xm] на m промежутков длины ∆x=(xm–x0)/m и, заменяя y’’(x)≈∆2y/∆x2, получаем разностное уравнение (23)
(yk+2−2yk+1+yk)/∆x2=2(yk3+yk)
(k=0,1,…,m−2; ∆x=(xm–x0)/m) (23)
с дополнительными условиями y0=tgx0, y1=tg(x0+∆x). Равенство (23) эквивалентно (24), которое формально совпадает с определением клеточного автомата.
yk+2=2yk+1−yk+2∆x2(yk3+yk) (24)
В табл. 3 приведены отличия между y(x)=tgx и клеточными автоматами (19), (21), (24) при разных значениях m, x0=0, xm=1.
Наименьшие отличия у клеточного автомата (19). Использование второй производной функции дало клеточный автомат (24), у которого отличия увеличились. Сдвиг по ∆y дал клеточный автомат (21), у которого наибольшие отличия. Увеличение m уменьшает отличие.
Клеточные автоматы для приближенного вычисления y(x)=sin(lnx). Составим из первой и второй производных функции y(x)=sin(lnx) обыкновенное дифференциальное уравнение (25).
y’(x)=cos(lnx)/x ; y’’(x)=−(sin(lnx)+cos(lnx))/x2 ;
y’’=− y’2 (y/(1−y2)+1/(1−y2)0.5) (25)
Чтобы найти решение уравнения (25), удовлетворяющее условиию y(x0)=sin(lnx0), делим интервал (x0, xm] на m промежутков длины ∆x=(xm–x0)/m и, заменяя y’(x)≈∆y/∆x, y’’(x)≈∆2y/∆x2, получаем разностное уравнение (26)
(yk+2−2yk+1+yk)/∆x2=−((yk+1−yk)/∆x)2
(yk/(1−yk2)+1/(1−yk2)0.5)
(k=0,1,…,m−2; ∆x=(xm–x0)/m) (26)
с дополнительными условиями y0=sin(lnx0), y1=sin(ln(x0+∆x)). Равенство (26) эквивалентно (27), которое формально совпадает с определением клеточного автомата.
yk+2=2yk+1−yk−(yk+1−yk)2(yk/(1−yk2)
+1/(1−yk2)0.5) (27)
Для решения уравнения (25) можно получить другое разностное уравнение (28), если ∆y заменить на yk−yk−1
(yk+2−2yk+1+yk)/∆x2=−((yk−yk−1)/∆x)2
(yk/(1−yk2)+1/(1−yk2)0.5)
(k=1,2,…,m−2; ∆x=(xm–x0)/m) (28)
с дополнительными условиями y0=sin(lnx0), y1=sin(ln(x0+∆x)), y2=sin(ln(x0+2∆x)). Равенство (28) эквивалентно (29), которое формально совпадает с определением клеточного автомата.
yk+2=2yk+1−yk−(yk−yk−1)2(yk/(1−yk2)
+1/(1−yk2)0.5) (29)
Таблица 3
Отличия между y(x)=tgx и клеточными автоматами (19), (21), (24) при разных значениях m, x0=0, xm=1
m |
клеточный автомат (19) |
клеточный автомат (21) |
клеточный автомат (24) |
10 |
1.6*10-1 |
3.2244*10-1 |
2.2753*10-1 |
102 |
2.043*10-2 |
5.7268*10-2 |
3.1317*10-2 |
103 |
2.102*10-3 |
6.2598*10-3 |
3.2572*10-3 |
104 |
2.1082*10-4 |
6.3198*10-4 |
3.2704*10-4 |
105 |
2.1088*10-5 |
6.3258*10-5 |
3.2717*10-5 |
Составим из первой и третьей производных функции y(x)=sin(lnx) обыкновенное дифференциальное уравнение (30).
y’’’(x)=(3sin(lnx)+cos(lnx))/x3 ;
y’’’=3yy’3/(1−y2)1.5+ y’3/(1−y2) (30)
Чтобы найти решение уравнения (70), удовлетворяющее условию y(x0)=sin(lnx0), делим интервал (x0, xm] на m промежутков длины ∆x=(xm–x0)/m и, заменяя y’(x)≈∆y/∆x, y’’’(x)≈∆3y/∆x3, получаем разностное уравнение (31)
(yk+3−3yk+2+3yk+1−yk)/∆x3=
((yk+1−yk)/∆x)3(3yk/(1−yk2)1.5+1/(1−yk2))
(k=0,1,…,m−3; ∆x=(xm–x0)/m) (31)
с дополнительными условиями y0=sin(lnx0), y1=sin(ln(x0+∆x)), y2=sin(ln(x0+2∆x)). Равенство (31) эквивалентно (32), которое формально совпадает с определением клеточного автомата.
yk+3=3yk+2−3yk+1+yk+(yk+1−yk)3
(3yk/(1−yk2)1.5+1/(1−yk2)) (32)
В табл. 4 приведены отличия между y(x)=sin(lnx) и клеточными автоматами (27), (29), (32) при разных значениях m, x0=1, xm=2.
Таблица 4
Отличия между y(x)=sin(lnx) и клеточными автоматами (27), (29), (32) при разных значениях m, x0=1, xm=2
m |
клеточный автомат (27) |
клеточный автомат (29) |
клеточный автомат (32) |
10 |
1.6*10-3 |
3.6*10-2 |
1.5*10-3 |
102 |
1.7*10-4 |
3.7*10-3 |
4*10-4 |
103 |
1.7*10-5 |
3.8*10-4 |
4.3*10-5 |
104 |
1.7*10-6 |
3.8*10-5 |
4.4*10-6 |
105 |
1.7*10-7 |
3.8*10-6 |
1.3*10-4 |
Наименьшие отличия у клеточного автомата (27). Сдвиг по ∆y дал клеточный автомат (29), у которого отличия увеличились. Использование третьей производной функции дало клеточный автомат (32), у которого отличия больше чем у клеточного автомата (27), за исключением m=10. Увеличение m уменьшает отличие, за исключением клеточного автомата (32) при m=105.
Заключение
Для приближенного вычисления функции могут быть созданы различные клеточные автоматы. Источниками клеточных автоматов могут быть дифференциальные и разностные уравнения. Если на основе клеточного автомата требуется создать программу для приближенного вычисления функции, то рекомендуется использовать дифференциальное уравнение с минимальным порядком. Для повышения точности вычисления рекомендуется уменьшать шаг вычисления.