Documente Academic
Documente Profesional
Documente Cultură
y(1) = 0
0
0 1
sinh x
2
y(x) = !2
sinh 4
(0 " x " 4) derivation:
0
Find the polynomial p(z) that interpolates y(z) at z !{x " h, x, x + h}.
$ 2 sin x
& sinh(4 ! " ) (0 # x # " ) Then y#(x) $ p#(x) and y##(x) $ p##(x).
&
!2
0 4 y(x) = %
&! 2 sinh(x ! " ) (" # x # 4)
&' sinh(4 ! " )
error term: Taylor
grid h=
b!a
, xn = a + nh, yn " y(xn ) yN = ! linear BVP
N … y!!(x) + p(x) y!(x) + q(x)y(x) = r(x), y(a) = " , y(b) = #
! = y0
y1
… yn–1 yn
yn+1
h h
finite difference approximation
differentiation matrices yn+1 ! 2yn + yn!1 yn+1 ! yn!1
+ pn + qn yn = rn
# y1! & #0 1 & # y1 & # "* & h2 2h
% y! ( % "1 0 " (% y ( % (
% 2 () 1 % (% 2 ( + 1 % (
% ! ( 2h %
% y! ( %
" " 1 ( % ! ( 2h % ( diff. matrix equation
$ N "1 ' #%%%
$ "1 0 ( % y ( %+ (
D2 y + b 2 + diag(p) ( D1y + b1 ) + diag(q)y = r
$%%%&' $ N "1 ' #
%$$ %&'
D1 b1
" y1 % " p(x1 ) % " q(x1 ) % " r(x1 ) %
# y1!! & # "2 1 & # y1 & #* & where y = $ ! ' , p = $ ! ', q = $ ! ', r=$ ! '
% y!! ( % 1 "2 " (% y ( % ( $ ' $ ' $ ' $ '
% 2 () 1 % (% 2 ( + 1 % ( $# yN !1 '& $# p(x N !1 ) '& $# q(x N !1 ) '& $# r(x N !1 ) '&
% ! ( h %
2 " " 1 (% ! ( h % (
2
% y!! ( %
$ N "1 ' #%%%
$ 1 "2 (' %$ yN "1 (' %+ (
$ ' ( D2 + diag(p)D1 + diag(q)) y = r ! diag(p)b1 ! b 2
$%%%& #$&
D2 b2
Numerical Analysis 2, lecture 6, slide! 5 Numerical Analysis 2, lecture 6, slide! 6
example (p.342) y!! " y = x 2 " 2, y(0) = 1 example (p.342) y!! " y = x 2 " 2, y(0) = 1
y(1) = cosh(1) " 1 y(1) = cosh(1) " 1
N
alpha = 1; beta = cosh(1)-1;
yn!1 ! 2yn + yn+1 e = ones(N-1,1);
! yn = xn2 ! 2 n "{1,…, N ! 1}, y0 = 1, yN = cosh(1) ! 1 D2 = spdiags([e -2*e e],[-1:1],N-1,N-1)/h^2;
h2 b2 = [alpha; zeros(N-3,1); beta]/h^2;
q = -ones(N-1,1);
r = x(2:end-1).^2-2;
" 1 %
%+ " y1 % " x1 ! 2 %
2
( " !2 1 % " !1 $ '
y = (D2+diag(q))\(r-b2);
plot(x,z(:,2))
function error=g(gamma)
finite difference
[x,z]=solveIVP(gamma);
error=2-z(end,1);
! need to solve large system of equations
1
end
!!the equation system is sparse
function [x,z]=solveIVP(gamma)
f=@(x,z) [z(2); 1+z(1)*z(2)]; !!method works well when BVP is well-conditioned
x=0:.01:0.6;
[x,z]=ode45(f,x,[1;gamma]); 0
0 0.6
end