Вы находитесь на странице: 1из 18

Санкт-Петербургский государственный политехнический университет

Направление подготовки: Физика

КУРСОВОЙ ПРОЕКТ
Численное решение краевых задач для обыкновенных
дифференциальных уравнений второго порядка
Вариант S6.
по дисциплине
«Численные методы»

Выполнила студентка гр. 3430302/80002 ____________ Обухова Д.А.

Руководитель______________ к.ф.-м.н., доц. Веселова И.Ю.

Санкт-Петербург
2019

1
Содержание отчета.

1.1. Постановка задачи…………………………………………………………………………..3


1.2. Вывод разностной схемы (для уравнения и граничных условий)……………………….3
1.3. Разностная схема (без приведения подобных членов)…………………………………...5
1.4. Вид коэффициентов матрицы и правой части алгебраической системы……………….6
1.5. Вывод выражения для главного члена погрешности аппроксимации уравнения
и граничных
условий……………………………………………………………………………………….7
1.6. Тестовые задачи……………………………………………………………………………. 9
1.7. Код программы……………………………………………………………………………..10
1.8. Результаты работы программы на тестах (зависимость Чебышёвской нормы погрешности
решения от удваивающегося количества разбиений)…………………………………....13
1.9. Оценка порядка точности разностной схемы найденного численного решения ....…….13
1.10. Таблица результатов работы программы для задачи, полученной от преподавателя ……..14
1.11. Оценка порядка точности разностной схемы найденного численного решения…...............15
1.12. Выводы…………………………………………………………………………………..............15

2
Решение краевой задачи для обыкновенного дифференциального уравнения второго
порядка

1. Постановка задачи.
1
∗∂
r2 ( r )∗∂u
∂r ( r 2∗k
∂r )
−q ( r )∗u=−f ( r ) (1)
0< r< 2
k ( r ) =2(r +2)
q (r )=1
f ( r )=r 4 −51∗r 3 +12∗r 2 +112∗r−48
u ( r )|r=0 −ограничена
( r )∗∂ u
(
− k
∂r )|
r =2
=κ 2∗u|r =2−ν 2

κ 2=3
ν 2=32

2. Вывод разностной схемы (для уравнения и граничных условий).

Введем равномерное разбиение. Будем искать приближенное решение vi в точках r i .

Основная сетка:
0=r 0 <r 1 <…< r N =2
2
h=r i−r i −1=
N
Все h одинаковые, в дальнейшем индексы опускаются.

Вспомогательная сетка:
r i+1 +r i
r i +1/ 2=
2
h i+1 +hi 2/N + 2/N 2
ħi = = = ,i=1,2 … N−1
2 2 N
Для сокращения обозначений будем обозначать эту величину просто ħ.

h1 2/ N 1
ħ0 = = =
2 2 N
h N 2/ N 1
ħN = = =
2 2 N

Введём обозначения:
u ( r i ) =ui – точное решение
v ( r i ) =v i ≈ ui – приближённое решение
∂u v −v i
Везде будем заменять |
∂ r r =r
на i+1
h
i+ 1/2
по определению предела (h→ 0)

Используем условие ограниченности в нуле:


u ( r )|r=0 −ограничена
Проинтегрируем от 0 до r 1 /2 с весом r 2
3
r1
r 1/2 r 1/2
∂ (r)∗∂ u 2

0
(
∫ ∂ r r 2∗k ∂ r ∗dr−∫ r 2∗u∗q∗dr=−∫ r 2∗f ∗dr
0 0
)
r1
r 1 /2 r1 /2

)| −∫ r ∗u∗q∗dr =−∫ r ∗f∗dr


