Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 37 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
37
Dung lượng
398,15 KB
Nội dung
360
CHƯƠNG 7:CÁCPHƯƠNGTRÌNHVIPHÂNTHƯỜNG
§1.BÀITOÁNCAUCHY
Một phương trình vi phân cấp 1 có thể viết dưới dạng giảiđược
′
=yf(x,y)
màtacóthểtìmđượchàmytừđạohàmcủanó.Tồntạivôsố
nghiệmthoảmãnphươngtrìnhtrên.Mỗinghiệm phụthuộcvàomộthằngsố
tuỳý.Khichotrướcgiátrịbanđầ
ucủaylàyotạigiátrịđầuxotanhậnđược
mộtnghiệmriêngcủaphươngtrình.BàitoánCauchy(haybàitoáncóđiều
kiệnđầu)tóm lạinhưsau:choxsaochob
≥x≥a,tìmy(x)thoảmãnđiều
kiện:
⎩
⎨
⎧
α=
=
′
)a(y
)y,x(
f
)x(y
(1)
Ngườitachứngminhrằngbàitoánnàycómộtnghiệmduynhấtnếuf
thoảmãnđiềukiệnLipschitz:
2121
yyL)y,x(f)y,x(f −≤−
vớiLlàmộthằngsốdương.
Ngườitacũngchứngminhrằngnếuf′
y(đạohàmcủaftheoy) làliên
tụcvàbịchặnthìfthoảmãnđiềukiệnLipschitz.
Mộtcáchtổngquáthơn,ngườitađịnhnghĩahệphươngtrìnhbậc1:
)y, ,y,y,x(fy
)y, ,y,y,x(fy
)y, ,y,y,x(
f
y
n21nn
n2122
n2111
=
′
⋅⋅⋅⋅
=
′
=
′
Taphảitìmnghiệmy
1,y2, ,ynsaocho:
⎩
⎨
⎧
α=
=
′
)a(Y
)X,x(
f
)x(Y
với:
⎟
⎟
⎟
⎟
⎟
⎟
⎠
⎞
⎜
⎜
⎜
⎜
⎜
⎜
⎝
⎛
′
′
′
=
′
n
2
1
y
y
y
Y
⎟
⎟
⎟
⎟
⎟
⎟
⎠
⎞
⎜
⎜
⎜
⎜
⎜
⎜
⎝
⎛
=
n
2
1
f
f
f
F
⎟
⎟
⎟
⎟
⎟
⎟
⎠
⎞
⎜
⎜
⎜
⎜
⎜
⎜
⎝
⎛
=
n
2
1
y
y
y
Y
361
Nếuphươngtrìnhviphâncóbậccaohơn(n),nghiệmsẽphụthuộcvào
nhằngsốtuỳý.Đểnhậnđượcmộtnghiệmriêng,taphảichonđiềukiệnđầu.
Bàitoánsẽcógiátr
ịđầunếuvớigiátrịxođãchotachoy(xo),y′(xo),y″(xo),
Mộtphươngtrìnhviphânbậcncóthểđưavềthànhmộthệphương
trìnhviphâncấp1.Vídụnếutacóphươngtrìnhviphâncấp2:
⎩
⎨
⎧
β=
′
α=
′
=
′′
)a(y,
)a(y
)y,y,x(
f
y
Khiđặtu=yvàv=y′tanhậnđượchệphươngtrìnhviphâncấp1:
⎩
⎨
⎧
=
′
=
′
)v,u,x(gv
vu
vớiđiềukiệnđầu:u(a)=αvàv(a)=β
Các phương
pháp giải phương trình vi phânđược trình bày trong
chươngnàylàcácphươngpháprờirạc:đoạn[a,b]đượcchiathànhnđo ạn
nhỏbằngnhauđượcgọilàcácʺbướcʺtíchphânh=(
b‐a)/n.
§2.PHƯƠNGPHÁPEULER
Giảsửtacóphươngtrìnhviphân:
⎩
⎨
⎧
α=
=
′
)a(y
)y,x(
f
)x(y
(1)
vàcầntìmnghiệmcủanó.Tachiađoạn[x
o,x]thànhnphầnbởicácđiểm
chia:
x
o<x1<x2< <xn=x
TheocôngthứckhaitriểnTaylormộthàmlâncậnx
itacó:
⋅⋅⋅+
′′′
−
+
′′
−
+
′
−+=
++
++
)x(y
6
)xx(
)x(y
2
)xx(
)x(y)xx()x(y)x(y
i
3
i1i
i
2
i1i
ii1ii1i
Nếu(x
i+1‐xi)khábéthìtacóthểbỏquacács ốhạng(xi+1‐xi)
2
vàcácsố
hạngbậccao
y(x
i+1)=y(xi)+(xi+1‐xi)y′(xi)
Trườnghợpcácmốccáchđều:
(x
i‐1‐xi)=h=(x‐xo)/n
thìtanhậnđượccôngthứcEulerđơngiản:
y
i+1=yi+hf(xi,yi) (2)
Vềmặthìnhhọctathấy(1)chokếtquảcàng
chínhxácnếubướchcàngnhỏ.
Taxâydựnghàm
euler()đểthựchiệnthuậttoántrên:
y
x
x
i
xi+1
yi
yi+1
362
function[X,Y]=euler(fxy,xo,xf,yo,n)
%%Giaiphuongtrinhy ʹ(x)=f(x,y(x))hayy’=f(x)
ifn<2
n=2;
end
h=(xf‐xo)/n;
X=zeros(n+1,1);
M=max(size(yo));%sophuongtrinh(socotcuamatranY)
Y
=zeros(n+1,M);
%datdieukiendau
x=xo;
X(1)=x;
y=yo;
Y(1,:)=yʹ;
fori=1:n
ifnargin(fxy)>1
k1=h*feval(fxy,x,y);
else
k1=h*feval(fxy,x);
end
y=y+k1;
x=x
+h;
X(i+1)=x;
Y(i+1,:)=yʹ;
end
functiondy=f1(t,y)
dy=zeros(3,1);
dy(1)=y(2)*y(3);
dy(2)=‐y(1)*y(3);
dy(3)=‐0.51*y(1)*y(2);
Đểgiảiphươngtrìnhchobởihàmf1(x,y)tadùngchươngtrình
cteuler.m:
clearall,clc
a=0;
363
b=1;
y=@f1;
ya=[011]ʹ;
m=200;
[x,y]=euler(y,a,b,ya,m)
plot(x,y);
§3.PHƯƠNGPHÁPHEUN
Phương pháp Heun cònđược gọi là phương pháp hình thang hay
phươngpháp.Chophươngtrình:
y’=f(t,y)
Tacó:
+
+
+
=−=
∫
k1
k1
k
k
t
t
k1 k
t
t
y y(t ) y(t ) f(t, y)dt
hay:
+
+
=+
∫
k1
k
t
k1 k
t
y(t ) y(t ) f(t,y)dt vớiy(t0)=y0
Nếutasửdụngquytắctíchphânhìnhthangthìtacó:
+++
⎡⎤
=+ −
⎢⎥
⎣⎦
k1 k k k k1 k1
h
y y f(t ,y ) f(t ,y )
2
Vếphải(RHS)củaphươngtrìnhnàycóy
k+1làgáitrịchưabiếttạithờiđiểmtk.
Đểgiảiquyếtvấnđềnàytathayy
k+1ởRHSbằngcôngthứcxấpxỉ:
+
≅+
k1 k k k
yyhf(t,y)
Nhưvậy:
[]
{
}
++
=+ + +
k1 k k k k1 k k k
h
y y f(t ,y ) f (t ,y hf(t ,y )
2
ĐâychínhlàcôngthứcHeun.
Taxâydựnghàm
heun()đểthựchiệnthuậttoántrên:
function[X,Y]=heun(fxy,xo,xf,yo,n)
%Giaiphuongtrinhyʹ(x)=f(x,y(x))hayy’=f(x)
%dungthuattoanHeunvoinbuoctinh
ifn<2
n=2;
end
364
h=(xf‐xo)/n;
X=zeros(n+1,1);
M=max(size(yo));%sophuongtrinh(socotcuamatranY)
Y=zeros(n+1,M);
%datdieukiendau
x=xo;
X(1)=x;
y=yo;
Y(1,:)=yʹ;
fori=1:n
ifnargin(fxy)>1
f1
=feval(fxy,x,y);
f2=feval(fxy,x+h,y+h*f1);
else
f1=feval(fxy,x);
f2=feval(fxy,x+h);
end
y=y+h*(f1+f2)/2;
x=x+h;
X(i+1)=x;
Y(i+1,:)=y.ʹ;
end
Đểgiảiphươngtrìnhtadùngchương trình
ctheun.m:
clearall,clc
a=0;
b=1;
y=inline(ʹ2*x+yʹ);
ya=0.5;
n=10;%solantinhchin=10
[x,y]=heun(y,a,b,ya,n)
plot(x,y);
§4.PHƯƠNGPHÁPRUNGE‐KUTTA
365
MặcdùphươngphápHeuntốthơnphươngphápEulernhưngnóvẫn
chưađủđộchínhxácđốivớicácbàitoánthựctế.
XétbàitoánCauchy(1).Giảsửtađãtìmđượcgiátrịgầnđúngy
icủa
y(x
i)vàmuốntínhyi+1củay(xi+1).TrướchếttaviếtcôngthứcTaylor:
)c(y
!m
h
)x(y
!m
h
)x(y
2
h
)x(yh)x(y)x(y
)1m(
1m
i
)m(
m
i
2
ii1i
+
+
+
++⋅⋅⋅+
′′
+
′
+= (11)
vớic∈(x
i,xi+1)và:
[
]
)x(y,x
f
)x(y
iii
=
′
[]
)x(y,xf
dx
d
)x(y
ii
1k
1k
i
)k(
−
−
=
Taviếtlại(11)dướidạng:
)c(y
!m
h
)x(y
!m
h
)x(y
2
h
)x(yhyy
)1m(
1m
i
)m(
m
i
2
ii1i
+
+
+
++⋅⋅⋅+
′′
+
′
=− (12)
TađãkéodàikhaitriểnTaylorđểkếtquảchínhxáchơn.Đểtínhy′
i,y″iv.v.ta
cóthểdùngphươngphápRunge‐Kuttabằngcáchđặt:
)i(
44
)i(
33
)i(
22
)i(
11i1i
krkrkrkryy
+
++=−
+
(13)
trongđó:
⎪
⎪
⎩
⎪
⎪
⎨
⎧
γ+β++=
α++=
=
)kky,bhx(hfk
)ky,ahx(hfk
)y,x(hfk
)i(
2
)i(
1ii
)i(
3
)i(
1ii
)i(
2
ii
)i(
1
(14)
vàtacầnxácđịnhcáchệsốa,b, ;α,β,γ, ;r
1,r2, saochovếphảicủa(13)
khácvớivếphảicủa(12)mộtvôcùngbécấpcaonhấtcóthểcóđốivớih.
KhidùngcôngthứcRunge‐Kuttabậchaitacó:
⎪
⎩
⎪
⎨
⎧
α++=
=
)ky,ahx(hfk
)y,x(hfk
)i(
1ii
)i(
2
ii
)i(
1
(15)
và
)i(
22
)i(
11i1i
krkryy +=−
+
(16)
Tacó:
y′(x)=f[x,y(x)]
[
]
[
]
)x(y,x
f
)x(y,x
f
)x(y
yx
′
+
′
=
′′
Dođóvếphảicủa(12)là:
[]
⋅⋅⋅+
′′
+
′
+ )x(y)y,x(f)y,x(f
2
h
)y,x(hf
iiyiix
2
ii
(17)
Mặtkháctheo(15)vàtheocôngthứcTaylortacó:
366
iii
)i(
1
yh)y,x(h
f
k
′
==
])y,x(
f
k)y,x(
f
ah)y,x(
f
[hk
iiy
)i(
1iixii
)i(
2
⋅
⋅
⋅
+
′
α
+
′
+=
Dođóvếphảicủa(16)là:
⋅
⋅
⋅
+
′
′
α
+
′
++ )]y,x(
f
yr)y,x(
f
ar[h)y,x(
f
)rr(h
iiyi2iix2
2
ii21
(18)
Bâygiờcho(17)và(18)khácnhaumộtvôcùngbécấpO(h
3
)tatìmđượccác
hệsốchưabiếtkhicânbằngcácsốhạngchứahvàchứah
2
:
r
1+r2=1
a.r
1=1/2
α.r
2=1
Nhưvậy: α=a,r
1=(2a‐1)/2a,r2=1/2avớiađượcchọnbấtkì.
Nếua=1/2thìr
1=0vàr2=1.LúcnàytanhậnđượccôngthứcEuler.Nếu
a=1thìr
1=1/2vàr2=1/2.LúcnàytanhậnđượccôngthứcEulercảitiến.
MộtcáchtươngtựchúngtanhậnđượccôngthứcRunge‐Kuttabậc4.
Côngthứcnàyhayđượcdùngtrongtínhtoánthựctế:
k1=h.f(xi,yi)
k
2=h.f(xi+h/2,yi+k1/2)
k
3=h.f(xi+h/2,yi+k2/2)
k
4=h.f(xi+h,yi+k3)
yi
+1=yi+(k1+2k2+2k3+k4)/6
Taxâydựnghàm
rungekutta()đểthựchiệncôngthứcRunge‐Kuttabậc4:
function[x,y]=rungekutta(f,a,b,y0,n)
%Phuong phap Runge‐Kutta de giai phuong trinh yʹ(x) = f(x,y(x)) hay y’ =
%f(x)
ifnargin<4|n<=0
n=100;
end
ifnargin<3
y0=0;
end
y(1,:)=y0(:)ʹ;%
h=(b‐a)/n;
x=a+[0:n]ʹ*h;
ifnargin(f)>1
fork=1:n
367
f1=h*feval(f,x(k),y(k,:));
f1=f1(:)ʹ;
f2=h*feval(f,x(k)+h/2,y(k,:)+f1/2);
f2=f2(:)ʹ;
f3=h*feval(f,x(k)+h/2,y(k,:)+f2/2);
f3=f3(:)ʹ;
f4=h*feval(f,x(k)+h,y(k,:)+
f3);
f4=f4(:)ʹ;
y(k+1,:)=y(k,:)+(f1+2*(f2+f3)+f4)/6;
end
else
fork=1:n
f1=h*feval(f,x(k));
f1=f1(:)ʹ;
f2=h*feval(f,x(k)+h/2);
f2=f2(:)ʹ;
f3=h*feval(f,x(k)
+h/2);
f3=f3(:)ʹ;
f4=h*feval(f,x(k)+h);
f4=f4(:)ʹ;
y(k+1,:)=y(k,:)+(f1+2*(f2+f3)+f4)/6;
end
end
Đểgiảiphươngtrìnhtadùngchươngtrình
ctrungekutta.m:
clearall,clc
a=0;
b=1;
y=inline(ʹx+yʹ);
ya=0.5;
n=10;%solantinhchin=10
[x,y]=rungekutta(y,a,b,ya,n)
plot(x,y);
§5.PHƯƠNGPHÁPRUNGE‐KUTTATHÍCHNGHI
368
Vấnđềxácđịnhbướctínhhlà rấtquantrọng.Nếumuốncóđộchính
xáccaothìbướctínhhphảinhỏ.Tuynhiênkhihnhỏ,talạitốnthờigiantính
toán. Hơn nữ
a bước hằng số sẽ không thích hợp trên toàn bộ miền tìm
nghiệm.Vídụnếuđườngcongnghiệmbanđầuthayđổinhanhrồisauđó
gầnnhưkhôngđổithìtaphảidùnghnhỏởđoạnđầu
vàhlớnởđoạnsau.
đâylàchỗmàcácphươngphápthíchnghichiếmưuthế.Chúngđánhgiásai
sốlàmtròntạimỗilầntíchphânvàtựđộnghiệuchỉnhđộlớncủahđểsai
số
nằmtronggiớihạnchophép.
Phương pháp Runge‐Kutta thích nghi còn gọi là phương pháp tích
phânkếthợp.Cáccôngthức nàyđithànhcặp:mộtcôngthứctíchphânbậcm
và
mộtcôngthứctíchphânbậcm+1.Ýtưởnglàdùnghaicôngthứcnàycải
thiệnnghiệmtrongđoạn[x,x+h].Gọikếtquảlày
m(x+h)vàym+1(x+h)tacósai
sốđốivớicôngthứcbậcmlà:
E(h)=y
m+1(x+h)‐ym(x+h)(1)
Chúngtadùngcôngthứckếthợpbậc4và5màđạohàmđượctínhbằng
côngthứcFehlenberg.DovậycôngthứcRunge‐Kuttathíchnghicònđược
gọilàcôngthứcRunge‐Kutta‐Fehlenberg:
=
1
KhF(x,y)
−
=
⎛⎞
=+ +
⎜⎟
⎝⎠
∑
i1
iii,jj
j0
KhFxAh,y BK i=1,2, ,6(2)
=
+= +
∑
6
5ii
i1
y(x h) y(x) CK
(côngthứcbậc5)(3)
=
+= +
∑
6
4ii
i1
y(x h) y(x) DK
(côngthứcbậc4)(4)
Cáchệsốxuấthiệntrongcáccôngthứcnàykhôngduy nhất.Bảngsaucho
cáchệsốtínhtheoCashvàKarp:
i A
i Bi,j Ci Di
1
∗ ∗ ∗ ∗ ∗ ∗
37
378
2825
27648
2
1
5
1
5
∗ ∗ ∗ ∗
0 0
3
3
10
3
40
9
40
∗ ∗ ∗
250
621
18575
48384
4
3
5
3
10
−
9
10
6
5
∗ ∗
125
594
13525
55296
369
5 1
−
11
54
5
2
−
70
27
35
27
∗
0
277
14336
6
7
8
1631
55296
175
512
575
13824
44275
110592
253
4096
512
1771
1
4
Saisốsẽlà:
E(h)=y
5(x+h)‐y4(x+h)=
=
−
∑
6
iii
i1
(C D )K
(5)
ChúýlàE(h)làmộtvectơ,thànhphầnE
i(h)biểudiễnsaisốcủabiếnyi.Sai
sốe(h)tacầnkiểmsoátlà:
=
i
e(h) max E (h) (6)
Tacũngcóthểkiểmsoátsaisốtrungbìnhbìnhphương:
=
=
∑
n
2
i
i1
1
e(h) E ( h)
n
(7)
vớinlàsốphươngtrìnhbậc1.
Việckiểmsoátsaisốđạtđượcbằngcáchthayđổihsaochosai sốtạimỗi
bướctínhậiphỉcỡsaisốmongmuốnε.Saisố
khithựchiênthuậttáonRunge
‐KuttabậcbốnlàO(h
5
)nên:
⎛⎞
≈
⎜⎟
⎝⎠
5
11
22
e(h ) h
e(h ) h
(8)
Giảsửlàtađãtính nghiệmtạibướctínhvớih
1vàcósaisốlàe(h1).Tạibước
tínhvớih
2tamuốncóe(h2)=εthì:
⎡⎤
ε
=
⎢⎥
⎣⎦
1/ 5
21
1
hh
e(h )
(9)
Đểdựphòng,talấy:
⎡⎤
ε
=
⎢⎥
⎣⎦
1/ 5
21
1
h0.9h
e(h )
(10)
Taxâydựnghàm
adaptrk()đểthựchiệnthuậttoánnày:
function[xsol,ysol]=adaptrk(f,xo,x1,y,n)
%TichphanRunge‐Kuttabac5dunggiapphuongtrinhy’=f(x,y)hayy’=
%f(x).
%xo,x1‐doantimnghiem.
%ygiatridau,ndungtimhbandau
[...]... hữu hạn tại các nút lưới cách đều. Như vậy ta sẽ nhận được hệ phươngtrình đại số đối với các sai phân. Cả hai phương pháp này có một vấn đề chung: chúng làm tăng số phươngtrình phi tuyến nếu phươngtrìnhviphân là phi tuyến. Cácphươngtrình này được giải bằng phương pháp lặp nên rất tốn thời gian tính toán. Vì vạy vi c giải bài toán biên phi tuyến rất khó. Ngoài ra, đối với phương pháp lặp, vi c chọn giá trị ... khi tích phân lại. Phương pháp này cũng giống như bắn bia. Trước hết ta bắn rồi xem có trúng đích hay không, hiệu chỉnh và bắn lại. Do vậy phương pháp này gọi là phương pháp bắn. Một phương pháp khác để giải bài toán giá trị biên là phương pháp sai phân hữu hạn trong các đạo hàm được thay bằng các xấp xỉ bằng sai phân hữu hạn tại các nút lưới cách đều. Như vậy ta sẽ nhận được hệ phươngtrình ... hàm dθ/dt. Do vậy cúng ta sẽ dùng phương pháp Brent. Tóm lại thuật oán giải bài toán giá trị biên gồm các bước: ‐ Mô tả giá trị u1 và u2 vây nghiệm u của (3) ‐ Dùng phương pháp Brent tìm nghiệm u của (3). Chú ý là mỗi bước lặp đòi hỏi tính θ(u) bằng cách giải phương trìnhviphân như là bài toán điều kiện đầu. ‐ Khi đã có u, giải phươngtrìnhviphân lần nữa để tìm nghiệm Ta xây dựng hàm bvp2shoot() để giải phươngtrình bậc 2: ... dx0(k + 1) = dx0(k) ‐ e(k)/deddx; end Để giải phương trình: y′′ = 2y 2 + 4xyy′ với điều kiện biên: y(0) = 0.25, y(1) = 1/3 Đặt: y′ = y1 , y′′ = y 2 ta đưa phươngtrình về hệ phương trìnhviphân cấp 1: ⎧ y1 = y 2 ⎨ ⎩ y 2 = 2y1 + 4xy 2 y1 và biểu diễn nó bằng hàm f7(): function dx = f7(t, x) %Eq.(6.6.5) dx(1) = x(2); dx(2) = (2*x(1) + 4*t*x(2))*x(1); Để giải phươngtrình ta dùng chươngtrình ctbvp2shoot.m: ... [x, y] = bvp2fdf(a1, a0, u, x0, xf, y0, yf, n); plot(x, y) §11. PHƯƠNG PHÁP LẶP PICARD Vi c giải bài toán Cauchy: y′ = f(t,y) , y(t o ) = y o (1) hoàn toàn tương đương với vi c tìm nghiệm y(t) của phươngtrình tích phân: t1 y(t) = y o + ∫ f [ z,y(z)] dz (2) to Nội dung của phươngtrình Picard là thay cho vi c tìm nghiệm đúng của phươngtrình (2) ta tìm nghiệm gần đúng theo công thức: ... F(3, :) = f(t(i+1)); end end Để giải phươngtrình ta dùng chươngtrình ctmilne.m: clear all, clc a = 0; b = 1; y = @f2; ya = 1; n = 10; [t, y] = milne(y, a, b, ya, n); plot(t, y) §10. BÀI TOÁN GIÁ TRỊ BIÊN 1. Khái niệm chung: Ta xét bài toán tìm nghiệm của phương trình: 384 y′′ = f(x, y,y′) y(a) = α ,y(b) = β Đây là bài toán tìm nghiệm của phương trìnhviphân khi biết điều kiện ... Để giải phươngtrình ta dùng chươngtrình ctgill.m: 392 clear all, clc a = 0; b = 1; y = inline(ʹx + yʹ); ya = 0.5; n = 10;%so lan tinh chi n = 10 [t, u] = gill(y, a, b, ya, n); plot(t, u); [l, v] = rungekutta(y, a, b, ya, n); hold on plot(l, v, ʹ.rʹ) §13. PHƯƠNG PHÁP RUNGE – KUTTA – FEHLBERG Một phương pháp để bảo đảm độ chính xác của nghiệm của phương trìnhviphân là giả bài toán hai lần với bươc tính là h và 0.5h rồi so sánh kết ... vạy vi c giải bài toán biên phi tuyến rất khó. Ngoài ra, đối với phương pháp lặp, vi c chọn giá trị đầu rất quan trọng. Nó quyết định tính hội tụ của phương pháp lặp. 2. Phương pháp shooting: Ta xét bài toán biên là phương trìnhviphân cấp 2 với điều kiện đầu tại x = a và x = b. Ta xét phương trình: (1) y′′ = f(x, y,y′) y(a) = α ,y(b) = β Ta tìm cách đưa bài toán về dạng bài toán giá trị đầu: y′′ = f(x, y,y′) y(a) = α ,y′(a) = u ... xf = 1/3; % thoi gian dau/cuoi va cac vi tri n = 100; tol = 1e‐8; 387 kmax = 10; y = @f7; [t, x] = bvp2shoot(y, t0, tf, x0, xf, n, tol, kmax); xo = 1./(4 ‐ t.*t); err = norm(x(:,1) ‐ xo)/(n + 1) plot(t,x(:, 1)) 3. Phương pháp sai phân hữu hạn: Ta xét phương trình: y′′ = f(x, y,y′) y(a) = α ,y(b) = β Ý tưởng của phương pháp này là chia đoạn [a, b] thành n đoạn nhỏ có bước h và xấp xỉ các đạo hàm bằng các sai phân: ... Do đó u là nghiệm của phương trình: r(u) = θ(u) ‐ β = 0 (3) Trong đó θ(u) gọi là số dự biên(hiệu số giữa giá trị tính được và giá trị biên cho trước). Phươngtrình (3) có thể gải bằng cácphương pháp tìm nghiệm trong chương trước. Tuy nhiên phương pháp chia đôi cung đòi hỏi tính toán lâu còn phương pháp Newton ‐ Raphson đòi hỏi tìm đạo .
360
CHƯƠNG 7: CÁC PHƯƠNG TRÌNH VI PHÂN THƯỜNG
§1.BÀITOÁNCAUCHY
Một phương trình vi phân cấp 1 có thể vi t dưới dạng.
361
Nếu phương trình vi phân cóbậccaohơn(n),nghiệmsẽphụthuộcvào
nhằngsốtuỳý.Đểnhậnđượcmộtnghiệmriêng,taphảichonđiềukiệnđầu.
Bàitoánsẽcógiátr
ịđầunếuvớigiátrịxođãchotachoy(xo),y′(xo),y″(xo),
Một phương trình vi phân bậcncóthểđưavềthànhmộthệ phương
trình vi phân cấp1.Vídụnếutacó phương trình vi phân cấp2:
⎩
⎨
⎧
β=
′
α=
′
=
′′
)a(y,
)a(y
)y,y,x(
f
y
Khiđặtu=yvàv=y′tanhậnđượchệ phương trình vi phân cấp1:
⎩
⎨
⎧
=
′
=
′
)v,u,x(gv
vu
vớiđiềukiệnđầu:u(a)=αvàv(a)=β