Katherina von Bulow

MaplePrimes Activity


These are answers submitted by Katherina von Bulow


 

Thank you for your post. It highlights the importance of better explaining the option "boundedseries" in the documentation for pdsolve and boundary conditions. Using this option correctly, one can easily obtain the solution inside the disk or outside the disk, as needed. 

 

The Laplace PDE and BC of  your post:

pde := (diff(r*(diff(u(r, theta), r)), r))/r+(diff(u(r, theta), theta, theta))/r^2 = 0
bc := u(1, theta) = f(theta), u(r, -Pi) = u(r, Pi), (D[2](u))(r, -Pi) = (D[2](u))(r, Pi)

 

Firstly: to obtain the solution inside the disk, indicate the origin as expansion point, using HINT = boundedseries(r = 0):

sol_inside := pdsolve([pde, bc], u(r, theta), HINT = boundedseries(r = 0))

u(r, theta) = (1/2)*(2*(Sum(r^n*((Int(f(theta)*sin(n*theta), theta = -Pi .. Pi))*sin(n*theta)+(Int(f(theta)*cos(n*theta), theta = -Pi .. Pi))*cos(n*theta))/Pi, n = 1 .. infinity))*Pi+Int(f(theta), theta = -Pi .. Pi))/Pi

(1)

 

Secondly: to obtain the solution outside the disk, indicate infinity as the expansion point, using HINT = boundedseries(r = infinity):

sol_outside := pdsolve([pde, bc], u(r, theta), HINT = boundedseries(r = infinity))

u(r, theta) = (1/2)*(2*(Sum(r^(-n)*((Int(f(theta)*sin(n*theta), theta = -Pi .. Pi))*sin(n*theta)+(Int(f(theta)*cos(n*theta), theta = -Pi .. Pi))*cos(n*theta))/Pi, n = 1 .. infinity))*Pi+Int(f(theta), theta = -Pi .. Pi))/Pi

(2)

 

The documentation about the option boundedseries is not complete.

 

• 

Unless you indicate you want a bounded series soultion, pdsolve tries first to solve the unbounded problem, and if that doesn't work, it tries bounding the series, choosing an appropriate expansion point, in this case being the origin. That leads to solution (1) even if you do not indicate boundedseries.

• 

The documentation doesn't mention that you can actually choose the expansion point.

• 

There is still an issue, regarding your use of assuming:  the code is not checking assumptions before automatically choosing an expansion point. An improvement would be for the code to check for any existing assumptions, so that when you assumed r > 1, it would choose an expansion point accordingly (for this problem that would be r = infinity, the remaining choice, not being the origin).

 


 

Download SolutionOutsideTheDisk.mw

Katherina von Bülow

Page 1 of 1