The PDE & BC project , a very nice and challenging one, also one where Maple is pioneer in all computer algebra systems, has restarted, including now also the collaboration of Katherina von Bülow.
Recapping, the PDE & BC project started 5 years ago implementing some of the basic methods found in textbooks to match arbitrary functions and constants to given PDE boundary conditions of different kinds. At this point we aim to fill gaps, and the first one we tackled is the case of 1st order PDE that can be solved without boundary conditions in terms of an arbitrary function, and where a single boundary condition (BC) is given for the PDE unknown function, and this BC does not depend on the independent variables of the problem. It looks simple ... It can be rather tricky though. The method we implemented is a simple however ingenious use of differential invariants to match the boundary condition.
The resulting new code, the portion already tested, is available for download in the Maplesoft R&D webpage for Differential Equations and Mathematical Functions (the development itself is bundled within the library that contains the new developments for the Physics package, in turn within the zip linked in the webpage).
The examples that can now be handled, although restricted in generality to "only one 1st order linear or nonlinear PDE and only one boundary condition for the unknown function itself", illustrate well how powerful it can be to use more advanced methods to tackle these tricky situations where we need to match an arbitrary function to a boundary condition.
To illustrate the idea, consider first a linear example, among the simplest one could imagine:
> 


(1) 
> 


(2) 
Input now a boundary condition (bc) for the unknown such that this bc does not depend on the independent variables ; this bc can however depend on arbitrary symbolic parameters, for instance
> 


(3) 
With the recent development, this kind of problem can now be solved in one go:
> 


(4) 
Nice! And how do you verify this result for correctness? With pdetest , which actually also tests the solution against the boundary conditions:
> 


(5) 
And what has been done to obtain the solution (4)? First the PDE was solved regardless of the boundary condition, so in general, obtaining:
> 


(6) 
In a second step, the arbitrary function got determined such that the boundary condition is matched. Concretely, the mapping _F1 is what got determined. You can see this mapping reversing the solving process in two steps. Start taking the difference between the general solution (6) and the solution (4) that matches the boundary condition
> 


(7) 
and isolate here
> 


(8) 
So this is the value that got determined. To see now the actual solving mapping _F1, that takes for arguments and and returns the righthand side of (8), one can perform a change of variables introducing the two parameters and of the _F1 mapping:
> 


(9) 
> 


(10) 
> 


(11) 
So the solving mapping _F1 is
> 


(12) 
Wow! Although this pde & bc problem really look very simple, this solution (12) is highly nonobvious, as is the way to get it just from the boundary condition and the solution (6) too. Let's first verify that this mapping is correct (even when we know, by construction, that it is correct). For that, apply (12) to the arguments of the arbitrary function and we should obtain (8)
> 


(13) 
Indeed this is equal to (8)
> 


(14) 
Skipping the technical details, the key observation to compute a solving mapping is that, given a 1st order PDE where the unknown depends on independent variables, if the boundary condition depends on arbitrary symbolic parameters , one can always seek a "relationship between these parameters and the differential invariants that enter as arguments in the arbitrary function _F1 of the solution", and get the form of the mapping _F1 from this relationship and the bc. The method works in general. Change for instance the bc (3) making its righthand side be a sum instead of a product
> 


(15) 
> 


(16) 
> 


(17) 
An interesting case happens when the boundary condition depends on less than parameters, for instance:
> 


(18) 
> 


(19) 
As we see in this result, the additional difficulty represented by having few parameters got tackled by introducing an arbitrary constant _C1 (this is likely to evolve into something more general...)
> 


(20) 
Finally, consider a nonlinear example
> 


(21) 
> 


(22) 
Here we have 2 independent variables, so for illustration purposes use a boundary condition that depends on only one arbitrary parameter
> 


(23) 
All looks OK, but we still have another problem: check the arbitrary function _F1 entering the general solution of pde when tackled without any boundary condition:
> 


(24) 
Remove this RootOf to see the underlying algebraic expression
> 


(25) 
So this is a pde where the general solution is implicit, actually depending on an arbitrary function of the unknown The code handles this problem in the same way, just that in cases like this there may be more than one solution. For this very particular bc (23) there are actually three solutions:
> 


(26) 
Verify these three solutions against the pde and the boundary condition
> 


(27) 
:)
