Numeriska metoder för differentialekvationer

Numeriska metoder f¨
or differentialekvationer
Grundl¨
aggande begrepp
Den enklaste formen f¨or en differentialekvation av f¨orsta ordningen ¨ar
y 0 = h(x).
(1)
En s˚
adan ekvation kan l¨osas direkt. Om
H(x) =
Z
h(x)dx [H 0 (x) = h(x)]
¨ar en primitiv till h(x) s˚
a ¨ar ju
y(x) = H(x) + C
den alm¨anna l¨osningen till (1). Konstanten C best¨ams av n˚
agot begynnelsevillkor.
En linj¨ar differentialekvation av f¨orsta ordningen ¨ar
L(y) ≡ y 0 + g(x)y = h(x).
(2)
H¨ar ¨ar g och h givna kontinuerliga funktioner i ett ¨oppet intervall p˚
a reela axeln x. L kallas
en linj¨
ar differentialoperator (av f¨orsta ordningen) eftersom
L(y1 + y2 ) = (y1 + y2 )0 + g(x)(y1 + y2 ) = y10 + y20 + g(x)y1 + g(x)y2 = L(y1 ) + L(y2 ).
L(αy) = (αy)0 + g(x)(αy) = αy 0 + αg(x)y = αL(y)
och
L(αy1 + βy2 ) = αL(y1 ) + βL(y2 ).
(3)
Om y1 och y2 l¨oser de tv˚
a ekvationerna
L(y) = h1 (x)
respektive
L(y) = h2 (x)
s˚
a l¨oser y1 + y2 ekvationen
L(y) = h1 (x) + h2 (x)
och αy1 l¨oser ekvationen
L(y) = αh1 (x).
Detta kallas superpositionprincipen.
En differentialekvation av f¨orsta ordningen s¨ages vara separabel eller ha separabla variabler
om den kan skrivas p˚
a formen
g(y)y 0 = h(x).
1
(4)
En s˚
adan ekvation kan l¨osas direkt. Betrakta t ex begynnelsev¨
ardesproblemet
(
√
= −k y,
y(0) = h,
dy
dt
y = y(t), t > 0,
Differentialekvationen kan skrivas som
1 dy
= −k
√
y dt
(y > 0).
(5)
Den har separabla variabler. Vi har
d √
1
(2 y) = √ :
dy
y
1 dy
d q
(2 y(t)) = √
,
dt
y dt
(6)
vilket betyder att differentialekvationen kan skrivas som
d √
(2 y) = −k
dt
Detta ¨ar ekvivalent med
√
2 y=
(7)
Z
(−k)dt = −kt + C
√
Begynnelsev¨ardet y(0) = h ger att C = 2 h och allts˚
a
√
y=
√
−k
t+ h
2
(8)
I detta fall kan vi enkla l¨osa y genom kvadrering:
y=
!2
√
−k
t+ h
2
.
(9)
En linj¨ar differentialekvation av andra ordningen ¨ar
M (y) ≡ y 00 + a(x)y 0 + b(x)y = h(x).
(10)
H¨ar ¨ar a, b och h givna kontinuerliga funktioner. M kallas en linj¨ar differentialoperator (av
andra ordningen) eftersom M satisfierar (3).
Ekvationen
y 00 + a(x)y 0 + b(x)y = 0
(11)
kallas den till (10) h¨orande homogena ekvationen. (10) kallas inhomogena ekvationen
L˚
at yp vara en given l¨osning till (10). D˚
a ¨ar funktionen y l¨osning till (10) om och endast
om y ¨ar av formen
y = yh + yp ,
d¨ar funktionen yh ¨ar en l¨osning till motsvarande homogena ekvationen (11). L¨osningen yp kallas
partikul¨
arl¨osning.
Betrakta ekvationen
y 00 + ay 0 + by = 0
2
(12)
med konstanta (komplexa) koefficienterna a och b. L¨osningen till homogena ekvationen (12) ¨ar
av formen
y = C1 er1 x + C2 er2 x ,
r1 6= r2 ,
(13)
r1 = r2 = r,
(14)
eller
y = (C1 + C2 x)erx ,
d¨ar r1 och r2 ¨ar nollst¨allena till motsvarande karakteristiska polynomet
r2 + ar + b.
(15)
y 00 − 4y 0 + 3y = 0
(16)
r2 − 4r + 3
(17)
Exempel 1
Ekvationen
har karakteristiska polynomet
med nollst¨allena r1 = 1 och r2 = 3. Den fullst¨andiga l¨osningen till homogena ekvationen (16)
¨ar
y = C1 ex + C2 e3x .
(18)
y 00 + y = 0
(19)
r2 + 1
(20)
Ekvationen
har karakteristiska polynomet
med komplexa nollst¨allena r1 = i och r2 = −i. Den fullst¨andiga l¨osningen till (19) ¨ar
y = C1 eix + C2 e−ix = C1 cos x + iC1 sin x + C2 cos x − iC2 sin x = C˜1 cos x + C˜2 sin x.
(21)
Randv¨ardesproblemet f¨or linj¨ara differentialekvationen av andra ordningen y 00 + q(x)y = 0
skrivas som
(
y 00 + q(x)y = 0, y = y(x), a < x < b,
y(a) = y0 , y(b) = y1 ,
(22)
d¨ar q(x) ¨ar en given kontinuerlig funktion.
F¨or randv¨ardesproblem med icke-konstant koefficienten q m˚
aste man i allm¨anhet ber¨akna
en approximativ l¨osning.
3
Ibland kan man l¨osa (22) genom att hitta en partikul¨arl¨osning till ekvationen y 00 + q(x)y = 0
f¨or vissa funktioner q(x). Tydligen, ett par {y(x), q(x)} s˚
adant att
{y(x) = g(x),
q(x) = −
g 00 (x)
[g(x) 6= 0, a ≤ x ≤ b]}
g(x)
(23)
l¨oser y 00 + q(x)y = 0 och randv¨ardesproblemet (22) om g(x) satisfierar randvilkoren g(a) =
y0 , g(b) = y1 .
Exempel 2
L˚
at y(x) = P2 (x) = p0 x2 + p1 x + p2 vara ett polynom av andra ordningen. D˚
a l¨oser paret
{y(x) = p0 x2 + p1 x + p2 ,
q(x) = −
p0
x2
2p0
[P2 (x) 6= 0, a ≤ x ≤ b]}
+ p1 x + p2
(24)
ekvationen y 00 + q(x)y = 0. Satisfiera randvillkoren
p0 a2 + p1 a + p2 = y0 ,
p0 b2 + p1 b + p2 = y1
Det ¨ar ett underbest¨amt ekvationssystem eftersom a, b, y0 och y1 ¨ar givna tal (indata) och
antalet ekvationer (tv˚
a) ¨ar mindre ¨an antalet obekanta p0 , p1 , p2 . D˚
a f˚
ar man



p0 =
p1 =


p2 =
var,
− p0 (b + a),
y0 − p1 a − p0 a2 ,
y1 −y0
b−a
Om y0 = y1 och a = 0, d˚
a f˚
ar man



p0 = var,
p = −p0 b,
 1

p2 = y0 ,
och polynomet (l¨osningen) y(x) = P2 (x) = p0 x2 − p0 bx + y0 = p0 x(x − b) + y0 .
Randv¨
ardesproblemet f¨
or v¨
armekvationen
Antag att vi har en stav av l¨angden L med konstant v¨armeledningsf¨orm˚
aga. Antag vidare
att staven ¨ar isolerad i l¨angriktingen och att ¨andarna h˚
als vid konstant temperatur 0. L˚
at
u = u(x, t) beteckna stavens temperatur i punkten x, 0 < x < L, och tidpunkten t ≥ 0. D˚
a
satisfierar u = u(x, t) randv¨ardesproblemet f¨or en-dimensionella v¨
armekvationen
(
ut = c2 uxx , u = u(x, t), t > 0, 0 < x < L,
u(x, 0) = f (x), u(0, t) = 0,
u(L, t) = 0, t ≥ 0.
(25)
d¨ar c = const och f (x) ¨ar begynnelsetemperatur; de f¨orsta och andra partiella derivatorna
ut =
∂u
,
∂t
uxx =
∂ 2u
.
∂x2
Vi s¨oker en l¨osning till randv¨ardesproblemet (25) i formen
u(x, t) = F (x)G(t);
4
dvs vi g¨or det med hj¨alp av Fouriermetod och variabelseparation.
Ins¨attning av ansatsen
∂u
∂ 2u
= F G0 ,
= F 00 G
∂t
∂x2
i v¨armekvationen ut = c2 uxx ger ekvationen
F G0 = c2 F 00 G,
som har separabla variabler x och t och skrivas p˚
a formen
G0
F 00
=
= const = −p2 ,
c2 G
F
och vi f˚
ar differentialekvationer f¨or G(t) och F (x)
G0 + c2 p2 G = 0,
F 00 + p2 F = 0.
Satisfiera randvillkoren:
u(0, t) = F (0)G(t) = 0,
u(L, t) = F (L)G(t) = 0, t ≥ 0.
Det g¨aller
F (0) = 0,
F (L) = 0.
Den fullst¨andiga l¨osningen till ordin¨ara differentialekvationen av andra ordningen f¨or F ¨ar
F = A cos px + B sin px.
D˚
a kan man anv¨anda randvillkoren i (25) och skriva ekvationer f¨or att f˚
a A, B och p
F (0) = 0 :
A = 0;
F (L) = 0 :
B sin pL = 0
sin pL = 0 (B 6= 0),
nπ
pL = nπ, p = pn =
(n = 1, 2, . . .).
L
nπ
F = Fn = sin pn x = sin
x (n = 1, 2, . . .).
L
F¨or G f˚
ar vi en ordin¨ar differentialekvation av f¨orsta ordningen
G0 + λ2n G = 0,
λn =
cnπ
.
L
Den fullst¨andiga l¨osningen blir
2
G(t) = Gn (t) = Bn e−λn t
(n = 1, 2, . . .).
Nu kan man skriva en l¨osning u = un = un (x, t) till ekvationen
∂u
∂ 2u
= c2 2 , 0 < x < L
∂t
∂x
5
som satisfierar randvillkoren
u(0, t) = 0,
u(L, t) = 0, t ≥ 0,
2
un (x, t) = Fn (x)Gn (t) = Bn e−λn t sin
nπ
x (n = 1, 2, . . .).
L
un (x, t) kallas egenfunktioner och talen
cnπ
L
λn =
kallas egenv¨arden.
Nu kan man l¨osa randv¨ardesproblemet (25) genom att skriva
u(x, t) =
∞
X
un (x, t) =
n=1
∞
X
2
Bn e−λn t sin
n=1
nπ
x.
L
F¨or att f˚
a obekanta koefficienterna Bn , satisfierar man begynnelsevillkoren
u(x, 0) =
∞
X
Bn sin
n=1
nπ
x = f (x).
L
D˚
a
2ZL
nπ
f (x) sin
xdx,
L 0
L
blir Fourierskoefficienterna till funktionen f (x).
Bn =
n = 1, 2, . . . ,
Exempel 3 Sinus-begynnelsetemperatur
L¨os randv¨ardesproblemet (25) med sinus-begynnelsetemperatur
f (x) = 100 sin
π
x.
80
L¨
osning. Satisfiera begynnelsevillkoren
u(x, 0) =
∞
X
Bn sin
n=1
nπ
π
x = f (x) = 100 sin x.
80
80
λn = λ1 =
cπ
.
80
D˚
a blir l¨osningen
u(x, t) =
∞
X
2
un (x, t) = B1 e−λ1 t sin
n=1
π
π
2
x = 100e−λ1 t sin x.
80
80
Exempel 4 Triangel-begynnelsetemperatur
L¨os randv¨ardesproblemet (25) med triangel-begynnelsetemperatur
f (x) =
(
x
if 0 < x < L/2,
L − x if L/2 < x < L.
6
L¨
osning. Satisfiera begynnelsevillkoren
u(x, 0) =
∞
X
Bn sin
n=1
nπ
x = f (x).
L
Fourierkoefficienterna till en udda-periodisk f (x) [f (−x) = −f (x)] ¨ar
!
Z L
2ZL
nπ
2 Z L/2
nπ
nπ
xdx =
xdx +
(L − x) sin
xdx =
Bn =
f (x) sin
x sin
L 0
L
L 0
L
L
L/2
2
2 Z L/2
nπ L/2
nπ
− x cos
x +
cos
xdx−
nπ
L 0
nπ 0
L
2 ZL
nπ
2
nπ L
− (L − x) cos
x −
cos
xdx =
nπ
L L/2 nπ L/2
L
−
L
nπ
2L
nπ
L
nπ
2L
nπ
cos
+ 2 2 sin
+
cos
+ 2 2 sin
=
πn
2
π n
2
πn
2
π n
2
(26)
4L
nπ
sin
=
n2 π 2
2
4L
4 (−1)l+1
l+1
(−1)
=
=
(2l − 1)2 π 2
π (2l − 1)2
(
4L
n2 π 2
− n4L
2 π2
if n = 1, 5, 9, . . .,
if n = 3, 7, 11, . . ..
Vi f˚
ar egenv¨ardena
λn =
cnπ
,
L
och l¨osningen
u(x, t) =
∞
X
un (x, t) =
n=1
cπ 2
3cπ 2
π
3π
4L
1
sin xe−( L ) t − sin xe−( L ) t + . . . .
2
π
L
9
L
Numerisk l¨
osning till en-dimensionella v¨
armekvationen i MATLAB
Vi ska skapa MATLABsatser som l¨oser randv¨ardesproblemet (25). Skriv en-dimensionella
v¨armekvationen som
K
∂u
∂ 2u
=
,
2
∂x
∂t
K = c2 , t > 0, 0 < x < L.
u = u(x, t),
7
F¨or att approximera funktionen u(x, t), x ∈ [0, L], t ∈ [0, T ], och v¨armekvationen och l¨osa (25)
numeriskt genom att ers¨atta den med en differensapproximation delar man in intervallet [0, L] i
n (mindre) intervall och intervallet [0, T ] i m intervall genom att ber¨akna funktionen f¨or (n − 1)
L
och (m − 1) stycken x- och t-v¨arden xi = ih och t = jk likformigt f¨ordelade med avst˚
and h =
n
T
och k = :
m
xi = ih,
h=
L
,
n
i = 0, 1, 2 . . . , n − 1, n,
(27)
x0 = 0 < x1 < x2 < . . . < xn−1 < xn = L.
(28)
tj = jk,
j = 0, 1, 2 . . . , m − 1, m,
k=
T
.
m
(29)
Nu kan vi approximera v¨armekvationen med differenserna
ui−1,j+1 − 2ui,j+1 + ui+1,j+1
K
h2
−ui,j + ui,j+1
=
.
k
(30)
d¨ar ui,j (i = 0, 1, 2, . . . , n − 1 j = 0, 1, 2, . . . , m − 1) ¨ar obekanta [approximationen till u(xi , tj )].
D˚
a skrivas (30) som
(1 + 2α)ui,j+1 − α(ui+,j+1 + ui−1,j+1 ) = ui,j ,
i = 0, 1, . . . , n,
j = 0, 1, . . . ,
α = Kk/h2 .(31)
(31) skrivas som ett ekvationssystemet med symmetriska trediagonala matrisen A















b −α 0 . . . 0
−α b −α . . . 0
0 −α b . . . 0
.
.
. ... .
.
.
. ... .
.
.
. ... .
0
0
0 . . . −α
0
0
0 ... b















u1,j+1
u2,j+1
u3,j+1
.
.
.
un−2,j+1
un−1,j+1
















=














u1,j+1 + αu0
u2,j
u3,j
.
.
.
un−2,j
un−1,j + αun















(32)
d¨ar
u0 = u(0, t) = lowb = 0,
un = u(L, t) = hib = 0.
L¨osningen till systemet (32) ger u1 , u2 , . . ., un−1 i tidpunkten tj+1 genom u1 , u2 , . . ., un−1 i
tidpunkten tj (t0 = 0, j = 0, 1, 2, . . .). Man skapar begynnelsetemperatur f (x) som en (n + 1)dimensionell radvektor
f = [f (xi )] = [f (x0 ) = lowb = 0, f (x1 ), . . . , f (xn−1 ), f (xn ) = hib = 0].
MATLABfunktionen
heat
utf¨or den h¨ar metoden som kallas implicit difference solution.
function u = heat(nx,hx,nt,ht,init,lowb,hib,K)
%nx, hx are the number and size of the x-grid sections, index i (nx ¿ 2)
%nt, ht are the number and size of the t-grid sections, index j (nt ¿ 2)
%init is a row vector of nx + 1 initial values of function f(x)
8
%lowb, hib are boundaries at low and high values of x at the ends of x interval
%solution u is determined as an (nt + 1 x nx + 1) matrix
alpha = K∗ht/(hx∗hx);
a = zeros(nx - 1, nx - 1); u = zeros(nt + 1, nx + 1);
u(:,1) = lowb∗ones(nt + 1, 1);
%the first column of solution matrix u consisting of nt+1 elts. is set
u(:,nx + 1) = hib∗ones(nt + 1, 1);
%the last column of solution matrix u consisting of nt+1 elts. is set
u(1,:) = init;
%the first row of solution matrix u consisting of nx+1 elts. is set equal to initial row data
vector init
%start formation of tri-diagonal matrix a of the equation system
a(1,1) = 1 + 2∗alpha; a(1,2) = -alpha;
for i = 2:nx-2
a(i,i) = 1 + 2∗alpha; a(i,i-1) = -alpha; a(i,i+1) = -alpha;
end
a(nx-1,nx-2) = -alpha; a(nx-1,nx-1) = 1 + 2∗alpha;
%tri-diagonal matrix a is formed
%start formation of right-hand side column vector bb of the equation system
bb(1,1) = init(2) + init(1)∗alpha;
for i = 2:nx-2, bb(i,1) = init(i+1); end
bb(nx-1,1) = init(nx) + init(nx+1)∗alpha;
%right-hand side column vector bb of the equation system is formed
[L,U] = lu(a);
%the equation system is prepared for solution
for j = 2:nt+1
y=L\bb; x=U\y;
%the equation system is solved at the current time step in index j
u(j,2:nx) = x’; bb = x;
bb(1,1) = bb(1,1) + lowb∗alpha;
bb(nx-1,1) = bb(nx-1,1) + hib∗alpha;
%the right-hand side of the equation system is prepared for solution at the next step in j
end
%the solution is determined as an (nt + 1 x nx + 1) matrix u
Exempel 5
Ber¨akna temperatur i en tegelsten v¨agg med K = 5 · 10−7 m2 /s, L = 0.3 m och begynnelsetemperatur 100 deg C. Antag att v¨aggs¨andarna h˚
als vid konstant temperatur 20 deg C. Vi vill rita
v¨aggstemperatur under 22000 sekunder (366.67 min), tidintervallet k ¨ar lika med 440 sec (7.33
min); d˚
a blir det 50 t-tidintervall.
Vi ska anv¨anda 15 x-intervall. D˚
a, hx = 0.02, ht = 440, och
α = Kk/h2 = 5 · 10−7 · 440 · (0.3/15)−1 ≈ 0.55.
Anv¨and MATLABfunktionen heat och skriv MATLABsatser som utf¨or
l¨osa motsvarande randv¨ardesproblemet (25).
9
heat f¨or att
K=5e-7; hx=0.02; nx=15; hx=0.02; ht=440; nt=50;
init = 100∗ones(1,nx + 1);
lowb = 20; hib = 20;
%the initial data are set
u = heat(nx,hx,nt,nt,init,lowb,hib,K);
%the solution is determined as (nt + 1 x nx + 1) = (51 x 16) matrix u
surfl(u)
axis([0 16 0 50 0 120])
view([-217 30])
xlabel(’x - node nos.’); ylabel(’time - node nos.’);
zlabel(’temperature’);
Problem 1. Kalla v¨
aggs¨
andarna
Ber¨akna temperatur i en tegelsten v¨agg med K = 5 · 10−7 m2 /s, L = 0.3 m och begynnelsetemperatur 100 deg C. Anv¨and MATLABfunktionen heat och skriv MATLABsatser som utf¨or
heat f¨or att l¨osa motsvarande randv¨ardesproblemet (25). Antag att v¨aggs¨andarna h˚
als vid
konstant temperatur 0 deg C.
Problem 2. K¨
allasmodell
Anv¨and MATLABfunktionen heat och skriv MATLABsatser som utf¨or heat f¨or att l¨osa
motsvarande randv¨ardesproblemet (25). som ber¨aknar temperatur i en tegelsten v¨agg med
K = 5 · 10−7 m2 /s, L = 0.3 m och begynnelsetemperatur 100 deg C; valj Tns = Tsource 6= 100,
d¨ar 1 < ns < nx.
Randv¨
ardesproblemet f¨
or den tv˚
a-dimensionella hyperboliska ekvationen
Antag att vi har en rektangul¨ar platta av l¨angden a och bredden b. Antag vidare att
plattens sidor h˚
als fast (or¨orlig). L˚
at u = u(x, y, t) beteckna h¨ojden av plattens sm˚
a vertikala
vibrationer i punkten (x, y), 0 < x < a, 0 < y < b, och tidpunkten t ≥ 0. D˚
a satisfierar
u = u(x, y, t) randv¨ardesproblemet f¨or tv˚
a-dimensionella hyperboliska ekvationen








H¨ar,







utt = c2 ∆u, u = u(x, y, t), t > 0, 0 < x < a, 0 < y < b,
u(x, y, 0) = ϕ(x, y)
ut (x, y, 0) = ψ(x, y)
u(0, y, t) = 0,
u(a, y, t) = 0,
u(x, 0, t) = 0,
u(x, b, t) = 0, t ≥ 0.
utt =
∂ 2u
,
∂t2
∆u =
(33)
∂ 2u ∂ 2u
+
.
∂x2 ∂y 2
och ϕ(x, y) och ψ(x, y) ¨ar givna funktioner som definierar begynnelsepositionen och begynnelsehastigheten i punkten (x, y).
Vi s¨oker en l¨osning till randv¨ardesproblemet (33) i formen
u(x, y, t) = v(x, y)T (t);
10
dvs vi g¨or det med hj¨alp av Fouriermetod och variabelseparation. Ins¨attning av ansatsen
u(x, y, t) = v(x, y)T (t)
ger ekvationen f¨or T
T 00 + a2 λT = 0
,
och ekvationen samst randv¨ardesproblemet f¨or v(x, y)



vxx + vyy + λv = 0, 0 < x < a, 0 < y < b
v(0, y) = 0,
v(a, y) = 0


v(x, 0) = 0,
v(x, b) = 0
(34)
Vi ska ocks˚
a s¨oka en l¨osning till randv¨ardesproblemet (34) i formen med separabla variabler
v(x, y) = X(x)Y (y).
Ins¨attning av den h¨ar ansatsen i (34) ger ekvationer och randv¨ardesproblem f¨or X(x) och Y (y)
(
X 00 + νX = 0, 0 < x < a
X(0) = 0,
X(a) = 0
(35)
(
Y 00 + µY = 0, 0 < y < b
Y (0) = 0,
Y (b) = 0
(36)
H¨ar µ och ν ¨ar parameter (tal) s˚
adana att µ + ν = λ.
Randv¨ardesproblemen (35) och (36) kallas Sturm–Liouville eigenv¨
ardesproblem.
Vi har
nπ
nπ
X(x) = Xn (x) = sin
x,
νn = ( )2 ;
a
a
mπ 2
mπ
y,
µm = (
).
Y (y) = Ym (y) = sin
b
b
λ=(
nπ 2
mπ 2
) +(
)
a
b
vn,m = An,m sin
nπ
mπ
x sin
y.
a
b
Koefficienterna An,m f˚
ar man genom att anv¨anda ortogonalitetsvillkor
Z aZ b
0
0
2
dxdy = A2n,m
vn,m
Z a
sin2
0
D˚
a
An,m =
och
vn,m (x, y) =
s
Z b
nπ
mπ
xdx
sin2
ydy = 1.
a
b
0
s
4
,
ab
4
nπ
mπ
sin
x sin
y.
ab
a
b
11
L¨osningen till (33) ¨ar
u(x, y, t) =
∞ X
∞
X
q
q
(Cn,m cos λn,m at + Dn,m sin λn,m at)vn,m (x, y),
m=1 n=1
d¨ar
Cn,m =
Z aZ b
0
=
s0
4 Z aZ b
nπ
mπ
ϕ(x, y) sin
x sin
ydxdy,
ab 0 0
a
b
1
Dn,m = q
ϕ(x, y)vn,m (x, y)dxdy =
a2 λn,m
s
4 Z aZ b
nπ
mπ
ψ(x, y) sin
x sin
ydxdy.
ab 0 0
a
b
Randv¨
ardesproblemet f¨
or tv˚
a-dimensionella v¨
armekvationen
Antag att vi har en rektangul¨ar platta av l¨angden a och bredden b med konstant v¨arme
ledningsf¨orm˚
aga. Antag vidare att platten ¨ar isolerad och att sidorna h˚
als vid konstant temperatur 0. L˚
at u = u(x, y, t) beteckna plattens temperatur i punkten (x, y), 0 < x < a, 0 < y < b,
och tidpunkten t ≥ 0. D˚
a satisfierar u = u(x, y, t) randv¨ardesproblemet f¨or tv˚
a-dimensionella
v¨
armekvationen





H¨ar,
ut = c2 ∆u, u = u(x, y, t), t > 0, 0 < x < a, 0 < y < b,
u(x, y, 0) = ϕ(x, y),

u(0, y, t) = 0,
u(a, y, t) = 0,



u(x, 0, t) = 0,
u(x, b, t) = 0, t ≥ 0.
ut =
∂u
,
∂t
∆u =
(37)
∂ 2u ∂ 2u
+
,
∂x2 ∂y 2
och ϕ(x, y) ¨ar en given funktion som definierar begynnelsetemperatur i punkten (x, y).
Problem 3
L¨os randv¨ardesproblemet (25) f¨or en-dimensionella v¨armekvationen med givet c och begynnelsetemperatur
f (x) = sin 0.1πx.
L¨
osning. Vi har
f (x) = sin 0.1πx = sin
π
x.
10
D˚
a L = 10. Satisfiera begynnelsevillkoren
u(x, 0) =
∞
X
n=1
Bn sin
nπ
x = f (x) = sin 0.1πx.
L
λn = λ1 =
12
cπ
.
10
Nu kan man f˚
a l¨osningen
u(x, t) =
∞
X
2
un (x, t) = B1 e−λ1 t sin
n=1
π
π
2
x = e−λ1 t sin x.
10
10
Randv¨
ardesproblemet f¨
or stationera tv˚
a-dimensionella v¨
armekvationen
Antag att vi har en rektangul¨ar platta av l¨angden a och bredden b med konstant v¨armelednings
f¨orm˚
aga. Antag vidare att platten ¨ar isolerad och att sidorna h˚
als vid konstant eller ickekonstant temperatur som beskrivas med fyra givna funktioner f1 (y), f2 (y), 0 < y < b, och f3 (x),
f4 (x), 0 < x < a. L˚
at u = u(x, y, t) beteckna plattens temperatur i punkten (x, y), 0 < x < a,
0 < y < b, och tidpunkten t ≥ 0. Om f¨ors¨oket p˚
ag˚
at l¨ange kommer plattens temperatur att
vara stationar, dvs oberoende av tiden. D˚
a satisfierar u = u(x, y) randv¨ardesproblemet f¨or
tv˚
a-dimensionella Laplace ekvationen i rektangeln med h¨ornen i punkterna (0, 0), (a, 0), (a, b)
och (0, b):



∆u = 0, u = u(x, y), 0 < x < a, 0 < y < b,
u(0, y) = f1 (y),
u(a, y) = f2 (y),


u(x, 0) = f3 (x),
u(x, b) = f4 (x).
(38)
L¨agg m¨arke till att motsvarande homogena randv¨ardesproblemet



∆u = 0, u = u(x, y), 0 < x < a, 0 < y < b,
u(0, y) = 0,
u(a, y) = 0,


u(x, 0) = 0,
u(x, b) = 0
(39)
har triviala l¨osningen.
Numerisk l¨
osning till Laplace ekvationen i en rektangel
Skriv MATLABfunktionen ellipgen som utf¨or numerisk l¨osning till randv¨ardesproblemet
(38) i rektangeln med h¨ornen i punkterna (x0,y0), (xn,y0), (xn,yn), (x0,yn).
function [a,om] = ellipgen(nx,hx,ny,hy,bx0,bxn,by0,byn)
%nx, hx are the number and size of the x-grid sections
%ny, hy are the number and size of the y-grid sections
%bx0, bxn are vector of boundary conditions at x0, xn, with (ny+1) elements each,
%beginning at y0 and corresponding to f1 (y), f2 (y)
%by0, byn are vector of boundary conditions at y0, yn, with (nx+1) elements each
%beginning at x0 and corresponding to f3 (x), f4 (x)
%solution is determined as an (ny + 1 x nx + 1) matrix a
nmax = (nx - 1)∗(ny - 1); r=hy/hx;
a = zeros(ny+1, nx+1); p = zeros(ny + 1, nx + 1);
gg = zeros(ny+1, nx+1); ff = zeros(ny+1, nx+1);
test = 1;
if bx0 == zeros(1, ny + 1), test = test + 1; end
if bxn == zeros(1, ny + 1), test = test + 1; end
if by0 == zeros(1, nx + 1), test = test + 1; end
13
if byn == zeros(1, nx + 1), test = test + 1; end
if test == 5
disp(’WARNING – problem has trivial solution, z = 0.’)
break
end
bx0 = bx0(1, ny+1:-1:1); bxn = bxn(1, ny+1:-1:1);
a(1,:) = byn; a(ny+1,:) = by0;
a(:,1) = bx0’; a(:,nx+1) = bxn’;
for i = 2:ny
for j = 2:nx
nn = (i - 2)∗(nx - 1) + (j - 1);
q(nn,1) = i; q(nn,2) = j; p(i,j) = nn;
end
end
c = zeros(nmax, nmax); e = zeros(nmax, 1); om = zeros(nmax, 1);
g = zeros(nmax, 1);
for i = 2:ny
for j = 2:nx
nn = p(i,j); c(nn,nn)=-(2+2∗r∗r); e(nn) = hy∗hy∗gg(i,j);
g(nn) = g(nn) + hy∗hy∗ff(i,j);
if p(i+1,j)∼=0
np=p(i+1,j); c(nn,np)=1;
else
g(nn) = g(nn) - by0(j);
end
if p(i-1,j)∼=0
np=p(i-1,j); c(nn,np)=1;
else
g(nn) = g(nn) - byn(j);
end
if p(i,j+1)∼=0
np=p(i,j+1); c(nn,np)=r∗r;
else
g(nn) = g(nn) - r∗r∗bxn(i);
end
if p(i,j-1)∼=0
np=p(i,j-1); c(nn,np)=r∗r;
else
g(nn) = g(nn) - r∗r∗bx0(i);
end
end
end
c = c + diag(e); z=c\g;
for nn = 1:nmax
i=q(nn,1); j=q(nn,21);
a(i,j) = z(nn);
end
14
Exempel 6
Ber¨akna temperaturen i en rektangul¨ar platta med konstant v¨armelednings
f¨orm˚
aga. Platten ¨ar isolerad och sidorna h˚
als vid konstant eller icke-konstant temperatur
som beskrivas med fyra givna radvektorer bx0, bxn, by0, byn. I kommandofilen utnyttjar vi
ellipgen med 6 punkter p˚
a varje sida och ritar contour plots:
nx=6; ny=6; hx=0.5; hy = 0.3333;
bx0 = [0 33.33 66.67 100 133.33 166.67 200];
bxn = [0 83.33 166.67 250 333.33 416.67 500];
by0 = [0 0 0 0 0 0 0];
byn = [200 208.33 233.33 275 333.33 408.33 500];
a = ellipgen(nx,hx,ny,hy,bx0,bxn,by0,byn);
aa = flipud(a);
contour(aa)
xlabel(’node numbers in x direction’);
ylabel(’node numbers in y direction’);
Exempel 7. K¨
allasmodell
Nu ritar vi temperaturen i en rektangul¨ar platta n¨ar sidorna h˚
als vid icke-konstant temperatur
som beskrivas med 21-dimensionella radvektorer bx0, bxn, by0, byn.
nx=20; ny=20;
hx=1/20; hy = 1/20;
bx0 = [0 0 0 0.01 0 0 0 0 0 0 0.01 0 0 0 0 0 0 0.01 0 0 0];
bxn = [0 0 0 0.01 0 0 0 0 0 0 0.01 0 0 0 0 0 0 0.01 0 0 0];
by0 = [0 0 0 0.1 0 0 0 0 0 0 0.1 0 0 0 0 0 0 0.01 0 0 0];
byn = [0 0 0 0 0 0 0 0 0 0 0.01 0 0 0 0 0 0 0.01 0 0 0];
a = ellipgen(nx,hx,ny,hy,bx0,bxn,by0,byn);
surfl(a)
axis([1 20 1 20 0 0.2])
xlabel(’x-node nos.’);
ylabel(’y-node nos.’);
zlabel(’Temperature’);
Problem 4
Anv¨and MATLAB funktionen ellipgen f¨or att ber¨akna och rita temperaturen i en rektangul¨ar platta.
Anv¨and MATLABfunktionen heat och skriv MATLABsatser som utf¨or heat f¨or att
l¨osa motsvarande randv¨ardesproblemet (25).
(i) Skriv funktionsfiler som ber¨aknar randvillkoren f1 (y), f2 (y), f3 (x), och f4 (x).
(ii) Skapa x− och y-variabel radvektorer x och y med nx+1 och ny+1 element (anv¨and
MATLABsatsen linspace).
(iii) Skapa x− och y-randvillkor radvektorer bx0, bxn, by0, byn genom att utnyttja
funktionsfiler som ber¨aknar randvillkoren fj och radvektorer x, y.
15
(iv) utf¨or ellipgen och rita temperaturen (anv¨and MATLABsatsen surfl
passande skala).
(v) Valj ett randvillkor s˚
adant att
2
f3 (x) = Ae−Q(x−P ) ,
A, Q > 0,
0<P <a
och valj en
(40)
och fj = 0, j = 1, 2, 4. Det ¨ar en k¨allasmodell d¨ar A ¨ar k¨allasamplitud, Q ¨ar k¨allaskvalitet och
P ¨ar k¨allasposition. Skriv en funktionsfil som ber¨aknar temperaturen f¨or givna A, Q och P .
Rita en graf som visar hur temperaturen u(xic , yic ) i plattens centrala punkt (xic , yic ) ber˚
ar p˚
a
A, Q eller P .
16