Changing default RPM built to GCL.
[maxima.git] / tests / wester_problems / test_pdes_heat.mac
blob5325ded3550198abef141d2cf26c19c96d91e348
1 /* Original version of this file copyright 1999 by Michael Wester,
2  * and retrieved from http://www.math.unm.edu/~wester/demos/PDEs/heat.macsyma
3  * circa 2006-10-23.
4  *
5  * Released under the terms of the GNU General Public License, version 2,
6  * per message dated 2007-06-03 from Michael Wester to Robert Dodier
7  * (contained in the file wester-gpl-permission-message.txt).
8  *
9  * See: "A Critique of the Mathematical Abilities of CA Systems"
10  * by Michael Wester, pp 25--60 in
11  * "Computer Algebra Systems: A Practical Guide", edited by Michael J. Wester
12  * and published by John Wiley and Sons, Chichester, United Kingdom, 1999.
13  */
14 /* ----------[ M a c s y m a ]---------- */
15 /* ---------- Initialization ---------- */
16 showtime: all$
17 prederror: false$
18 load(ndiff)$
19 /* ---------- Partial Differential Equations ---------- */
20 /* This is the heat equation */
21 heat: 'diff(u, t) - 'diff(u, x, 2) = 0;
22 /* This is the similarity form of the proposed solution */
23 s: f(x/sqrt(t))/sqrt(t);
24 /* Substitute s into the heat equation */
25 subst(u = s, heat)$
26 ev(%, diff);
27 /* Change to the similarity variable z = x/sqrt(t) */
28 subst(x = z*sqrt(t), %);
29 /* Combine over a common denominator */
30 ratsimp(%);
31 /* Eliminate the denominator */
32 % * denom(lhs(%));
33 /* Rewrite the differential equation in MACSYMA's normal notation */
34 convert_to_de(%);
35 /* Now, solve the ordinary differential equation */
36 ode2(%, f(z), z);
37 /* Finally, transform back to the original variables */
38 's = subst(x/sqrt(t), z, rhs(%))/sqrt(t);
39 /* If we set %k1 = 0 and %k2 = 1/(2 sqrt(pi)) in the previous expression,
40    we will obtain the usual fundamental solution of the heat equation */
41 subst([%k1 = 0, %k2 = 1/(2*sqrt(%pi))], %);