2
(r )∗∂u
( r 2∗k
∂r 0 0
2

0
2

r1
r 1/2
∂u
2

2
2
r 1 ∗k ( r )∗
∂r |
r =r 1
2
−u i∗q i∫ r ∗dr=−f i∗∫ r 2∗dr
0
2

r i+1 /22∗k 1∗v i+1−v i 3


q i∗v i∗r 1
i+
2
i+
2 −f i∗r i +1/ 23
− =
h 3 3

Напишем разностную схему во внутренних точках:

Проинтегрируем от r i−1 /2 до r i +1/ 2 с весом r 2

ri+1 /2 ri+ 1/2 ri+ 1/2


∂ 2 (r)∗∂ u

ri−1/2
∂r (
r ∗k
∂r r r
)
∗dr− ∫ r 2∗u∗q ( r )∗dr= ∫ r 2∗(−f )∗dr
i−1/2 i−1/2

Используем формулу
r i+1 /2

∫ r 2∗f ∗dr ≈ f i∗r 2i ∗( r i+ 1 −r i −1 )=f i∗r 2i ∗h


r i−1/2 2 2
Получаем:
r i+1 /22∗k i+1 /2∗v i+1−v i r i −1 /22∗k i−1/ 2∗v i−v i−1 2 2
− −r i ∗qi∗v i∗h=r i ∗(−f i)∗h
h h

И осталось обработать граничное условие при r =2.

Проинтегрируем от r N−1 /2 до r N с множителем r 2


rN rN rN
∂ 2 ( r)∗∂ u

r N−1/2
∂r (
r ∗k
∂r r r
)
∗dr− ∫ r 2∗u∗q( r)∗dr= ∫ r 2∗(−f )∗dr
N−1/2 N−1/2

rN rN rN

( r ∗k2(r )∗∂u
∂r )| r N−1/2
−r N 2∗v N∗ ∫ dr=r N 2∗(−f N )∗ ∫ dr
r N −1 /2 r N−1/2
❑ ❑ rN rN
∂u ∂u
r N2 ∗2(r + 2)∗( )| −r ∗2(r + 2)∗( )| −r ∗v ∗ ∫ dr=r ∗(−2∗f 2 2 2
N 1 1 N N N N )∗ ∫ dr
∂r ∂r rN N−
2
N−
2 r 1 r 1 rN −1 /2
N− N−
2 2
❑ 2
( r )∗∂ u r
rN
2
∗(k
∂r )| −
∗k
h
∗v −v
rN
N −1/ 2
−r ∗q ∗v ∗ħ =r ∗(−f )∗ħ
N−1 /2 N N −1
N
2
N N N N
2
N N

3. Разностная схема (без приведения подобных членов).

4
r 1 /22∗k 1 /2∗v 1−v0 q 1∗v 0∗r 1 /23 −f 0∗r 1/ 23

{
− =
h 3 3
2 2
r i +1/ 2 ∗k i +1/ 2∗vi +1−vi r i−1/ 2 ∗k i−1 /2∗v i−v i−1 2 2
− −r i ∗q i∗v i∗h=r i ∗(−f i )∗h , i=1,2 … N−1
h h
2
r ∗k N −1/2∗v N −v N −1
r N 2∗(−κ 2∗v N + ν 2 )− N−1 /2 −r N 2∗q N ∗v N ∗ħ N =r N 2∗(−f N )∗ħ N
h

Приведем это в пригодный для перевода в программу вид:


−k 1/ 2 q 1∗r 1 /2 k −f ∗r
( )
∗v 0 + 1 /2 ∗v1 = 0 1/ 2

{

h 3 h 3
2 2 2 2
r ∗k −r ∗k r ∗k r ∗k
i−
1
2
h
i−
1
2
¿ v i−1+
2
( i+
1
2
h
i+
1
2

i−
1
2
h
i−
1
2 2
−r i ∗qi∗h ∗v i +
2
) i+
1
2
h
i+
1
2
∗v i+1=¿=−r i2∗f i∗h ,i=1,2 … N−

−r ∗k r ∗k
N−
1
2
h
N−
1
2
∗v N −1+ −r N ∗κ 2−( 2
N−
1
2
h
N−
1
2
)
−r N 2∗q N ∗v N∗ħN =¿=−r N 2∗f N ∗ħ N −r N 2∗ν 2

4. Вид коэффициентов матрицы и правой части алгебраической системы.

−k 1/ 2 q 1∗r 1 /2
D 0= −
h 3
k 1/ 2
E0 =
h
r 1 2∗k 1
i− i−
C i= 2 2
, i=1,2,3 … N−1 , N
h
−r 12∗k 1 r 1 2∗k 1
i+ i+ i− i−
2 2
− 2 2
D i= −r i−12∗qi∗h ,i=1,2,3 … N−1, N
h h
2
r 1 ∗k 1
i− i−
Ei = 2 2
,i=1,2,3 … N −1 , N
h
−r 12∗k 1
N− N−
2 2
CN=
h
r 1 2∗k 1
N− N−
D N =−r N 2∗κ 2+ 2 2
−r N 2∗q N
h
−f 0∗r 1 /2
B 0=
3
Bi=−r i −12∗f i−1∗h ,i=1,2,3 … N −1, N

5
BN =−r N 2∗f N ∗ħ N −r N 2∗ν 2

5. Вывод выражения для главного члена погрешности аппроксимации уравнения и


граничных условий.

Общая погрешность решения краевой задачи складывается из погрешности аппроксимации


и погрешности решения системы алгебраических уравнений.
Пусть u– точное решение, v – аппроксимация, ~
v – решение полученной системы.

Погрешность решения: ‖u−~ v‖=‖u−v+ v−~v‖≤‖u−v‖+‖v −~ v‖


‖u−v‖ – погрешность аппроксимации
‖v−~v‖ – погрешность решения линейной системы алгебраических уравнений
𝐿𝑢 = 𝑓; 𝑙𝑢 = 𝜈 – исходное уравнение и граничные условия
𝐿 ℎ𝑣 = 𝜑; 𝑙 ℎ𝑣 = 𝜈 – разностная схема
𝜓 = 𝜑 − 𝐿ℎ𝑢 – невязка уравнения (подставили точное решение в разностную схему).
𝜉 = 𝜈 − 𝑙ℎ𝑢 - невязка граничного условия (подстановка точного решения в разностную
схему).

Вычислим невязку 𝜓:
1 d 2 du
r dr
2 (
r k (r )
dr )
−q ( r ) u=−f ( r )

2 v i+1 −v i 2 v i−v i−1 2 2


r i +0.5 k i+0.5 −r i−0.5 k i−0.5 −r i q i v i h=−r i f i h
h h
Подставляем точное решение вместо приближённого и ищем невязку:
1 2 u i+1−ui 2 ui−u i−1 2 2
ψ i= (r i+ 0.5 k i+0.5 −r i−0.5 k i−0.5 )−r i qi ui +r i f i
h h h
ui +1=u ( r i +h ) −¿ разложим в ряд Тейлора поh

' h2 ' ' h3 '' '


ui +1=u ( r i +h ) =ui +h ui + u + u + …df
2 i 3! i
' d ui ' h
2
'' h3 ' ' '
ui = , ui−1=u ( r i−h ) =ui−h ui + ui − ui + …
dr 2 3!
ui−ui−1 ' h '' h2 ' ' ' h3 '' ' '
=ui− ui + ui − ui + …
h 2 3! 4!
~ ~
k i−0.5=r 2i−0.5 k i −0.5 , k i +0.5=r 2i+0.5 k i +0.5
~ ~ ~ h ~' h2 ~' ' h3 ~'' '
k i−0.5=k ( r i−0.5 h ) =k i− k i + k i − k i + …
2 2 3!
~ ui−u i−1 ~
k i−0.5 = k i ui ' −h ¿
h
6
−h3 ¿
~ u i+1−ui ~
k i+0.5 = k i ui '+ h¿
h
+h 3 ¿
Подставим в исходное разложение:
~ ~
ψ i=r 2i f i−r 2i qi ui + ( k u' ' + k ' u' )i +¿
+h 2 ¿
+h 2 ¿
ψ i=h 2 ¿
ψ i−¿ главный член погрешности аппроксимации уравнения
p=2 - порядок аппроксимации уравнения

Погрешность аппроксимации граничных условий:

1 d 2 ( ) du
( )
{
r k r −q ( r ) u=−f ( r ) , 0 ≤ r ≤ 2
r 2 dr dr
u|r → 0−ограничено
du
k (r ) =ν
dr r =2 2 |
Аппроксимация условия ограниченности функции:
r i+ 0.5 r i+ 0.5 r i+0.5
d 2 du

ri
dr(r k (r )
dr )
dr− ∫ r 2 qudr =− ∫ r 2 f dr
r i r i

2 v i+1 −v i r 3i+0.5 −r 3i +0.5


r i +0.5 k i+0.5 − qi v i = f i , i=1
h 3 3
u2−u1 r 31.5
2 r 31.5
ξ 1=r k 1.5 1.5 − qu+ f
h 3 1 1 3 1
~ u i+1−ui ~
k i+0.5 = k i ui '+ h¿
h
~ u2−u 1 ~ h ~ 2
k 1.5 = k 1 u 1 ' + ( k 1 u1 ' ) '+h ¿
h 2
−r 31.5 r 31.5 ~ ' h ~ ' 2
ξ 1= q1 u 1 + f 1 + k 1 u 1 + ( k 1 u1 ' ) + h ¿
3 3 2
r 31.5 ~ ' ~ ' 2
ξ 1=
3
( 3 ( k 1 u1 ' ) −q1 u 1+ f 1 )+ k 1 u 1+ h ¿

~ '
3 ( k 1 u1 ' ) −q1 u1+ f 1=0, если u - решение исходной задачи, так как

7
1 d 2 du
r 2 dr
r k
dr ( )|
r=0
−qu|r=0=−f |r =0

2 du d du
k
r dr | r=0
+ ( )|
k
dr dr r =0
−qu|r =0=−f |r=0

du
k
dr | r=0
=0- условие ограниченности в нуле

d du
(3 k
dr dr ( )
−qu) =−f |r =0
r=0
|
ξ 1=r 21.5 h2 ¿ ¿
Имеем второй порядок аппроксимации.
Аппроксимация граничного условия:
ri ri ri
d 2 du

ri−0.5
dr (
r k (r )
dr r
)
dr− ∫ r 2 qudr =− ∫ r 2 f dr
r i−0.5 i−0.5

2 2 v i −v i−1 2h 2h
r i (−κ 2∗v i+ ν 2 )−r i −0.5 k i−0.5 −qi r i v i=−f i r i ,i=n+1=n 1
h 2 2
2 2 ui−u i−1 2h 2h
ξ i=r i (−κ 2∗u i+ ν 2 )−r i −0.5 k i−0.5 −q i r i ui + f i r i
h 2 2
~ ui−u i−1 ~
k i−0.5 = k i ui ' −h ¿
h
h h h
ξ i=r 2i (−κ 2∗u i+ ν 2 ) + r 2i f i − r 2i u i q i−~
k i u'i + ( ~k i ui ' ) −¿
'

2 2 2
−h2 ¿
h 2
r i f i+ ( ~
'
¿ r 2i ⏟
(−κ 2∗u i+ ν 2−k i u'i )+ ( k i ui ' ) −r 2i ui qi ) −h2 ¿
2 ⏟
0 0

ξ i=−r 2 h2 ¿ ¿
p=s−m=2−0=2
Опять второй порядок аппроксимации. Таким образом, граничные условия согласованные,
так как их порядок аппроксимации совпадает с порядком аппроксимации самого уравнения.

6. Тестовые задачи.

Тестовая задача с нулевой погрешностью аппроксимации:


10 1
Пусть, u ( r )= 36 , k =r −2∗r , q=
2
e 2
5
Тогда, получим что: ξ i=0 , f =
e 36

8
1 d 2( 2 du 1 5
( ) ( )
{ 2
r r −2∗r ) − u=− 36 , 0 ≤r ≤ 2
r dr dr 2 e
u|r → 0−ограничено
10
u|r →2= 36
e

( r )∗∂ u
− k ( ∂r )|
r =2
=κ 2∗u|r =2−ν 2

κ 2=e 36
ν 2=10
10
0=e 36 36 −10
e
Получаем верное тождество.

Тестовая задача с ненулевой погрешностью аппроксимации:


Пусть u ( r )=2 sin 2 r 2 , k ( r ) =2r + 8 , q ( r )=5 r 35
Подставив в формулы, получим: ξ i ≠ 0
f ( r )=4 sin 2r 2 (16 r 3 +64 r 2)+10 r 35 sin 2 r 2−cos 2r 2(64 r +192)

1 d 2 du
( )
{
r ∙2( r +4) −10 r 35 sin 2 r 2=−(4 sin 2 r 2 (16 r 3 +64 r 2 )+10 r 35 sin 2 r 2−cos 2 r 2 (64 r + 192)cos 2 r)
r 2
dr dr
¿0≤r≤2
u|r → 0−ограничено
u|r=2=2 sin 8 ≈ 0,27834620192

( r )∗∂ u
− k ( ∂r )|
r =2
=κ 2∗u|r =2−ν 2

κ 2=4 r 2 cot2 r 2

ν 2=−32 r cos 2r 2
( 2 r +8 ) 4 r cos 2r 2 =8 r 2 sin 2 r 2 cot 2 r 2 +32 r cos 2r 2
Получаем верное тождество.

7. Код программы.

Код программы для 1го теста:


program S6
use imslm_mod
implicit none

integer i, n, l, j, m

real(8) b(10000), c(10000), d(10000), e(10000), h


real(8) r(100000), p(10000), s(10000), t(10000), ERR(5),DELTA(5),F,Q,K,U
external f, q, k, u

open(3, FILE = 'resultstest1.dat')

write (1,*) 'S6'

9
do l = 1, 5
n=10*2**(l)
h=2.0/n
r(1)=0
do i=2,n+1
r(i) = r(i-1)+h
end do

r(n+1)=2.0

!При i=1(аппроксимация граничного условия 1 рода,r=0)


c(1)=0.0
d(1)=-k(0.5*h)/h-q(r(0.5*h))/3
e(1)=k(0.5*h)/h
b(1)=-f(r(1))*h/6 !!!

!i=2,..,n (аппроксимация во внутренних точках промежутка)


do i=2,n

c(i)=((r(i)-0.5*h)**2)*k(r(i)-0.5*h)/h
d(i)=-(r(i)+0.5*h)**2*k(r(i)+0.5*h)/h-(r(i)-0.5*h)**2*k(r(i)-0.5*h)/h-
r(i)**2*h*q(r(i))
e(i)=((r(i)+0.5*h)**2)*k(r(i)+0.5*h)/h
b(i)=-(r(i)**2)*f(r(i))*h

end do

!i=n+1 (аппроксимация граничного условия 3 рода,r=2)


c(n+1)=-((r(n+1)-0.5*h)**2)*k(r(n+1)-0.5*h)/h
d(n+1)=3*(r(n+1)**2)+0.5*h*q(r(n+1))*(r(n+1)**2)+k(r(n+1)-0.5*h)*((r(n+1)-
0.5*h)**2)/h
e(n+1)=0.0
b(n+1)=0.5*h*f(r(n+1))*(r(n+1)**2)+ 32*(r(n+1)**2)

call lsltr_ (n+1, c, d, e, b)


err(l)= 0.0

do i=1, n+1
if(err(l) < abs(b(i)-u(r(i)))) then
err(l) = abs(b(i)-u(r(i)))
end if
end do

do i= 1,n+1
write(1, *) r(i),' ',b(i)
end do
end do

do l=1, 4
write(3, *)
write(3, *) err(l)
write(3, *)
DELTA(l)=err(l)/err(l+1)
write(3, *) 'DELTA(',l,')=',DELTA(l)
end do
write(3, *)
write(3, *) err(5)
write(3, *)

end program S6

real(8) function k(r)

10
real(8) r
k=r**2-2*r
return
end

real(8) function q(r)


real(8) r
q=0.5
return
end

real(8) function f(r)


real(8) r
f=5/exp(36.0)
return
end

real(8) function u(r)


real(8) r
u=(10/exp(36.0))
return
end

Код программы для 2го теста:


program S6
use imslm_mod
implicit none

integer i, n, l, j, m

real(8) b(10000), c(10000), d(10000), e(10000), h


real(8) r(100000), p(10000), s(10000), t(10000), ERR(5),DELTA(5),F,Q,K,U
external f, q, k, u

open(3, FILE = 'test2results.dat')

write (1,*) 'S6'

do l = 1, 5
n=10*2**(l)
h=2.0/n
r(1)=0

do i=2,n+1
r(i) = r(i-1)+h
end do

r(n+1)=2.0

!При i=1(аппроксимация граничного условия 1 рода,r=0)


c(1)=0.0
d(1)=-k(0.5*h)/h-q(r(0.5*h))/3
e(1)=k(0.5*h)/h
b(1)=-f(r(1))*h/6 !!!

!i=2,..,n (аппроксимация во внутренних точках промежутка)


do i=2,n

11
c(i)=((r(i)-0.5*h)**2)*k(r(i)-0.5*h)/h
d(i)=-(r(i)+0.5*h)**2*k(r(i)+0.5*h)/h-(r(i)-0.5*h)**2*k(r(i)-0.5*h)/h-
r(i)**2*h*q(r(i))
e(i)=((r(i)+0.5*h)**2)*k(r(i)+0.5*h)/h
b(i)=-(r(i)**2)*f(r(i))*h

end do

!i=n+1 (аппроксимация граничного условия 3 рода,r=2)


c(n+1)=-((r(n+1)-0.5*h)**2)*k(r(n+1)-0.5*h)/h
d(n+1)=3*(r(n+1)**2)+0.5*h*q(r(n+1))*(r(n+1)**2)+k(r(n+1)-0.5*h)*((r(n+1)-
0.5*h)**2)/h
e(n+1)=0.0
b(n+1)=0.5*h*f(r(n+1))*(r(n+1)**2)+ 32*(r(n+1)**2)

call lsltr_ (n+1, c, d, e, b)


err(l)= 0.0

do i=1, n+1
if(err(l) < abs(b(i)-u(r(i)))) then
err(l) = abs(b(i)-u(r(i)))
end if
end do

do i= 1,n+1
write(1, *) r(i),' ',b(i)
end do
end do

do l=1, 4

write(3, *)
write(3, *) err(l)
write(3, *)
DELTA(l)=err(l)/err(l+1)
write(3, *) 'DELTA(',l,')=',DELTA(l)
end do
write(3, *)
write(3, *) err(5)
write(3, *)

end program S6

real(8) function k(r)


real(8) r
k=2*r+8
return

end

real(8) function q(r)


real(8) r
q=5.0*r**35
end

real(8) function f(r)


real(8) r
f=(4*sin(2*r**2)*(16*r**3+64*r**2)+10*r**35*sin(2*r**2)-
cos(2*r**2)*(64*r+192))
return

12
end

real(8) function u(r)


real(8) r
u=2*sin(2*r**2)
end

Код программы для основной задачи:

program S6
use imslm_mod
implicit none

integer i, n, l, j, m

real(8) b(10000), c(10000), d(10000), e(10000), h


real(8) r(100000), p(10000), s(10000), t(10000), DE1(10000), DE2(10000),
z(10000), ERR(5),DELTA(5),F,Q,K,U,NU2
external f, q, k, u

open(1, FILE = 'results.dat')


open(2, FILE = 'table_results.dat')
open(3, FILE = 'delta.dat')

write (1,*) 'S6'

do l = 1, 5
n=10*2**(l)
h=2.0/n
r(1)=0

do i=2,n+1
r(i) = r(i-1)+h
end do

r(n+1)=2.0

!При i=1(аппроксимация граничного условия 1 рода,r=0)


c(1)=0.0
d(1)=-k(0.5*h)/h-q(r(0.5*h))/3
e(1)=k(0.5*h)/h
b(1)=-f(r(1))*h/6 !!!

!i=2,..,n (аппроксимация во внутренних точках промежутка)


do i=2,n

c(i)=((r(i)-0.5*h)**2)*k(r(i)-0.5*h)/h
d(i)=-(r(i)+0.5*h)**2*k(r(i)+0.5*h)/h-(r(i)-0.5*h)**2*k(r(i)-0.5*h)/h-
r(i)**2*h*q(r(i))
e(i)=((r(i)+0.5*h)**2)*k(r(i)+0.5*h)/h
b(i)=-(r(i)**2)*f(r(i))*h

end do

!i=n+1 (аппроксимация граничного условия 3 рода,r=2)


c(n+1)=-((r(n+1)-0.5*h)**2)*k(r(n+1)-0.5*h)/h
d(n+1)=3*(r(n+1)**2)+0.5*h*q(r(n+1))*(r(n+1)**2)+k(r(n+1)-0.5*h)*((r(n+1)-
0.5*h)**2)/h
e(n+1)=0.0

13
b(n+1)=0.5*h*f(r(n+1))*(r(n+1)**2)+ 32*(r(n+1)**2)

call lsltr_ (n+1, c, d, e, b)


err(l)= 0.0

if(l==1) then
do i=1, n+1
write(2, *) r(i)
end do
end if

write(2, *)
j=1

if(l==3) then
do i=1, n+1,4
p(j)=b(i)
write(2, *) b(i)
j=j+1
end do
end if

write(2, *)
j=1

if(l==4) then
do i=1,n+1,8
s(j)=b(i)
write(2, *) b(i)
j=j+1
end do
end if

write(2, *)
j=1
write(1, *)

if(l==5) then
do i=1,n+1, 16
t(j)=b(i)
write(2, *) b(i)
j=j+1
m=j
end do
end if

write(1, *)
write(1, *) 'the number of splits', n
write(1, *)
write(1, *) 'r(i) solution'
write(1, *)

do i= 1,n+1
write(1, *) r(i),' ',b(i)
end do
end do

write(3, *) ' DE1=|u(h)-u(h/2)| DE2=|u(h/2)-u(h/4)| DE1/DE2'

do i= 1,m-1
DE1(i)=abs(p(i)-s(i))
DE2(i)=abs(s(i)-t(i))
z(i)=DE1(i)/DE2(i)

14
write(3, *) DE1(i),' ',DE2(i),' ',z(i)
end do

end program S6

real(8) function k(r)


real(8) r
k=2*(r+2)
return

end

real(8) function q(r)


real(8) r
q=1
end

real(8) function f(r)


real(8) r
f=r**4-51*r**3+12*r**2+112*r-48
return

end

8. Результаты работы программы на тестах (зависимость Чебышёвской нормы погрешности


решения от удваивающегося количества разбиений):

k δ k =max|ui −~u i| δk
δ k+1
1 3.8603446666737584E-
015 0.78819211502584441
2 4.8977204834727126E-
015 0.73256502272123880
3 6.6857143483035636E-
015 0.63556255746609569
4 1.0519364726201977E-
014 0.42694559330720833
5 2.4638653943507918E- ----
014
Табл. 1(а).

k δ k =max|ui −~u i| δk
δ k+1
1 4.0214784708023199E-002 4.034089090642289
0
2 9.9687398578548470E-003 4.014112934321501
8
3 2.4834228685047810E-003 4.011029545826317
2
4 6.1914848547772738E-004 4.006075695652919

15
3
5 1.5455236808170625E-004 ----
Табл. 1(б).

9. Оценка порядка точности разностной схемы найденного численного решения:

По таблице 1(а) можно увидеть зависимость погрешности решения системы


алгебраических уравнений функцией LSLTR от количества разбиений, т.к. для тестовой
задачи с нулевой невязкой решение будет найдено с машинной погрешностью и
погрешностью решения алгебраических уравнений:
1
‖v−~v‖≤‖ A−1‖‖β‖≤ γ,
h2
где γ – машинная погрешность: 10-15
δk N 2
= ÷¿¿
δ k+1 4

Исходя из полученной выше формулы трудно отследить зависимость отношения


погрешностей (погрешность пропорциональна N 2). Главный вывод: с увеличением числа
разбиений погрешность решения системы увеличивается. Это объясняется тем, что
обусловленность матрицы растёт при росте количества узлов.
Из таблицы 1(б) мы видим, что погрешность уменьшается примерно в 4 раза при
уменьшении шага в 2 раза, т.е. разностная схема имеет 2 порядок аппроксимации по h.
h1
Пусть h2 =
2
‖u−v‖h 1
O ( h 21)
h21
= =4
‖u−v‖h O ( h 22) h22
2

10. Таблица результатов работы программы для задачи, полученной от преподавателя.

xi v (h) (x i) v (h/ 2) (x i) v (h/ 4 ) ( xi ) ( h)


i =|v ( x i)−v
δ (1) ( h /2 ) (2)
| |v ( h/ 2) (x i)−v (h /δ4)i( x i)|
δ(xi i )=
(1)

δ (2)
i

0.0000000000000000 - - 4.9314251511497096E- 1.1594534855179574E- 4.2532324174666796


6.4428111363822021 1.5113859852324927 003 003
-3.519324997145352
E-003 E-003
7E-004
0.10000000000000001 1.0252124590409537 4.0221246720808015
E-002
1.5396131581708373 1.6675059365077564 5.1440069912988360E- 1.2789277833691916E-
E-002 E-002 003 003
0.20000000000000001 5.5857998934703168 1.3069585566892333E- 4.0096171978490798
E-002 003
5.0617595428926007 5.7164957491392401 5.2404035057771609E-
E-002 E-002 003

16
0.30000000000000004 0.1053555120686801 0.1066641567330783 4.0058211797770253
0 9
0.10011331555523126 5.2421965134488435E- 1.3086446643982841E-
003 003
0.40000000000000002 0.1518642315266726 0.1531662514663265 4.0040410474745309
1 6
0.14665089024366787 5.2133412830047410E- 1.3020199396539534E-
003 003
0.50000000000000000 0.18059982248853015 0.1857760778480038
2
0.1870691643205728 5.1762553594736638E- 1.2930864725689828E- 4.0030233625365872
0 003 003
0.59999999999999998 0.2011719387061777 5.1416008541835534E- 4.0023698819972306
5 003
0.19474569874921896 0.1998872996034025 1.2846391027752369E-
1 003
0.69999999999999996 0.1893958055429761
9
0.18428040218901826 0.1906740439509693 5.1154033539579369E- 1.2782384079931264E- 4.0019164828486709
2 003 003
0.79999999999999993 0.14679880489578553 0.1531751481176864
5
0.1519002833194847 5.1014784236992072E- 1.2748647982017136E- 4.0015838784592699
4 003 003
0.89999999999999991 8.8675025061352900 5.1024485251984636E-
E-002 003
8.2297388214705072 8.7399836739903536 1.2751883214493637E- 4.0013294031732363
E-002 E-002 003
0.99999999999999989
-6.8264188553564791 -1.706186666708244 -4.264895690984427 5.1202321886482348E- 1.2796970976098017E- 4.0011282343389887
E-003 5E-003 4E-004 003 003
1.0999999999999999 - 5.1563039603285815E- 4.0009650523272215
0.1093295214436867 003
-0.110618286502339 1.2887650586523719E-
7
14 003
-0.1157745904626677
2
1.2000000000000000
-0.2373487046614254 -0.232136861245688 -0.230834170685115 5.2118434157374660E- 1.3026905605722783E- 4.0008299541587817
9 03 75 003 003
1.3000000000000000 - - 5.2878258476933282E-
0.3566622395844675 0.3553405198068022 003
-0.3619500654321609 1.3217197776653200E- 4.0007162917950128
8 6
1 003
1.4000000000000001 - - -
0.47757978055493056 0.4721947003504885 0.4708486387558941
5.3850802044420054E- 1.3460615945944387E- 4.0006194560988879
5 1
003 003
1.5000000000000002 - - - 5.5043276247254136E-
0.56983881335823683 0.5643344857335114 0.5629585882518451 003
1.3758974816662217E- 4.0056184825135634
2 9
003
1.6000000000000003 - - -
0.62192801829897937 0.6162818103470016 0.6148704220745580
5.6462079519776776E- 1.4113882724436921E- 4.0004639844440364
9 0
003 003
1.7000000000000004 - - - 4.0004011196208795
0.61464816614737394 0.6088368676335193 0.6073841886795634
5.8112985138546458E- 1.4526789539558438E-
0 5
003 003
1.8000000000000005 - 1.4999021390319500E- 4.0003461589215199
0.52639996226734143 003
-0.520399834506706 -0.518899932367674 6.0001277606346326E-
79 84 003
1.9000000000000006 - - 4.0002979886733385
0.33318406017912477 0.3269708747905328
-0.325417694150944 6.2131853885919464E- 1.5531806395884251E-
3
40 003 003
2.0000000000000000 - 4.0002557042815541
2.1501418174017764
-8.6010718173293865 -5.375124064811068 6.4509299999276105E- 1.6126294109206694E-
E-003
E-003 8E-004 003 003
Табл. 2.

11. Оценка порядка точности разностной схемы найденного численного решения.


h h

−u‖+‖v −u‖= Δ −Δ h + ( ) = h
2
‖v (h )
−v ( h/ 2)
‖=‖v ( h)
−u+ u−v ( h /2 )
‖≤‖v (h ) () 2 () h 5
(h ) 2 2 2
i i
2 4
h h h h

‖v ( h /2 )
−v ( h/ 4 )
‖=‖v ( h /2 )
−u+u−v ( h/ 4 ) ‖
‖≤ v 2 )−u
( ‖+‖ ( ‖
)
v 4 −u
( 2) (
=Δ − Δ 4
i
)
i
h
2
2

()()
+
h
4
5
2
= h2
16
17
‖v (h)−v (h /2 )‖
4
‖v (h /2 )−v ( h/ 4 )‖
Т. е. их отношение должно быть порядка 4.
δ 1=maxδ (i1) =1.8621086493395556∗10−3
δ 2=maxδ (i2 )=4.6406133137399941∗10−4

δ1
= 4.0126348037363888
δ2
12. Выводы.
Была решена краевая задача для обыкновенного дифференциального уравнения второго
порядка. Для проверки работоспособности и точности программы были решены 2
тестовых примера: с нулевой и ненулевой погрешностью аппроксимации. Работа
программы на поставленной привело к погрешности, пропорциональной h2, что
соответствует заданному порядку аппроксимации.

18