Praktická cvičení z Numerické matematiky
Okrajová úloha pro ODR, speciálně Dirichletova okrajová podmínka
- Dirichletova okrajová úloha, p(x) = 1, q(x) = 0. Cely skript zde: bvp4odr.m
Dirichletovy okrajové podmínky: y(a) = Ya, y(b) = Yb
n = 20; a = 0; b = 1; h = (b - a) / n; Ya = 0; Yb = 0; % okrajova podminka x = (a:h:b)'; x0 = x(2:end-1); x2 = (x(1:end-1) + x(2:end)) / 2.; A = diag(ones(n - 1, 1) * 2); A = A - diag(ones(n - 2, 1), -1); A = A - diag(ones(n - 2, 1), 1); fx = exp(-(x0 - 0.4).^2); B = h * h * fx; B(1) = B(1) + Ya; B(end) = B(end) + Yb; Y = A \ B; Y = [Ya; Y; Yb];
Dirichletova okrajová podmínka v x = a: y(a) = Ya
Sturmova okrajová podmínka v x = b: beta1 y'(b) + beta2 y(b) = beta2 Yb, :
Aproximace (beta1 + beta2 * h) y(b) - beta1 * y(b - h) = h beta2 Yb:
n = 20; a = 0; b = 1; h = (b - a) / n; Ya = 0; Yb = 0; % okrajova podminka x = (a:h:b)'; x0 = x(2:end-1); x2 = (x(1:end-1) + x(2:end)) / 2.; A = diag(ones(n - 1, 1) * 2); A = A - diag(ones(n - 2, 1), -1); A = A - diag(ones(n - 2, 1), 1); % Sturmova okrajova podminka: A(n, n) = beta1 + beta2 * h; A(n, n - 1) = beta1; fx = exp(-(x0 - 0.4).^2); B = h * h * fx; B(1) = B(1) + Ya; B(end + 1) = h * beta2 * Yb; Y = A \ B; Y = [Ya; Y];
n = 10; a = 0; b = 1; h = (b - a) / 10; Ya = 0; Yb = -0.1; % okrajova podminka x = (a:h:b)'; x0 = x(2:end-1); x2 = (x(1:end-1) + x(2:end)) / 2.; px2 = 1 + x2.^2; % p(x) qx = 0 * x0; %0.1 + 0 * x0.^2; % q(x) fx = sin(x0 * pi); % f(x) A = diag(px2(1:end-1) + px2(2:end) + h * h * qx); A = A - diag(px2(2:end-1), -1); A = A - diag(px2(2:end-1), 1); B = h * h * fx; B(1) = B(1) + px2(1) * Ya; B(end) = B(end) + px2(end) * Yb; Y = A \ B; Y = [Ya; Y; Yb];