An example, the command
DSolve[y''[x] - 4 y[x] == 1, y[x], x]
gives solution
y[x] -> -(1/4) + E^(2 x) C[1] + E^(-2 x) C[2]
The same command with initial conditions
DSolve[{y''[x] - 4 y[x] == 1, y[0] == 1, y'[1] == -1}, y[x], x]
gives solution
y[x] -> -((E^(-2 x) (-2 E^2 - 5 E^4 + E^(2 x) - 5 E^(4 x) + E^(4 + 2 x) +
2 E^(2 + 4 x)))/(4 (1 + E^4)))
In the first case, the solution has very clear structure: an increasing component, a decreasing component, and a particular solution. In the second case, this structure is shadowed by the complicated expression. Here is a picture of the commands & results in Mathematica:
I think most people would prefer the 2nd solution to be presented in similar form as in the first case. Something like:
The solution is $y = c_1 h_1(x) + c_2 h_2(x) + g(x)$, in which $h_1(x) = e^{2 x}$ is the first homogeneous solution, $h_2(x) = e^{-2 x}$ is the second homogeneous solution, and $g(x)=-1/4$ is the particular solution. The coefficients $c_1, c_2$ are determined from initial conditions. In this particular case we have $ c_1 = ; c_2 = $.
Is there a way to extract $c_1$ and $c_2$? Pattern matching might work in this simple example, but I don't think it generalizes to more complicated cases.