Функция plot
работает только для числовых входов.И lambda
, и P
являются символическими выражениями (по крайней мере, до перезаписи P
, установив его равным вектору после интегрирования), которые нельзя напрямую преобразовать в плавающую точку.Вы получите ту же ошибку, если попытаетесь что-то вроде double(sym('exp(x)'))
.У вас есть два варианта.Первая - это функция ezplot
в Symbolic Toolbox:
...
P = int(x,lambda);
ezplot(P,[-5 5]); % Plot's P from lambda = -5 to lambda = 5
. Или вы можете использовать функцию subs
:
...
P = int(x,lambda);
lambda = -5:0.01:5;
plot(lambda,real(subs(P,'lambda',lambda)))
axis([lambda(1) lambda(end) -1e15 1e15])
Я использовал real
, чтобы подавить предупреждение для отрицательных значений lambda
.