matching_asymp_example.mw

> restart;
 

> f := (t,epsilon) -> (1 - a)*(1 - exp(-t/epsilon)) / (1 - exp(-1/epsilon)) + a*t;
yout0 := (t,epsilon) -> 1 - a + a*t;
Yin0 := (tau, epsilon) -> (1 - a)*(1 - exp(-tau));
f0 := (t,epsilon) -> a*t + (1-a)*(1-exp(-t/epsilon));

 

 

 

 

`:=`(f, proc (t, epsilon) options operator, arrow; `+`(`/`(`*`(`+`(1, `-`(a)), `*`(`+`(1, `-`(exp(`+`(`-`(`/`(`*`(t), `*`(epsilon))))))))), `*`(`+`(1, `-`(exp(`+`(`-`(`/`(1, `*`(epsilon))))))))), `*`(...
`:=`(yout0, proc (t, epsilon) options operator, arrow; `+`(1, `-`(a), `*`(a, `*`(t))) end proc)
`:=`(Yin0, proc (tau, epsilon) options operator, arrow; `*`(`+`(1, `-`(a)), `*`(`+`(1, `-`(exp(`+`(`-`(tau))))))) end proc)
`:=`(f0, proc (t, epsilon) options operator, arrow; `+`(`*`(a, `*`(t)), `*`(`+`(1, `-`(a)), `*`(`+`(1, `-`(exp(`+`(`-`(`/`(`*`(t), `*`(epsilon)))))))))) end proc) (1)
 

f(t, epsilon) is the solution to the BVP is the zeroth order term of the outer expansion. Yin0(t) = Y[0](t) is the zeroth order term of the inner expansion (we take A[0]from the zeroth order matching condition). f0(t, epsilon) = f[0](t, epsilon)is the zeroth order uniform approximation that we find by matching. 

proc (t) options operator, arrow; at end proc  is the naïve approximation near 0 that we get by taking epsilon = 0 and using the inner boundary condition, y(0) = 0. 

> a:=1/2:
eps := 0.02: plot([f(t,eps),a*t,yout0(t,eps),Yin0(t/eps,eps)],t=0..1);
plot([f(t,eps),a*t,yout0(t,eps),Yin0(t/eps,eps),f0(t,eps)],t=0..1);
 

 

Plot_2d
Plot_2d
 

> a:=1/2:
eps := 0.3:
plot([f(t,eps),a*t,yout0(t,eps),Yin0(t/eps,eps)],t=0..1);
plot([f(t,eps),a*t,yout0(t,eps),Yin0(t/eps,eps),f0(t,eps)],t=0..1);
 

 

Plot_2d
Plot_2d
 

For this problem,  

 

We find that `and`(Yin1(`/`(`*`(t), `*`(epsilon)), epsilon) = f1(t, epsilon), f1(t, epsilon) = f0(t, epsilon)) and and all subsequent terms are the same. This doesn't happen in general. 

> yout1 := (t,epsilon) -> 1 - a + a*t;
Yin1 := (tau, epsilon) -> (1 - a)*(1 - exp(-tau)) + a*tau*epsilon;
f1 := (t,epsilon) -> a*t + (1-a)*(1-exp(-t/epsilon)) + epsilon*0;
 

 

 

`:=`(yout1, proc (t, epsilon) options operator, arrow; `+`(1, `-`(a), `*`(a, `*`(t))) end proc)
`:=`(Yin1, proc (tau, epsilon) options operator, arrow; `+`(`*`(`+`(1, `-`(a)), `*`(`+`(1, `-`(exp(`+`(`-`(tau))))))), `*`(a, `*`(tau, `*`(epsilon)))) end proc)
`:=`(f1, proc (t, epsilon) options operator, arrow; `+`(`*`(a, `*`(t)), `*`(`+`(1, `-`(a)), `*`(`+`(1, `-`(exp(`+`(`-`(`/`(`*`(t), `*`(epsilon)))))))))) end proc) (2)
 

>