[1. В вашем случае
не зависит от
, поэтому я убрал в Вашем сообщении неверно набранную зависимость от времени.
2. Вы аппроксимировали второе начальное условие достаточно грубо. Возможно, следует попробовать вариант аппроксимации более высокого порядка по
.]
Теперь необходимо учесть, что в системе MatLab нумерация индексов начинаются с 1.
Возможно два варианта:
(a) использовать другую нумерацию узлов;
(b) использовать туже нумерацию узлов (по пространственной переменной), но модифицировать разностную аппроксимацию уравнения для узлов 1 и (явно учесть, что в 0 и значения функции равны нулю).
Для различных шагов по времени обычно изменяют нумерацию:
будет соответствовать начальному моменту времени.
-- Сб 26.12.2015 22:20:23 --И еще, хоть и не по делу, но, возможно поможет быстрее написать программу.
В вашем случае коэффициент при второй производной не зависит от времени.
Если не менять нумерацию по пространственной координате,
я коэффициенты
,
занумеровал бы как
,
:
,
Эти коэффициенты вычисляются перед «циклом».
(Перепроверьте нумерацию. Я устал, могу ошибиться.
Конечно, при таком подходе Вам нужно будет убрать 2 в знаменателе аппроксимации уравнения.)