Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект бейс.doc
Скачиваний:
6
Добавлен:
12.11.2019
Размер:
1.33 Mб
Скачать

Програма 16

10 PRINT ‘Пошук максимуму F(x) методом дихотомії’

20 INPUT ‘Введення границі інтервалу пошуку A,B’A,B

25 INPUT ‘Задайте похибку результату E=’E

30 IF ABS(B-A)<2*E THEN 100

40 LET C=(A+B-E)/2:LET D=(A+B+E)/2

50 LET X=C:GOSUB 120:LET K=F

60 LET X=D:GOSUB 120:LET L=F

70 IF K>L THEN 90

80 LET A=C: GOTO 30

90 LET B=D: GOTO 30

100 LET X=(A+B)/2:GOSUB 120

110 PRINT ‘XM=’X:PRINT’F(XM)=’F:STOP

120 LET F=((.1*X-2)*X+10)*X

130 RETURN: END

Програма 17

10 PRINT ‘Пошук максимуму F(x) методом золотого розрізу’

20 INPUT ‘Введіть границі змінної X A,B ‘A,B

25 INPUT ‘Задайте похибку результату E=’ E

30 LET K=(SQR(5)-1)/2

40 GOSUB 140

50 GOSUB 160

60 IF ABS(D-C)<E THEN 120

70 IF L>M THEN 100

80 LET A=C:LET C=D:LET L=M

90 GOSUB 160:GOTO 60

100 LET B=D:LET D=C:LET M=L

110 GOSUB 140:GOTO 60

120 LET X=(C+D)/2:PRINT’XM=’X

130 GOSUB 180:PRINT’F(XM)=’F:STOP

140 LET C=A+(1-K)*(B-A)

150 LET X=C:GOSUB 180:LET L=F:RETURN

160 LET D=A+K*(B-A)

170 LET X=D:GOSUB 180:LET M=F:RETURN

180 LET F=((.1*X-2)*X+10)*X

190 RETURN:END

21.6.Обчислення означених інтегралів.

Означений інтеграл:

l= (11)

з межами інтегрування a та b можна трактувати як площину фігури, яка обмежена ординатами a та b, віссю абсцис х та графіком підінтегральної функції f(x).

Звичайний означений інтеграл, у якого відома його першообразна F(x), обчислюється

За формулою Ньютона – Лейбніца:

I=F(b)-F(a).

Тому достатньо обчислити значення функції F(x).

Численне інтегрування застосовується, якщо знайти F(x) складно чи неможливо. Воно заключається в інтерполяції f(x) на відрізку a, b відповідним поліномом, для якого певний інтеграл обчислюється за формулою численного інтегрування. Зазвичай відрізок a, b розбивається на m частин, до кожної з яких застосовується відповідна проста формула. Таким чином виникають складні формули численного інтегрування.

Метод прямокутників – найпростіший прийом численного інтегрування, при якому функція y=f(x) замінюється інтерполяційним многочленом нульового порядку. Для збільшення точності інтегрування відрізок a, b розбивається на m частин і формула прямокутника застосовується до кожного відрізку. Наведемо формулу прямокутників:

I 

Внаслідок низької точності цей метод майже не застосовується.

Модифіційний метод прямокутників базується на представленні f(x) ординатами, які зміщенні на величину 0,5h, де h=(b-a)/m:

I h f(xi+0,5h)+ f() – значення другої функції f(x) в точці x=, де вона є максимальною.

Метод трапецій заключається в лінійній апрксимації f(x) на відрізку a, b. Для зменшення похибки a, b розбивається на m частин довжини h=(b-a)/m (при методі прямокутників f(xi)=const=yi на цьому відрізку).

З врахуванням сумування ординат всередині відрізка a, b формула методу трапецій має вигляд:

I f(x)dx f(a)+4f(a+h)+2f(a+2h)+4f(a+3h)+…+4f(b-h)+f(b)- f().

Вираження для остаточного члена показує, що формула Сімпсона є точною, навіть якщо f(x) –многочлен третього ступня. Ця особливість формули Сімпсона пояснює її переважаюче застосування – у деяких ЄВМ обчислення по ній реалізується мікропрограмно.

Програма 18.

П р и к л а д. Обчислити інтеграл

I= dx=1,398717474

при а=0 та b=1. Обчислення підінтегральної функції оформляється підпрограмою – див. Рядок 110. Для m=M=8 дістанемо І=1,39871724

Програма 18.

10 PRINT ‘Численне інтегрування методом Сімпсона’

20 INPUT ‘Введіть нижню границю інтегрування A=’A

25 INPUT ‘Введіть верхню границю інтегрування В=’B

30 INPUT ‘Введіть число інтервалів інтегрування M=’M

40 LET H=(B-A)/M/2 : LET X=A

50 GOSUB 110 : LET I=F:LET N=0

60 LET X=X+H :GOSUB 110 : LET I=I+4*F

