Нумеричко решавање парцијалних диференцијалних једначина и интегралних једначина Метода мреже за Дирихлеове проблеме Метода мреже се приближно решавају диференцијалне једначине тако што се диференцијална једначина трансформише у систем алгебарских једначина чије је решавање једноставније. Формирамо мрежу у првом квадранту xoy координатног система. x = x 0 + ih, i = 0, ±1, ±2, y = y 0 + kl, k = 0, ±1, ±2, Није обавезно да су кораци h и l међусобно једнаки. Вредности функције u = u(x, y) у чворовима мреже, означена са u ik = u(x o + ih, y o + kl) одређујемо на следећи начин: У сваком унутрашњем чвору узећемо да је ( u x ) ik док се вредности на границама добијају као Аналогно се апроксимира и други извод: u i+1,k u i 1,k, ( u 2h y ) u i,k+1 u i,k 1 2l ik ( u x ) u i+1,k u i,k ik h ( u y ) u i,k+1 u i,k л ik ( 2 u x 2) u i+1,k 2u i,k + u i 1,k h 2 ik ( 2 u y 2) u i,k+1 2u i,k + u i,k 1 l 2 ik Решавамо проблем Δu = 2 u + 2 u x 2 y u(x, y) = φ(x, y), 2 = f(x, y), (x, y) G (x, y) G Парцијални извод мењамо са u i+1,k 2u ik +u i 1,k h 2 + u i,k+1 2u ik +u i,k 1 l 2 = f ik, f ik = (x i, y k ) Ако израз помножимо са h 2 и узмемо да је h = l добија се да једначина u i+1,k + u i 1,k + u i,k+1 + u i,k 1 4u ik = h 2 f ik Грешка се одређује по формули R ik h2 6 M 4 где је M 4 = mx { 4 u 4 x, 4 u y 4 }
Пример: Решити следећи проблем на мрежи: Δu = 2 u + 2 u x 2 y u(x, y) = φ(x, y), 2 = 0, (x, y) G (x, y) G Добија се следећи систем једначина u 01 + u 21 + u 10 + u 122 4u 11 = 0 u 02 + u 22 + u 11 + u 13 4u 12 = 0 u 03 + u 23 + u 12 + u 14 4u 13 = 0 u 11 + u 31 + u 20 + u 22 4u 21 = 0 u 12 + u 32 + u 21 + u 23 4u 22 = 0 u 13 + u 33 + u 22 + u 24 4u 23 = 0 Дакле, добили смо 6 једначина а имамо 12 непознатих. Користимо сада услове на границама: u i0 = 0 (i = 1,2,3), u 0j = 0 (j = 1,2,3) u 14 = u 24 = u 34 = 10000 Решавањем система добија се да је u 11 = 714, u 21 = 982, u 12 = 1875, u 13 = 4286, u 23 = 5268, u 22 = 2500.
Решавање граничних задатака на произвољно задатим областима Нека је област G круг. Тада се тачке мреже које се не налазе на граници области одређују следећим апроксимацијама Односно k+1 = u A + u B k u A u Ah δ 1 +h δ 1, u k+1 Ch = u c + u D k u C δ δ 2 h 2 u Ah = δ 1u B +hu A δ 1 +h, u Ch = δ 2u D hu C δ 2 h Пример: Решити проблем мреже Δu = 2 u + 2 u x 2 y 2 = 0, (x, y) G u(x, y) = x 2 y 2, (x, y) G где је G = {(x, y), x 2 + y 2 = 16}. Решење: Приметимо да су функције f и φ симетричне у односу на пправе Оx, Oy, x = y, x = y те се проблем своди на ¼ круга. Направићемо прво мрежу са кораком h = 2 и одредимо тачке које се налазе на границама: A(4,2) M( 12, 2), u A = u M = 12 2 2 = 48 (u B = u B, u M = u M ) C(4,0), u c = 0, u C = u C Решавамо систем у унутрашњим тачкама (,, c, d): 4 4 h 2 = 0 2 + u C 2c 2 h 2 + h 2 = 0 2c + u M 2c + um h 2 + h 2 = 0 2c 2 h 2 + 2 + u C h 2 = 0 Решавањем система добија се да је = 24, = 24, c = 36. Понављамо поступак са двоструко мањим кораком. Прво одредимо вредности функције у чворовима који се налазе на граници.
A(4,1), u A = 15 B(4,2), u B = 48 C ( 3 4, 3 4 ), u C = 63 Понављајући поступак, слично одрећујемо вредности функције у унутрашњим чворовима (,, c, d, e, f). Добија се да је = 26, = 20, c = 27, d = 28, e = 27, f = 44. Сада се вредности у граничним тачкама могу одредити презизније, односно: Слично за тачку B δ A = MA = 4 15 = 0.13 u (1) A = u M + e u M δ A h δ A = 15 1.56 0.87 13 δ B = NB = 4 12 = 0.6 u (1) B = u N + f u N δ B h δ B = 48 + 0.4 0.4 49 Oдносно, u (1) A = u (1) A = 13, u (1) B = u (1) B = 49, u C = 73. Вредности функције u у чворовима мреже се могу приказати табелом Пример за вежбу: Решити претходни проблем ако је област G огранична следећим функцијама 2y = 1 4x 2, y = 0, x = 0 и ако је вредност функције на границама дефинисана са u x=0 = 0, u y=0 = (1 4x 2 )x, u 2y=1 4x 2 = 12xy 2. Узети да је корак h = 0.1.
Метода мреже за задатке параболичког типа Решавамо следећи проблем u t = 2 2 u x 2 При ограничењима u(x, 0) = f(x), (0 < x < s) и граничним условима u(0, t) = φ(t), u(s, t) = ψ(t). Дискретизујемо проблем на мрежи са корацима h и τ Увођењем смене τ = 2 t полазни проблем добија облик u t = 2 u x 2 Како је t 0 и 0 x s формирамо следећу мрежу: x = ih (i = 0,1,2, ), t = jl (j = 0,1,2,.. ) Узимајући да је x i = ih, t j = jl и u(x i, t j ) = u jt приближна вредност функције у унутраљим чворовима се добија по формули ( 2 u x 2) u i+1,j 2u i,j + u i 1,j h 2 ij Односно Заменом у полазни задатак добија се да је u i,j+1 u i,j l u i,j u,ij 1 l ( u t ) u i,j+1 u i,j ij l ( u t ) u i,j u,ij 1 ij l = u i+1,j 2u i,j + u i 1,j h 2 = u i+1,j 2u i,j + u i 1,j h 2 Па ако се узме да је σ = l h2 добија се следећа итеративна формула u i,j+1 = (1 2σ)u ij + σ(u i+1,j + u i 1,j ), (1 + 2σ)u i,j σ(u i+1,j + u i 1,j ) u i,j 1 = 0 Ако се решава следећи проблем u t = u + F(x, t) x2 Тада је рекурентна формула облика u i,j+1 = (1 2σ)u ij + σ(u i+1,j + u i 1,j ) + lf ij Користи се оцена грешке u u T 4 (M 2 + 1 3 M 3) h 2 за σ = 1/2, односно u u T 72 (1 3 M 3 + 1 5 M 6) h 4 за σ = 1/6 где су M i = mx { i u t i }, i = 2,3, M i = mx { i u }, i = 4,6 xi
Пример: Решити следећи проблем u t = 2 u x 2 При ограничењима u(x, 0) = sin (πx), (0 x 1), u(0, t) = 0, u(1, t) = 1 (0 t 0.25). Узети да је σ = 0.5. Решење: Нека је h = 0.1. Потребно је одредити вредности функције u за x = ih, i = 0,1,2,,10. Како је σ = h2 = 0.5 следи да је l = 0.05 (t = lj, j = 0,1,2,3,4,5). Из услова следи да је u 0j = 0, u 10,j = 0, j = 0,1,..,5 (прва и последња колона) и u i,0 = sin(πx i ), i = 0,,10. (прва врста). За i = 1,10 i j = 1,4 користи се итеративна формула u i,j+1 = 1 2 (u i+1,j + u i 1,j ) l >> NumResvnjePrcijlnihJednProlickogTip u = 0 0.3090 0.5878 0.8090 0.9511 1.0000 0.9511 0.8090 0.5878 0.3090 0 0 0.2939 0.5590 0.7694 0.9045 0.9511 0.9045 0.7694 0.5590 0.2939 0 0 0.2795 0.5317 0.7318 0.8602 0.9045 0.8602 0.7318 0.5317 0.2795 0 0 0.2658 0.5056 0.6959 0.8181 0.8602 0.8181 0.6959 0.5056 0.2658 0 0 0.2528 0.4809 0.6619 0.7781 0.8181 0.7781 0.6619 0.4809 0.2528 0 0 0.2404 0.4574 0.6295 0.7400 0.7781 0.7400 0.6295 0.4574 0.2404 0 u_tcno = 0 0.2414 0.4593 0.6321 0.7431 0.7813 0.7431 0.6321 0.4593 0.2414 0.0000 rzlik = 0 0.0010 0.0019 0.0026 0.0031 0.0033 0.0031 0.0026 0.0019 0.0010 0.0000 Поређења ради, у последње две врсте налазе се тачне вредности функције u (x, t) = e π2t sin (πx) као и апсолутна разлика u u. Иначе, ако применимо оцену грешке, како је f (4) (x) = π 4 sin(πx), добија се да је М 1 = π 4, па је u u 0.025 3 π 4 h 2 = 0.0081. Ако погледамо последњи ред видећемо да грешка заиста јесте маља од 0,0081. NumResvnjePrcijlnihJednProlickogTip.m % Numericko resvnje prcijlnih jedncin prolickog tip % resvmo prolem olik % du/dt = d^2u/dx^2 + F(x,t) % u(x,o) = f(x) % u(0,t) = psi(t) % u(s,t) = ksi(t) % z x \in [0,1] i t \in (0,0.25] % Diskretizujemo zdtk s korcim h=0.1 i l=0.05 % h = 0.1; l = 0.005; f = @(x) sin(pi.*x); F = @(x,t) 0; psi = @(t) 0; ksi = @(t) 0; X = [0:h:1]; T = [0:l:0.025];
n = length(x); m = length(t); u = zeros(m,n); sigm = 0.5; for i = 1:n u(1,i)=f(x(i)); for j=1:m u(j,1) = psi(t(j)); for j = 1:m u(j,n) = ksi(t(j)); for j= 2:m for i = 2:n-1 u(j,i) = 1/2*(u(j-1,i+1)+u(j-1,i-1)); u utcno = @(x,t) exp(-pi^2.*t).*sin(pi.*x); u_tcno = utcno(x,0.025) rzlik = s(utcno(x,0.025)-u(6,:)); rzlik Пример за вежбу: Наћи приближно решење једначине u t = 2 u + 2x + t x2 При ограничењима u(x, 0) = sin (πx), (0 x 1), u(0, t) = 0, u(1, t) = 1 (0 t 0.25). Узети да су кораци h = 0.1 и l = 0.05.
Метода мреже за задатке хиперболичког типа Решавамо следећи проблем 2 u t 2 = 2 u 2 x 2 При ограничењима u(x, 0) = f(x), u t (x, 0) = Φ(x) (0 x s) и граничним условима u(0, t) = φ(t), u(s, t) = ψ(t). Дискретизујемо проблем на мрежи са корацима h и τ Увођењем смене τ = 2 t полазни проблем добија облик 2 u t 2 = 2 u x 2 Како је t 0 и 0 x s формирамо следећу мрежу: x = ih (i = 0,1,2, ), t = jl (j = 0,1,2,.. ) Узимајући да је x i = ih, t j = jl и u(x i, t j ) = u jt приближна вредност функције у унутрашњим чворовима полазни проблем се може дискретизовати на следећи начин u i,j+1 2u i,j + u i,j 1 l 2 = u i+1,j 2u i,j + u i 1,j h 2 Односно, означавајући са α = l/h ( α 1)добија се итеративна формула u i,j+1 = 2u ij u i,j 1 + α 2 (u i+1,j 2u ij + u i 1,j ) Користи се оцена грешке u u h2 [(M 12 4h + 2M 3 )T + T 2 M 4 ] где су M k = mx { k u t k, u k xk }, k = 3,4. За граничне услове користи се следећа апроскимација u i1 u i0 = Φ(x l i ) = Φ i где су за j = 0, j = 1 u i0 = f i и u i1 = f i + lφ i. Грешка рачуна не сме бити већа од u i1 u i1 αh 2 M 2 где је M 2 = mx { 2 u t 2, 2 u x 2 } Слично, за j = 0, j = 1 може да се користи и следећа апросксимација u i0 = f i и u i1 = 1 2 (f i 1 + f i+1 ) + lφ i. Грешка рачуна не сме бити већа од u i1 u i1 h4 M 12 4 + h3 M 6 3 где је M k = mx { k u t k, u k xk }, k = 3,4.
Пример: Решити следећи проблем 2 u t 2 = 2 u x 2 При ограничењима u(x, 0) = 0.2x(1 x) sin(πx), u t (x, 0) = 0, u(0, t) = 0, u(1, t) = 1. Решење: Нека је h = l = 0.05. Потребно је одредити вредности функције u за x = ih, t = jl, i, j = 0,1,2,,10. Из услова следи да је u i0 = f i, u i1 = 1 2 (f i+1 + f i 1 ) (прва и друга колона). Даље се користи рекурентна веза (α = 1) u i,j+1 = 2u ij u i,j 1 + α 2 (u i+1,j 2u ij + u i 1,j ) >> NumResvnjePrcijlnihJednHiperolickogTip u = 0 0.0015 0.0056 0.0116 0.0188 0.0265 0.0340 0.0405 0.0457 0.0489 0.0500 0 0.0028 0.0065 0.0122 0.0190 0.0264 0.0335 0.0398 0.0447 0.0478 0.0489 0 0.0050 0.0094 0.0140 0.0198 0.0261 0.0322 0.0377 0.0420 0.0447 0.0457 0 0.0066 0.0125 0.0170 0.0210 0.0256 0.0302 0.0344 0.0377 0.0398 0.0405 0 0.0075 0.0142 0.0195 0.0228 0.0252 0.0278 0.0302 0.0322 0.0335 0.0340 0 0.0076 0.0145 0.0200 0.0237 0.0250 0.0252 0.0256 0.0261 0.0264 0.0265 0 0.0070 0.0134 0.0187 0.0222 0.0237 0.0228 0.0210 0.0198 0.0190 0.0188 0 0.0058 0.0112 0.0156 0.0187 0.0200 0.0195 0.0170 0.0140 0.0122 0.0116 0 0.0042 0.0080 0.0112 0.0134 0.0145 0.0142 0.0125 0.0094 0.0065 0.0056 0 0.0022 0.0042 0.0058 0.0070 0.0076 0.0075 0.0066 0.0050 0.0028 0.0015 0-0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0 0.0000 0 0.0000 Будући да је решење симетрично за x (0.5,1) нисам штампала остале колоне. NumResvnjePrcijlnihJednHiperolickogTip.m % Numericko resvnje prcijlnih jedncin hiperolickog tip % resvmo prolem olik % d^2u/dt^2 = * d^2u/dx^2 (kd je =1) % u(x,o) = f(x) % u_t(x,0)=fi(x) % u(0,t) = psi(t) % u(s,t) = ksi(t) % z x \in [0,1] i t \in (0,0.5] % Diskretizujemo zdtk s korcim h=0.05 i l=0.05 % h = 0.05; l = 0.05; f = @(x) 0.2.*x.*(1-x).*sin(pi.*x); fi = @(x) 0; psi = @(t) 0; ksi = @(t) 0; X = [0:h:1]; T = [0:l:0.5]; n = length(x) m = length(t) u = zeros(m,n); for i = 1:n
u(1,i)=f(x(i)); for j=1:m u(j,1) = psi(t(j)); for j = 1:m u(j,n) = ksi(t(j)); for i = 2:n-1 u(2,i) = 1/2*(f(X(i+1))+f(X(i-1))); lph =1; for j = 2:m-1 for i = 2: n-1 u(j+1,i) = 2*u(j,i)-u(j-1,i)+lph*(u(j,i+1)-2*u(j,i)+u(j,i-1)); u(:,1:11) Пример за вежбу: Наћи приближно решење једначине 2 u t 2 = u x 2 При ограничењима u(x, 0) = x(π x), u t (x, 0) = 0, u(0, t) = u(π, t) = 0, (0 t 0.25). Узети да су кораци h = 0.1 и l = 0.05.
Метода Галеркина Решавамо следећи проблем y + p(x)y + q(x)y = Γ[y] α 0 y() + α 1 y () = Γ [y] β 0 y() + β 1 y() = Γ [y] Нека је на сегменту [, ] дат низ међусобно ортогоналних полинома u 0 (x), u 1 (x), u n (x), u i (x)u j (x)dx = 0, i j u 2 i (x)dx 0. За коначни скуп базисних функција {u i (x)} (i = 0,1,, n) треба да важи Γ [u o ] = A, Γ [u 0 ] = B док за u i (x), i = 1,2,, n важи Γ [u i ] = 0, Γ [u i ] = 0. Решење полазног проблема се сада може записати као y(x) = u(x 0 ) + n i=1 c i u i (x) где се коефицијенти c i oдређују тако да се за грешку R(x, c 1, c 2,, c n ) = L[u 0 ] + n c i L[u i ] f(x) минимизује вредност интеграла R 2 (x, c 1, c 2,, c n )dx. Дакле, коефицијенти c i се могу одредити као решење система Односно, као решење система n i=1 u k (x)r(x, c 1,, c n )dx = 0, k = 1,2,, n c i u k (x)l[u i ]dx i=1 = u k (x){f(x) L[u 0 ]}dx Пример 1: Методом Галеркина одредити решење следећег проблема y y cos(x) + ysin(x) = sin(x) При ограничењима y( π) = y(π) = 2 Решење: На посматраном сегменту ([ π, π]) систем ортогоналних полинома је следећег облика u 0 (x) = 2 u 1 (x) = sin(x) u 2 (x) = cos(x) + 1 u 3 (x) = sin(2x) u 4 (x) = cos(2x) 1 Стога решење датог проблема тражимо у облику y(x) = u 0 (x) + c 1 u 1 (x) + c 2 u 2 (x) + c 3 u 3 (x) + c 4 u 4 (x) L[u 0 ] = 2 sin(x) ( (2) (2) cos(x) + 2 sin(x) = 2 sin(x)) L[u 1 ] = sin(x) cos(2x) ((sin(x) (sin(x)) cos(x) + sin(x) sin(x) = sin(x) cos (2x)) L[u 2 ] = sin(x) cos(x) + sin(2x) L[u 3 ] = 1 2 cos(x) 4 sin(2x) 3 2 cos(3x) L[u 4 ] = 1 2 sin(x) 4 cos(2x) + 3 2 cos(3x) f(x) L[u 0 ] = sin(x) Обележимо са ik = u k (x)l[u i ]dx и са k = u k (x){f(x) L[u 0 ]}dx
Решавањем интеграла добија се π 1 = sin 2 (x)dx = π π 2 = 3 = 4 = 0 π 11 = sin 2 (x)dx = π π 12 = π, 13 = 0, 14 = π 2 Решавањем система добија се да је π 21 = 0, 22 = cos 2 (x)dx = π, 23 = π 2, 24 = 0 π π 31 = 0, 32 = sin 2 (x)dx = π, 33 = 4π, 34 = 0 π π 41 = cos 2 (x)dx = π, π c 1 c 2 + 0.5c 4 = 1 c 2 + 0.5c 3 = 0 c 2 4c 3 = 0 c 1 + 4c 4 = 0 42 = 0, 43 = 0, 44 = 4π y(x) = 2 + 8 7 sin(x) + 4 7 sin2 (x) (c 1 = 8 7, c 2 = c 3 = 0, c 4 = 2 7 ) Поређења ради, тачно решење је y(x) = e sin (x) + 1 Пример 2 (II начин решавања) Методом Галеркина одредити решење следећег проблема y + y + x = 0 При ограничењима y(0) = y(1) = 0 Решење: На посматраном сегменту орогонални полиноми су u 0 (x) = 0, u 1 (x) = x(1 x), u 2 (x) = x 2 (1 x). Дакле, решење проблема се тражи у облику y(x) = c 1 x(1 x) + c 2 x 2 (1 x) = x(1 x)(c 1 + c 2 x) За овако дефинисано решење и грешку R(x, c 1, c 2 ) = 2c 1 + c 2 (2 6x) + x(1 x)(c 1 + c 2 x) + x важи: 1 (x x 2 )R(x, c 1, c 2 )dx = 0 Решавањем интеграла добија се систем Чије решење је 0 1 (x 2 x 3 )R(x, c 1, c 2 )dx = 0 0 3 10 c 1 + 3 20 c 2 = 1 12 3 20 c 1 + 13 105 c 2 = 1 20
c 1 71 369 c 2 = 7 41 Дакле, приближно решење проблема је y(x) = x(1 x) ( 71 + 7 sin(x) x) док је тачно решење y(x) = x. 369 41 sin(1) Пример за вежбу Решити следећи проблем применом Галеркинове методе y y cos(x) + ysin(x) = cos(2x), y( π) = y(π) = 2 Метода колокације Слично као за методу Галеркина, решење проблема се тражи као линеарна комбинација полинома који су међусобно ортогонални у односу на задати сегмент [, ], y(x) = u(x 0 ) + n i=1 c i u i (x). Kоефицијенти c i oдређују се тако да се за грешку R(x, c 1, c 2,, c n ) = L[u 0 ] + n c i L[u i ] f(x) важи у тачкама колокације x k. R (x k, c 1, c 2,, c n )dx = 0 Пример Методом колокације одредити решење следећег проблема y + (1 + x 2 )y + 1 = 0 при ограничењима y( 1) = y(1) = 0 ако су тачке колокације x 0 = 0, x 1 = 1 2. Решење: На посматраном сегменту орогонални полиноми су u 0 (x) = 0, u 1 (x) = 1 x 2, u 2 (x) = x 2 (1 x 2 ). Дакле, решење проблема се тражи у облику y(x) = c 1 (1 x 2 ) + c 2 x 2 (1 x 2 ) За овако дефинисано решење и грешку R(x k, c 1, c 2 ) = 2c 1 + c 2 (2 12x 2 ) + (1 + x 2 )[c 1 (1 x 2 ) + c 2 (x 2 x 4 )] + 1 добија се систем R(x 0, c 1, c 2 ) = 1 c 1 + 2c 2 = 0 R(x 1, c 1, c 2 ) = 1 17 16 c 1 49 64 c 2 = 0 чије је решење c 1 = 0.957, c 2 = 0.0222. i=1 Пример за вежбу Методом колокације решити проблем y = 2x + y 2, y(0) = y(1) = 0 у тачкама колокације 0,25 и 0,75.
Поред описаних области на колоквијум долазе и Метода узастопних апроксимација и метода дегенерисаних језгра. Помоћ око извода и интеграла функција у Матлабу. Нека је f = @(x) sin (x). Треба да израчунамо f (x)f(x)dx Да би одредили други извод функције f најпре је преведемо на симболичку наредбом f2 = sym(f) потом са f2 = diff(diff(f2))) одредимо други извод функције f и онда је наредбом f2 = mtlfunction(f2) вратимо на облик који имају анонимне функције како би, даље, наредбом integrl(@(x)f2(x). f(x),, ) одредили вредност интеграла (на сегменту [,] ) производа две функције (f и f2).