Я использую решатель pdepe для одновременного решения 4 PDE. Теперь я хочу использовать решение в качестве начального граничного условия для следующего шага, например, u0 (1,:) = sol (end,:, 1)
Это работает довольно хорошо, пока я просто использую одно значение для начального условия, например u0 (1) = sol (end, end, 1), но терпит неудачу, как только я пробую весь вектор.
Кажется, на самом деле это очень похоже, но в моем случае это не сработало:
Как я могу использовать матрицу NxM, чтобы быть моим начальным условием в `pdepe`
sol = pdepe(m,...,@(x)icfun(x,sol)...
...
%icfun
u0=icfun(x,sol)
u0(1,:)=sol(end,:,1)
u0(2,:)=sol(end,:,2)
u0(3,:)=sol(end,:,3)
u0(4,:)=sol(end,:,4)
end
Что не сработало, так это подсказка по ссылке выше, как я ее интерпретировал.
A=sol;
a=sol(end,:,1);
sol = pdepe(m,...,@(x)interp1(a,A',x,'pchip')'....
Я ожидал, что смогу использовать вектор в качестве начального граничного условия только для одного pde, что дает матрицу NxM для 4 PDE. Вместо этого возникает ошибка, утверждающая, что начальные граничные условия должны быть вектором столбца.
'Ошибка при использовании pdepe (строка 231)
Неверный вывод ICFUN. ICFUN должен вернуть вектор столбца. '
Как можно передать целые векторы вместо отдельных значений?