Я написал программу на Octave, для решения ОДУ методом конечных разностей. Проблема с граничными условиями. Есть уравнение 

. Если взять граничные условия в виде 

 и 

, то задача решается и моё решение совпадает с тем, что выдает функция dsolve(), если решать уравнение в MATLAB. 
Но, если заменить граничные условия на условия по производным т.е. 

 и 

, то после приложения ГУ к системе, матрица получается вырожденной (а MATLAB выдает сообщение, что явное решение не может быть найдено). Если например, взять и прибавить к левой части ОДУ 

, то систему опять можно будет решить.
sln = dsolve('D2y=t','y(0)=0','y(1)=1'); % Решение есть и совпадает с решением МКР в Octave.
sln = dsolve('D2y=t','Dy(0)=0','Dy(1)=0'); % Нет решения в явной форме, а матрица МКР - вырожденная.
sln = dsolve('D2y+y=t','Dy(0)=0','Dy(1)=0'); %  Решение, выраж. в триг. функциях. Но это уже другое уравнение.
 
В общем одно уравнение, но при разных граничных условиях оно то решается то нет. По-моему, можно определить заранее, какие надо прикладывать ГУ, чтобы решалось, но я забыл как. Подскажите пожалуйста, как для данного уравнения, выбирать разные типы ГУ, чтобы оно гарантированно решалось?