Я только начинаю изучать Matlab, и я был бы очень признателен, если бы кто-то мог прояснить мою путаницу...
Я пытаюсь решить неоднородное транспортное уравнение, используя схему Лакса-Вендроффа, с приведенным ниже кодом. Matlab сообщает мне, что в последней строке кода есть ошибки (U(j+1,2:N)=(1/2).*sigma...), то есть 1. Ошибка при использовании *; 2. Внутренние размеры матрицы должны совпадать.
Я знаю, что размеры сигмы и U несовместимы (как матрицы), но я понятия не имею (и опыта), как это исправить... Нет проблем с формулой, но мне действительно трудно иметь дело с код.
a = -10;
b = 10;
delta_x = (b-a)/N;
x = a:delta_x:b;
tfinal = 2;
delta_t = tfinal/M;
t = 0:delta_t:tfinal;
c = 3-2.* exp(-(1/4).*(x.^2)) ;
sigma = c.*(delta_t/delta_x);
U=zeros(M+1,N+1);
U(1,:)=f(x);
for j=1:M
U(j+1,2:N)=(1/2).*sigma.*(sigma-1).*U(j,3:N+1)-((sigma).^2-1).*U(j,2:N)+(1/2).*sigma.*(sigma+1)*U(j,1:N-1);
end
Большое спасибо!