Upload
abdul-rahim
View
224
Download
0
Embed Size (px)
DESCRIPTION
This is a lecture note on CFD subject taught at University of Melbourne. It focuses on ODE topic. This is the 3rd lecture note on this subject
Citation preview
ENGR90024 COMPUTATIONAL FLUID DYNAMICS
Lecture O03
Analysis of the Euler’s Method!
!
Higher Order Taylor MethodIn general, Euler’s method is not very accurate because it is derived by truncating Taylor series at Δt2.
Taylor series
�(tl+1) = �(tl) +�t
1!
d�
dt
����tl
Euler’s method
�(tl+1) = �(tl) +�t
1!f(tl,�l)
To get a more accurate formula, we will derive a formula by truncating Taylor series at Δt3
Taylor series
�(tl+1) = �(tl) +�t
1!
d�
dt
����tl
+�t2
2!
d2�
dt2
����tl
Taylor method order 2
�(tl+1) = �(tl) +�t
1!f(tl,�l)
+�t2
2!
d2�
dt2
����tl
�(tl+1) = �(tl) +�t
1!f(tl,�l) +
�t2
2!
d2�
dt2
����tl
�(tl+1) = �(tl) +�t
1!f(tl,�l) +
�t2
2!
d
dt
d�
dt
����tl
�(tl+1) = �(tl) +�t
1!f(tl,�l) +
�t2
2!
d
dtf(t,�(t))
����tl
�(tl+1) = �(tl) +�t
1!f(tl,�l) +
�t2
2!
✓@f
@t(tl,�l) +
@f
@�(tl,�l)
d�
dt
◆
�(tl+1) = �(tl) +�t
1!f(tl,�l) +
�t2
2!
✓@f
@t(tl,�l) +
@f
@�(tl,�l)f(tl,�l)
◆
Chain rule
�(tl+1) = �(tl) +�t
1!f(tl,�l) +
�t2
2!
✓@f
@t(tl,�l) +
@f
@�(tl,�l)f(tl,�l)
◆O03.1
Equation (O03.1) is called the Taylor Method order 2. It is!more accurate than the Euler’s method because it has a local!truncation error O(Δt3)
Taylor method order 2•Advantage - More accurate•Disadvantage - Need to calculate derivatives of f(t,ɸ)
Example O03.1: !Using Taylors method order 2, solve !!!!!For 0 < t < 8 with ɸ(t=0)=0 and a) Δt=2 b) Δt=1 c) Δt=0.5 d) Δt=0.1 !Compare your solution with Euler’s method
d�
dt= 1� �
@f
@�= �1
For this question
�(tl+1) = �(tl) +�t
1!f(tl,�l) +
�t2
2!
✓@f
@t(tl,�l) +
@f
@�(tl,�l)f(tl,�l)
◆
Taylors method order 2
We need to find all terms in the equation above
f(t,�) = 1� �
@f
@t= 0
�(tl+1) = �(tl) +�t
1!f(tl,�l) +
�t2
2!
✓@f
@t(tl,�l) +
@f
@�(tl,�l)f(tl,�l)
◆
f(t,�) = 1� � @f
@t= 0
�(tl+1) = �(tl) +�t
1!(1� �l) +
�t2
2!
�0 + 1(1� �l)
�
�l+1 = �l +�t
1!(1� �l) +
�t2
2!
�1� �l
�
@f
@�= �1
function MPO03p1() clear all; close all; Delta_t=0.5; phi(1)=0.0; t=0:Delta_t:8.0 for l=1:length(t)-1 phi(n+1)=phi(n)+Delta_t*(1-phi(l))-(Delta_t^2/2)*(1-phi(l)) end plot(t,phi,'ko-') hold on ezplot(@(t)1-exp(-t),[0,8,0,2]) xlabel('t'); ylabel('\phi'); legend('Euler','True');
function MPO02p1() clear all; close all; Delta_t=2.0; t=0:Delta_t:8.0 phi(1)=0.0; for l=1:length(t)-1 phi(l+1)=phi(l)+Delta_t*(1-phi(l)) end plot(t,phi,'ko-') hold on ezplot(@(t)1-exp(-t),[0,8,0,2]) xlabel('t'); ylabel('\phi'); legend('Euler','True');
Euler’s method!Example O02.1
�l+1 = �l +�t(1� �l)
Taylor method order 2!Example O03.1
�l+1 = �l +�t
1!(1� �l) +
�t2
2!
�1� �l
�
Only need!to change one!line of code!
function MPO03p1() clear all; close all; Delta_t=0.5; phi(1)=0.0; t=0:Delta_t:8.0 for l=1:length(t)-1 phi(l+1)=phi(l)+Delta_t*(1-phi(l))-(Delta_t^2/2)*(1-phi(l)) end plot(t,phi,'ko-') hold on ezplot(@(t)1-exp(-t),[0,8,0,2]) xlabel('t'); ylabel('\phi'); legend('Euler','True');
Output
0 1 2 3 4 5 6 7 80
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
t
φ
Taylor 2nd OrderTrueNote: the
Taylor method for Δt=2 predicts ɸ=0 for all values of t!
0 1 2 3 4 5 6 7 80
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
t
φ
Taylor 2nd OrderTrue
0 1 2 3 4 5 6 7 80
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
t
φ
Taylor 2nd OrderTrue
0 1 2 3 4 5 6 7 80
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
t
φ
Taylor 2nd OrderTrue
0 1 2 3 4 5 6 7 80
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
t
φ
Taylor 2nd OrderTrue
Δt=2.0 Δt=1.0
Δt=0.5 Δt=0.1
0 1 2 3 4 5 6 7 80
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
t
φ
Taylor 2nd OrderTrue
Δt=1.0
0 1 2 3 4 5 6 7 80
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
t
1−exp(−t)
φ
EulerTrue
Δt=1.0
0 1 2 3 4 5 6 7 80
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
t
φ
Taylor 2nd OrderTrue
Δt=0.5
0 1 2 3 4 5 6 7 80
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
t
φ
EulerTrue
Δt=0.5
Euler Taylor 2nd order
For a given Δt, the Taylor 2nd order method is more accurate than Euler
End of Example O03.1
STABILITY OF THE EXPLICIT EULER METHOD
(SEE PAGE 8 PRINTED LECTURE NOTES)
• In Lecture O02, we looked at the accuracy of the explicit Euler method. Let’s now look at the stability of the Euler method.!
• We know from previous lecture, the smaller Δt, the more accurate the solution, i.e. the truncation error go to zero. This feature is known as consistency.!
• When we make Δt big enough, the solution will “blow up”. Can we predict the value of Δt where the solution will “blow up”? For a numerical method to be useful, we need it to be stable.
• Stability and consistency are two quite different things (see later). It ispossible for a method can be consistent but not stable.
• If a numerical method is both consistent and stable, it is convergent.
• To carry out stability analysis, consider the model problem
d�
dt= �� (O03.2)
where λ is a constant and is a complex number
� = �Re + i�Im
In many engineering problems, λRe is zero or negative. Forstability analysis, you will always assume that λRe is zero ornegative.
Find analytical solution!at time level lΔt
Find approximated Euler’s! solution at time level lΔt
CompareStrategy d�
dt= ��
The analytical solution for Eq. (O03.2) can be written as
where ɸ1 is the initial value of ɸ
�(t) = �1e�t
= �1e(�Re+i�Im)t
= �1e�Retei�Imt
= �1e�Ret(cos(�Imt) + i sin(�Imt))
Explicit Euler Method
Im
Ree
hIm
hRe
�(t)
�(t)
�(t)
�(t)
�(t)
�(t) = �1e�Ret(cos(�Imt) + i sin(�Imt))
Re
Analytical solution will decay with time if lRe<0
Applying Euler’s formula for the model problem (Eq. (O03.2)) gives
�l+1 = �l + ��t�l
= (1 + ��t)�l
= ��l
where σ = (1+λΔt) is the amplification factor
(O03.3)
Find analytical solution!at time level lΔt
Find approximated Euler’s! solution at time level lΔt
Compared�
dt= ��
�(t) = �1e�Ret(cos(�Imt) + i sin(�Imt))
Thus, running a program using Euler’s method will give you
�1 = Given
�2 = ��1
�3 = ��2 = �2�1
= �3�1�4 = ��3
... =...
�l+1 = ��l
=...
= �l�1
For solution to be stable!|�| � 1
(O03.4)
�l+1 = ��l
-1-2
� = 1 + ��t
� = (1 +�t�Re + i�t�Im)
|�|2 = (1 +�t�Re)2 + (�t�Im)2 1
�Im�t
�Re�t
Example O03.2: !Write a Matlab program that uses Euler’s method to solve !!!
!!for 0 < t < 2 with ɸ(t=0)=1. Using the analysis from the previous slides, what are the values of Δt for the numerical solution to be stable?
d�
dt= �8�
So for this problem λ=-8. So λRe=-8 and λIm=0.0. In order for the numerical solution to be stable, λΔt need to be within the stable region.!
d�
dt= �8�
We have
-1-2
�Im�t
�Re�t
-8Δt, Δt large
�2 ��t 0
�2 �8�t 0
0 �t 1/4
-1-2
�Im�t
�Re�t
So for solution to !be stable Δt must!be between 0 and 0.25
function MPO03p2() clear all; close all; Delta_t=0.01; t=0:Delta_t:2.0; %Preallocating memory phi=zeros(size(t)); phi(1)=1.0; for l=1:length(t)-1 phi(l+1)=phi(l)+Delta_t*(-8*phi(l)); end plot(t,phi,'ko-') hold on ezplot(@(t)exp(-8*t),[0,2,-2,2]) xlabel('t'); ylabel('\phi'); legend('Euler','True');
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2−40
−20
0
20
40
60
80
100
t
φ
EulerTrue
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
t
φ
EulerTrue
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
t
φ
EulerTrue
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
t
φ
EulerTrue
Δt=0.5
Δt=0.25
Δt=0.1 Δt=0.01
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2−40
−20
0
20
40
60
80
100
t
φ
EulerTrue
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
t
φ
EulerTrue
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
t
φ
EulerTrue
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
t
φ
EulerTrue
Δt=0.5
Δt=0.25
Δt=0.1 Δt=0.01
Euler solution is unstable for Δt=0.5
Euler solution is stable for Δt=0.1 & Δt=0.01Euler solution is neutrally stable for Δt=0.25
-1-2
�Im�t
�Re�t
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2−40
−20
0
20
40
60
80
100
t
φ
EulerTrue
Δt=0.5
��t = �8⇥ 0.5 = �4
-4
-1-2
�Im�t
�Re�t
��t = �8⇥ 0.25 = �2
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
t
φ
EulerTrueΔt=0.25
-1-2
�Im�t
�Re�t
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
t
φ
EulerTrue
Δt=0.1
��t = �8⇥ 0.1 = �0.8
-1-2
�Im�t
�Re�t
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2−2
−1.5
−1
−0.5
0
0.5
1
1.5
2
t
φ
EulerTrue
Δt=0.01
��t = �8⇥ 0.01 = �0.08
End of Example O03.2
Consider now the case where λ is purely imaginary,
d�
dt= i�Im�
For this case, iλImΔt, is always on the vertical axis of the stability diagram. It is not within the stability region. Hence, in this case, Euler’s method is always unstable.
� = �Re + i�Im
0d�
dt= ��
Example O03.3: !Write a Matlab program that uses Euler’s method to solve !!!!!for 0 < t < 10 with ɸ(t=0)=1. Using the analysis from the previous slides, what are the values of Δt for the numerical solution to be stable?
d�
dt= 2i�
The analytical solution for this problem can be written as
d�
dt= 2i� 0 t 10 �(t = 0) = 1
� = (ARe + iAIm)e2it� = Ae2it
� = (ARe + iAIm)(cos(2t) + i sin(2t))
� = (ARe cos(2t)�AIm sin(2t)) + i(ARe sin(2t) +AIm cos(2t))
But we are given that ɸ=1 for t=0
1 + 0i = ARe + iAIm
ARe = 1
AIm = 0
Hence
So the analytical solution for this equation is
�(t) = e2it
= cos(2t) + i sin(2t)
d�
dt= 2i� 0 t 10 �(t = 0) = 1
� = (ARe + iAIm)e2it ARe = 1 AIm = 0
function MPO03p3()!clear all;!close all;!Delta_t=0.02;! ! !t=0:Delta_t:10.0;!%Preallocate Memory!phi=zeros(size(t));!phi(1)=1.0;! ! !for n=1:length(t)-1! phi(n+1)=phi(n)+Delta_t*(i*2*phi(n));!end! !plot(t,imag(phi),'ko-')!xlabel('t');!ylabel('\phi');!hold on!ezplot(@(t)sin(2*t),[0,10,-5,5])!legend('Euler','True');
0 1 2 3 4 5 6 7 8 9 10−5
−4
−3
−2
−1
0
1
2
3
4
5
t
φ
sin(2 t)
EulerTrue
0 1 2 3 4 5 6 7 8 9 10−5
−4
−3
−2
−1
0
1
2
3
4
5
t
φ
sin(2 t)
EulerTrue
0 1 2 3 4 5 6 7 8 9 10−5
−4
−3
−2
−1
0
1
2
3
4
5
t
φ
sin(2 t)
EulerTrue
0 1 2 3 4 5 6 7 8 9 10−5
−4
−3
−2
−1
0
1
2
3
4
5
t
φ
sin(2 t)
EulerTrue
Δt=0.5 Δt=0.2
Δt=0.1 Δt=0.02
Im(ɸ)
-1-2
�Im�t
�Re�t
i
��t = 2i⇥ 0.5 = i
0 1 2 3 4 5 6 7 8 9 10−5
−4
−3
−2
−1
0
1
2
3
4
5
t
φ
sin(2 t)
EulerTrue
Δt=0.5
-1-2
�Im�t
�Re�t
0.4i
��t = 2i⇥ 0.2 = 0.4i
0 1 2 3 4 5 6 7 8 9 10−5
−4
−3
−2
−1
0
1
2
3
4
5
t
φ
sin(2 t)
EulerTrueΔt=0.2
-1-2
�Im�t
�Re�t
0.2i
��t = 2i⇥ 0.1 = 0.2i
0 1 2 3 4 5 6 7 8 9 10−5
−4
−3
−2
−1
0
1
2
3
4
5
t
φ
sin(2 t)
EulerTrueΔt=0.1
-1-2
�Im�t
�Re�t
0.04i
��t = 2i⇥ 0.02 = 0.04i
0 1 2 3 4 5 6 7 8 9 10−5
−4
−3
−2
−1
0
1
2
3
4
5
t
φ
sin(2 t)
EulerTrueΔt=0.02
For all values of Δt, λΔt is outside the stable region. Hence the numerical solution obtained using Euler’s method will never be stable for any value of Δt.
End of Example O03.3