Следующая
for s = 1:1000
error = LaplaceTransform(s,5) - (antiderivative(1,s)-antiderivative(0,s));
end
plot(s,error);
уже имеет несколько проблем.Двумя основными из них являются то, что error
перезаписывается на каждой итерации, как указал @Amro, и что s
, ваша переменная цикла, является скаляром.
Таким образом, вам нужно написать
difference = zeros(1000,1); %# preassignment is good for you
for s = 1:1000
difference(s) = LaplaceTransform(s,5) - (antiderivative(1,s)-antiderivative(0,s));
end
plot(1:1000,difference);
Есть еще одна ошибка в функции LaplaceTransform
function g = LaplaceTransform(s,N);
[...]
g = ff(x).*exp(-s*x); %# g is an array
[...]
If %# If is calculated, but not returned.
Я предполагаю, что вы хотите написать
function If = LaplaceTransform(s,N);
, потому что в противном случае вы пытаетесьприсвоить массив g
скаляру difference(s)
.