| x' | = | (3.25) | |
| y' | = | (3.26) |
| = | (3.27) | ||
| = | (3.28) |
| = | ![]() |
||
| = | ![]() |
(3.29) |
| (3.30) |
| (3.31) |
From this point onwards we drop the primes!
| T(x, y, 0) = T0(x, y) | (3.33) |
| (3.34) |
| (3.36) |
mr 'integ(sin(2 x) sin(5 x), x, 0, pi) 1: 0 'integ(sin(4 x) sin(4 x), x, 0, pi) 1: 0.5 piYou can try various other combinations of n and m, but be warned that Emacs Calc may take a long time to do the integral for high values of n and/or m. You can also ask Emacs Calc to evaluate the integral for some general n and m:
'integ(sin(n x) sin(m x), x, 0, pi)
1: (n cos(n pi) sin(m pi) / m^2
- cos(m pi) sin(n pi) / m)
/ (1 - n^2 / m^2)
'integ(sin(n x) sin(n x), x, 0, pi)
1: (n pi - cos(n pi) sin(n pi)) / 2 n
It is now clear that for an integer value of
n and m the first integral must vanish, and the second
integral always returns
We make use of the above as follows:
![]() |
|||
![]() |
|||
![]() |
|||
![]() |
|||
| (3.37) |
mr
'integ(cos(a x) sin(b x), x, 0, 2 pi)
1: (cos(2 a pi) cos(2 b pi) / b
+ a sin(2 a pi) sin(2 b pi) / b^2)
/ (a^2 / b^2 - 1) + 1 / b*(1 - a^2 / b^2)
If a and b are two different integers, m and n, then
![]() |
(3.38) |
'integ(cos(a x) sin(a x), x, 0, 2 pi) 1: sin(2 a pi)^2 / 2 aIf a is an integer then this is 0, hence:
| (3.39) |
'integ(sin(a x) sin(b x), x, 0, 2 pi)
1: (b cos(2 b pi) sin(2 a pi) / a^2
- cos(2 a pi) sin(2 b pi) / a)
/ (1 - b^2 / a^2)
This is clearly 0 for integer values of a and b:
| (3.40) |
'integ(sin(a x) sin(a x), x, 0, 2 pi) 1: (2 a pi - cos(2 a pi) sin(2 a pi)) / 2 awhich for an integer value of a is simply
| (3.41) |
![]() |
|||
![]() |
|||
![]() |
|||
| (3.42) |
![]() |
|||
![]() |
|||
| (3.43) |
'k k' D cos(k x) cos(k' x) sin(j y) sin(j' y) \
+ l j j' D cos(j y) cos(j' y) sin(k x) sin(k' x)
1: k k' D cos(k x) cos(k' x) sin(j y) sin(j' y)
+ l j j' D cos(j y) cos(j' y) sin(k x) sin(k' x)
ss:
ss Store: var-F
ar
Rewrite rule(s): cos(a x) cos(b x) := ( cos((a - b) x) + cos((a + b) x) ) / 2,\
sin(a x) sin(b x) := ( cos((a - b) x) - cos((a + b) x) ) / 2
Working...
1: (cos((j - j') y) - cos((j + j') y)) k
*(cos((k - k') x) + cos((k + k') x)) D k' / 4
+ (cos((k - k') x) - cos((k + k') x)) j
*(cos((j - j') y) + cos((j + j') y)) D j' l / 4
ar
Rewrite rule(s): cos(a x) := (exp(i a x) + exp(-i a x)) / 2
Working...
1: ((exp(i y*(j - j')) + exp(-(i y*(j - j')))) / 2
- (exp(i y*(j + j')) + exp(-(i y*(j + j')))) / 2) k
*((exp(i x*(k - k')) + exp(-(i x*(k - k')))) / 2
+ (exp(i x*(k + k')) + exp(-(i x*(k + k')))) / 2) D k' / 4
+ ((exp(i x*(k - k')) + exp(-(i x*(k - k')))) / 2
- (exp(i x*(k + k')) + exp(-(i x*(k + k')))) / 2) j
*((exp(i y*(j - j')) + exp(-(i y*(j - j')))) / 2
+ (exp(i y*(j + j')) + exp(-(i y*(j + j')))) / 2) D j' l / 4
ss
Store: var-F2
as
Working...
1: D k k'
*((exp(i x*(k - k')) + exp(-(i x*(k - k')))) / 2
+ (exp(i x*(k + k')) + exp(-(i x*(k + k')))) / 2)
((exp(i y*(j - j')) + exp(-(i y*(j - j')))) / 2
- (exp(i y*(j + j')) + exp(-(i y*(j + j')))) / 2) / 4
+ D j j' l
*((exp(i y*(j - j')) + exp(-(i y*(j - j')))) / 2
+ (exp(i y*(j + j')) + exp(-(i y*(j + j')))) / 2)
((exp(i x*(k - k')) + exp(-(i x*(k - k')))) / 2
- (exp(i x*(k + k')) + exp(-(i x*(k + k')))) / 2) / 4
ss
Store: var-F3
ab or subst. The substitutions are
purely structural, i.e., the substituted objects
must match verbatim, so this is not like a rewriting
rule. Here's how it works on our example:
ab
Substitute old: k - k', new: k_m
Working...
1: D k k'
*((exp(i x k_m) + exp(-(i x k_m))) / 2
+ (exp(i x*(k + k')) + exp(-(i x*(k + k')))) / 2)
((exp(i y*(j - j')) + exp(-(i y*(j - j')))) / 2
- (exp(i y*(j + j')) + exp(-(i y*(j + j')))) / 2) / 4
+ D j j' l
*((exp(i y*(j - j')) + exp(-(i y*(j - j')))) / 2
+ (exp(i y*(j + j')) + exp(-(i y*(j + j')))) / 2)
((exp(i x k_m) + exp(-(i x k_m))) / 2
- (exp(i x*(k + k')) + exp(-(i x*(k + k')))) / 2)
/ 4
ab
Substitute old: k + k', new: k_p
Working...
1: D k k'
*((exp(i x k_m) + exp(-(i x k_m))) / 2
+ (exp(i x k_p) + exp(-(i x k_p))) / 2)
((exp(i y*(j - j')) + exp(-(i y*(j - j')))) / 2
- (exp(i y*(j + j')) + exp(-(i y*(j + j')))) / 2) / 4
+ D j j' l
*((exp(i y*(j - j')) + exp(-(i y*(j - j')))) / 2
+ (exp(i y*(j + j')) + exp(-(i y*(j + j')))) / 2)
((exp(i x k_m) + exp(-(i x k_m))) / 2
- (exp(i x k_p) + exp(-(i x k_p))) / 2) / 4
ab
Substitute old: j - j', new: j_m
Working...
1: D k k'
*((exp(i x k_m) + exp(-(i x k_m))) / 2
+ (exp(i x k_p) + exp(-(i x k_p))) / 2)
((exp(i y j_m) + exp(-(i y j_m))) / 2
- (exp(i y*(j + j')) + exp(-(i y*(j + j')))) / 2) / 4
+ D j j' l
*((exp(i y j_m) + exp(-(i y j_m))) / 2
+ (exp(i y*(j + j')) + exp(-(i y*(j + j')))) / 2)
((exp(i x k_m) + exp(-(i x k_m))) / 2
- (exp(i x k_p) + exp(-(i x k_p))) / 2) / 4
ab
Substitute old: j + j', new: j_p
1: D k k'
*((exp(i x k_m) + exp(-(i x k_m))) / 2
+ (exp(i x k_p) + exp(-(i x k_p))) / 2)
((exp(i y j_m) + exp(-(i y j_m))) / 2
- (exp(i y j_p) + exp(-(i y j_p))) / 2) / 4
+ D j j' l
*((exp(i y j_m) + exp(-(i y j_m))) / 2
+ (exp(i y j_p) + exp(-(i y j_p))) / 2)
((exp(i x k_m) + exp(-(i x k_m))) / 2
- (exp(i x k_p) + exp(-(i x k_p))) / 2) / 4
The next step is to bite the bullet and
expand it:
ax
Working...
1: D k k' exp(i x k_m) exp(i y j_m) / 16
+ D k k' exp(i x k_m) exp(-(i y j_m)) / 16
+ D k k' exp(-(i x k_m)) exp(i y j_m) / 16
+ D k k' exp(-(i x k_m)) exp(-(i y j_m)) / 16
- D k k' exp(i x k_m) exp(i y j_p) / 16
- D k k' exp(i x k_m) exp(-(i y j_p)) / 16
- D k k' exp(-(i x k_m)) exp(i y j_p) / 16
- D k k' exp(-(i x k_m)) exp(-(i y j_p)) / 16
+ D k k' exp(i x k_p) exp(i y j_m) / 16
+ D k k' exp(i x k_p) exp(-(i y j_m)) / 16
+ D k k' exp(-(i x k_p)) exp(i y j_m) / 16
+ D k k' exp(-(i x k_p)) exp(-(i y j_m)) / 16
- D k k' exp(i x k_p) exp(i y j_p) / 16
- D k k' exp(i x k_p) exp(-(i y j_p)) / 16
- D k k' exp(-(i x k_p)) exp(i y j_p) / 16
- D k k' exp(-(i x k_p)) exp(-(i y j_p)) / 16
+ D j j' l exp(i y j_m) exp(i x k_m) / 16
+ D j j' l exp(i y j_m) exp(-(i x k_m)) / 16
+ D j j' l exp(-(i y j_m)) exp(i x k_m) / 16
+ D j j' l exp(-(i y j_m)) exp(-(i x k_m)) / 16
- D j j' l exp(i y j_m) exp(i x k_p) / 16
- D j j' l exp(i y j_m) exp(-(i x k_p)) / 16
- D j j' l exp(-(i y j_m)) exp(i x k_p) / 16
- D j j' l exp(-(i y j_m)) exp(-(i x k_p)) / 16
+ D j j' l exp(i y j_p) exp(i x k_m) / 16
+ D j j' l exp(i y j_p) exp(-(i x k_m)) / 16
+ D j j' l exp(-(i y j_p)) exp(i x k_m) / 16
+ D j j' l exp(-(i y j_p)) exp(-(i x k_m)) / 16
- D j j' l exp(i y j_p) exp(i x k_p) / 16
- D j j' l exp(i y j_p) exp(-(i x k_p)) / 16
- D j j' l exp(-(i y j_p)) exp(i x k_p) / 16
- D j j' l exp(-(i y j_p)) exp(-(i x k_p)) / 16
Now the tricky part is to collect it all into
a Fourier transform.
We already have here terms that are proportional
to
ab
Substitute old: exp(i x k_p), new: exp(-i x k_p)
Working:
1: D k k' exp(i x k_m) exp(i y j_m) / 16
+ D k k' exp(i x k_m) exp(-(i y j_m)) / 16
+ D k k' exp(-(i x k_m)) exp(i y j_m) / 16
+ D k k' exp(-(i x k_m)) exp(-(i y j_m)) / 16
- D k k' exp(i x k_m) exp(i y j_p) / 16
- D k k' exp(i x k_m) exp(-(i y j_p)) / 16
- D k k' exp(-(i x k_m)) exp(i y j_p) / 16
- D k k' exp(-(i x k_m)) exp(-(i y j_p)) / 16
+ D k k' exp(-(i x k_p)) exp(i y j_m) / 16
+ D k k' exp(-(i x k_p)) exp(-(i y j_m)) / 16
+ D k k' exp(-(i x k_p)) exp(i y j_m) / 16
+ D k k' exp(-(i x k_p)) exp(-(i y j_m)) / 16
- D k k' exp(-(i x k_p)) exp(i y j_p) / 16
- D k k' exp(-(i x k_p)) exp(-(i y j_p)) / 16
- D k k' exp(-(i x k_p)) exp(i y j_p) / 16
- D k k' exp(-(i x k_p)) exp(-(i y j_p)) / 16
+ D j j' l exp(i y j_m) exp(i x k_m) / 16
+ D j j' l exp(i y j_m) exp(-(i x k_m)) / 16
+ D j j' l exp(-(i y j_m)) exp(i x k_m) / 16
+ D j j' l exp(-(i y j_m)) exp(-(i x k_m)) / 16
- 1:8 D j j' l exp(i y j_m) exp(-(i x k_p))
- 1:8 D j j' l exp(-(i y j_m)) exp(-(i x k_p))
+ D j j' l exp(i y j_p) exp(i x k_m) / 16
+ D j j' l exp(i y j_p) exp(-(i x k_m)) / 16
+ D j j' l exp(-(i y j_p)) exp(i x k_m) / 16
+ D j j' l exp(-(i y j_p)) exp(-(i x k_m)) / 16
- 1:8 D j j' l exp(i y j_p) exp(-(i x k_p))
- 1:8 D j j' l exp(-(i y j_p)) exp(-(i x k_p))
ab
Substitute old: exp(i x k_m), new: exp(-i x k_m)
Working...
1: D k k' exp(-(i x k_m)) exp(i y j_m) / 16
+ D k k' exp(-(i x k_m)) exp(-(i y j_m)) / 16
+ D k k' exp(-(i x k_m)) exp(i y j_m) / 16
+ D k k' exp(-(i x k_m)) exp(-(i y j_m)) / 16
- D k k' exp(-(i x k_m)) exp(i y j_p) / 16
- D k k' exp(-(i x k_m)) exp(-(i y j_p)) / 16
- D k k' exp(-(i x k_m)) exp(i y j_p) / 16
- D k k' exp(-(i x k_m)) exp(-(i y j_p)) / 16
+ D k k' exp(-(i x k_p)) exp(i y j_m) / 16
+ D k k' exp(-(i x k_p)) exp(-(i y j_m)) / 16
+ D k k' exp(-(i x k_p)) exp(i y j_m) / 16
+ D k k' exp(-(i x k_p)) exp(-(i y j_m)) / 16
- D k k' exp(-(i x k_p)) exp(i y j_p) / 16
- D k k' exp(-(i x k_p)) exp(-(i y j_p)) / 16
- D k k' exp(-(i x k_p)) exp(i y j_p) / 16
- D k k' exp(-(i x k_p)) exp(-(i y j_p)) / 16
+ 1:8 D j j' l exp(i y j_m) exp(-(i x k_m))
+ 1:8 D j j' l exp(-(i y j_m)) exp(-(i x k_m))
- 1:8 D j j' l exp(i y j_m) exp(-(i x k_p))
- 1:8 D j j' l exp(-(i y j_m)) exp(-(i x k_p))
+ 1:8 D j j' l exp(i y j_p) exp(-(i x k_m))
+ 1:8 D j j' l exp(-(i y j_p)) exp(-(i x k_m))
- 1:8 D j j' l exp(i y j_p) exp(-(i x k_p))
- 1:8 D j j' l exp(-(i y j_p)) exp(-(i x k_p))
ab
Substitute old: exp(i y j_m), new: exp(-i y j_m)
Working...
1: 1:4 D k k' exp(-(i x k_m)) exp(-(i y j_m))
- D k k' exp(-(i x k_m)) exp(i y j_p) / 16
- D k k' exp(-(i x k_m)) exp(-(i y j_p)) / 16
- D k k' exp(-(i x k_m)) exp(i y j_p) / 16
- D k k' exp(-(i x k_m)) exp(-(i y j_p)) / 16
+ 1:4 D k k' exp(-(i x k_p)) exp(-(i y j_m))
- D k k' exp(-(i x k_p)) exp(i y j_p) / 16
- D k k' exp(-(i x k_p)) exp(-(i y j_p)) / 16
- D k k' exp(-(i x k_p)) exp(i y j_p) / 16
- D k k' exp(-(i x k_p)) exp(-(i y j_p)) / 16
+ 1:4 D j j' l exp(-(i y j_m)) exp(-(i x k_m))
- 1:4 D j j' l exp(-(i y j_m)) exp(-(i x k_p))
+ 1:8 D j j' l exp(i y j_p) exp(-(i x k_m))
+ 1:8 D j j' l exp(-(i y j_p)) exp(-(i x k_m))
- 1:8 D j j' l exp(i y j_p) exp(-(i x k_p))
- 1:8 D j j' l exp(-(i y j_p)) exp(-(i x k_p))
ab
Substitute old: exp(i y j_p), new: exp(-i y j_p)
Working...
1: 1:4 D k k' exp(-(i x k_m)) exp(-(i y j_m))
- 1:4 D k k' exp(-(i x k_m)) exp(-(i y j_p))
+ 1:4 D k k' exp(-(i x k_p)) exp(-(i y j_m))
- 1:4 D k k' exp(-(i x k_p)) exp(-(i y j_p))
+ 1:4 D j j' l exp(-(i y j_m)) exp(-(i x k_m))
- 1:4 D j j' l exp(-(i y j_m)) exp(-(i x k_p))
+ 1:4 D j j' l exp(-(i y j_p)) exp(-(i x k_m))
- 1:4 D j j' l exp(-(i y j_p)) exp(-(i x k_p))
| (3.45) |
![]() |
|||
![]() |
(3.46) |
Observe a very important difference compared to the Jacobi iteration method. When using spectral method the discretisation does not take place in physical space and/or time. The solution whether exact or approximate is perfectly continuous in space and time. On the other hand even an exact solution is always discretised in the power space, i.e., in k and j. It is discretised, but not finite. We have to truncate the power series in order to obtain a numerical solution. This is where the approximation comes in.