70 LET N=N+2 : IF N=2*M THEN 90

80 LET X=X+H : GOSUB 110 : LET I=I+2*F : GOTO 60

90 LET X=B : GOSUB 110 : LET I=(I+F)*H/3

95 PRINT ‘Для A=’A’ B=’B M=’M: PRINT’’

100 PRINT ‘Значення інтегралу I=’I :GOTO 30

110 LET F=SQR(2*X+1) : RETURN : END

21.7. Розв’язання систем диференціальних рівнянь.

Завдання Коші заключається в розв’язанні систем звичайних диференційних рівнянь першого порядку, які представлені у вигляді:

=F1(x, y1, …, yj, …, yn),

=Fi (x, y1, …, yj, …, yn), (12)

=FN (x,y1, …, yj, …, yn),

де j=IN – номер кожної залежної змінної уj, х – незалежна змінна. Якщо завдання Коші розв’язується для аналізу поведінки системи чи об’єкту в часі, то х є часом (x=t). Розв’язання системи при заданих початкових умовах x=x0, y1(x0)=y10, y2(x0)=y20,…, yN(x0)=yN0 зводиться до пошуку залежностей (інтегральних кривих) y1(x), y2(x), …, yj(x), …, yN(x), які проходять через точки, задані початковими умовами (x0, y10), (x0, y20), …, (x0, yj0), …, (x0, yN0). Завдання Коші зводиться до інтегрування диференціальних рівнянь. Порядок методу численного інтегрування при цьому оприділяє і порядок методу розв’язання (12).

Узагальнена форма запису кожного з рівнянь системи може бути представлена в загальному вигляді:

=Fj(x, Yj),

де Yj в правій частині рівняння – вектори змінних у1, у2, ..., уj, …, yN, a Fj – права частина кожного з рівнянь. В загальному, одне диференційне рівняння (y=Yj=Y1, FJ=F=F1) записується у вигляді

=F1(x,y) (13)

Диференційне рівняння вищого порядку

