Как я могу использовать матрицу NxM в качестве начального условия в 'pdepe' - PullRequest
0 голосов
/ 28 мая 2019

Я использую решатель 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 должен вернуть вектор столбца. '

Как можно передать целые векторы вместо отдельных значений?

...