Я написал программу на 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'); % Решение, выраж. в триг. функциях. Но это уже другое уравнение.
В общем одно уравнение, но при разных граничных условиях оно то решается то нет. По-моему, можно определить заранее, какие надо прикладывать ГУ, чтобы решалось, но я забыл как. Подскажите пожалуйста, как для данного уравнения, выбирать разные типы ГУ, чтобы оно гарантированно решалось?