Y(n)=F(x, y, y1, y11, …, y(n-1), (14)

де (n) – порядок рівняння може бути зведений до системи вигляду (12) чи (13) за допомогою слідуючих перетворень:

=y1,

=y2,

…………………..

=yn-1,

=F(x, y, y1, …., yn-1 (15).

Розв’язання (12) зводиться до рішення системи диференційних рівнянь першого порядку (15).

Метод ЄйлераКоші – найпростіший метод першого порядку для чисельного інтегрування диференційних рівнянь. Він реалізується слідуючою формулою:

Yj(i+1)=Yji+hFj(xi, Yji),

де h – крок інтегрування (прирощення змінної х). Цей метод має систематичне накопичення помилок.

Метод Єйлера - Коші з ітераціями заключається в обчисленні на кожному кроці початкового значення

Y(0)j(i +1)= Yji + hFj ( xi, Yji).

Далі з допомогою ітераційної формули

Y(k)j(i+1)= Yji + Fj (xi, Yji) + Fj (xi+1, Y(k-1)j(i+1)

розв’язання уточнюється. Ітерації проводять до тих пір, поки не співпаде задане число цифр результату на двох останніх кроках ітерацій. Похибка методу R (h3). Число ітерацій не повинно перевищувати 3 – 4, інакше потрібно зменшити крок h.

Модифіційний метод Єйлера другого порядку реалізується слідуючими рекурентними формулами:

Yj(i+1)= Yji + hFj (xi+ h/2, Y*j(i+1/2)),

де Y*j(i+1/2)=Yji + hFj (xi, Yji)/2. Метод дає похибку R (h3) і має менший час обчислень, бо замість декількох ітерацій відбувається обчислення тільки одного значення Y*j(i+1/2).

Метод трапецій – один із модифікацій методу Єйлера другого порядку. Він реалізується застосуванням на кожному кроці формули

Yj(i+1)= Yji + (Kj1 + Kj2),

де Kj1= hFj (xi, Yji), Kj2= hFj (xi + h, Yji + Kj1), і дає похибку R (h3). Цей метод відноситься до загальних методів Рунге – Кутта.

Метод Рунге – Кутта четвертого порядку є найбільш поширеним методом розв’язання систем (12) при кроці h = const. Його перевагою є висока точність – похибка R  (h5) – і менша схильність до виникнення нестійкості рішення. Алгоритм реалізації методу Рунге – Кутта заключається в циклічних обчисленнях Yj(i+1) на кожному і+1 кроці по слідуючих формулах:

K1j = hFj (xi, Yji); K2j = hFj (xi + , Yji + K1j );

K3j = hFj (xi + , Yji + K2j );

K4j = hFj (xi + h, Yji + K3j);

Yj(i+1)= Yji + ( K1j + 2K2j + 2K3j + K4j).

При переході від одної формули до іншої задаються або обчислюються відповідні значення х та Yj та знаходяться по програмі значення функцій Fj (x, Yj).

Розв’язання одного диференційного рівняння методом Рунге – Кута відбувається по наведеним формулам, якщо в них опустити індекс j, а з алгоритму виключити цикли. Останнє різко спрощує програму та дозволяє отримати мінімальний можливий час рахунку.

Програма 19.

10 PRINT ‘Розв’язання одного диференційного рівняння’

20 PRINT ‘ методом Рунге – Кутта’

30 INPUT ‘Задайте крок H=’H : INPUT’ Задайте початкове X0=’X

40 INPUT ‘Введіть початкове Y0=’Z : LET Y=Z

50 GOSUB 100:LET A=F*H:LET X=X+H/2:LET Y=Z+A/2

60 GOSUB 100:LET B=F*H:LET Y=Z+B/2

70 GOSUB 100:LET C=F*H:LET X=X+H/2:LET Y=Z+C

80 GOSUB 100:LET Y=Z+(A+2*(B+C)+H*F)/6:LET Z=Y

90 PRINT ‘Для X=’X:PRINT’Y=’:GOTO 50

100 LET F=-Y:RETURN:END

П р и к л а д. Для диференційного рівняння y = - y/ = - y при  = 1, h= 0,1, x0= 0 та y0= 1 будемо отримувати y (0,1)= 0,9048375, y (0,2)= 0,8187309014, y (0,3)= 0,740818422, y (0,4)= 0,6703202889, y (0,5)= 0,6065309344. Час видачі одного значення y (x) біля 1 с. Підпрограма вичислення

F= dy/dx

записується з рядка 100.

Програма 19.

10 PRINT ‘Розв’язання системи диференційних’

20 PRINT ‘Рівнянь методом Рунге – Кутта’

30 INPUT ‘Введіть число рівнянь N=’N

40 DIM Y(N), A(N), K(N), F(N), W(N)

50 INPUT ‘Задайте крок H=’H

60 INPUT ‘Задайте початкове X0=’X

70 FOR J=1 TO N:PRINT!2.0! ‘Задайте початкове Y0(‘J’)’

80 INPUT W(J):LET Y(J)=W(J):NEXT J

90 GOSUB 200:FOR J=1 TO N:LET U=H*F(J)

100 LET K(J)=U:LET Y(J)=W(J)+U/2:NEXT J

110 LET X=X+H/2:GOSUB 200:FOR J=1 TO N

120 LET U=H*F(J):LET K(J)=K(J)+2*U

130 LET Y(J)=W(J)+U/2:NEXT J

140 GOSUB 200:FOR J=1 TO N:LET U=H*F(J)

150 LET K(J)=K(J)+2*U:LET Y(J)=W(J)+U:NEXT J

160 LET X=X+H/2:PRINT!F1.9! ‘Для X=’X:GOSUB 200

170 FOR J=1 TO N:LET Y(J)=W(J)+(K(J)+H*F(J))/6

180 PRINT !2.0! ‘Y(‘J’)=’!F1.9! Y(J)

190 LET W(J)=Y(J):NEXT J:GOTO 90

200 LET F(1)=Y(2):LET F(2)=(Y(1)/X-Y(2))/X-Y(1)

210 RETURN:END

Метод РунгеКуттаМерсона з автоматичною зміною кроку забезпечує приблизну оцінку похибки на кожному кроці інтегрування. Похибка інтегрування має порядок h5 . Цей метод реалізується слідуючим алгоритмом:

  1. Задаємо число рівнянь N, похибка =E, початковий крок інтегрування h= H та початкове значення x0, y10, …, yN0.

  2. За допомогою 5 циклів з керуючою змінною J= 1, 2, …, N обчислюємо коефіцієнти:

K0j= hFj (xi; Yji);

K1j= hFj (xi + h; Yji + K0i );

K2j = hFj (xi + h; Yji + K0j + K1j );

K3j = hFj (xi + h; Yji + K0j + K2j );

K4j = hFj (xi + h; Yji + K0j - K2j + 2K3j);

  1. Знаходимо (в останньому циклі) значення

Yj(i+1) = Yji + (K0j + 4K3j + K4j)/6

та похибку

Rj(i+1) = (- 2K0j + 9K2j – 8K3j + K4j)/30.

  1. Перевіряємо виконання умов

 Rj(i+1)  E, Rj(i+1)  E/30.

Якщо перша умова не виконується, ділимо крок h на 2 та повторюємо обчислення з п.2, відновлюючи початкове значення Yji. Якщо ця умова виконується та виконується друга умова, то значеня xi+1= xi +h та Yj(i+1) виводяться на друк. Якщо друга умова не виконується, то крок h збільшується в два рази і обчислення знову повторюються з п.2.

Таким чином, Yj(n+1) виводиться на друк тільки при одночасному виконанні умов цього пункту.