Для решения одномерного уравнения адвекции, обозначенного
u_t + u_x = 0, u = u (x, t) и т. Д. и (х, 0) = 1 + Н (х + 1) + Н (х-1)
с использованием метода Лакса Вандероффа,
Мне нужно написать шаговую функцию Хевисайда H (x), и она должна быть равна нулю, когда x <= 0, 1, когда x> 0. Проблема в том, что мне также нужно использовать эту функцию, записывающую H (x-t + 1), H (x-t-1), так как я буду сравнивать то, что я нахожу по точному решению:
u (x, t) = 1 + H (x-t + 1) -H (x-t-1)
Здесь "x" и "t" - векторы, такие, что;
x=-5:0.05:5
t=0:0.05:1
Я написал шаговую функцию Хевисайда следующим образом; однако мне это нужно без цикла for.
L=length(x)
function H_X= heavisidefunc(x,L)
H_X=zeros(1,L);
for i= 1:L
if x(i)<= 0
H_X(i)=0;
else
H_X(i)=1;
end
end
end
Я получаю «Размеры должны совпадать». ошибка, если я напишу
H_X3 = heavisidefunc(x-t+1,L);
H_X4 = heavisidefunc(x-t-1,L);