/ / ??? Помилка використання ==> plot - перетворення в подвійне з sym не можливе - plot, matlab

??? Помилка з використанням ==> сюжет - перетворення в подвійне значення від sym not impossible - plot, matlab

У мене є проблеми з кодом. Ось це:

lambdaz = 1.2;
n = 24;
mu = 0.00055e9;

lambda = sym("lambda","clear");
W = (((2.*mu)./n.^2)).*((lambda.^n)+(lambdaz.^n)+((lambda.^-n).*(lambdaz.^-n))-3);
dW_dlambda = diff(W, lambda);

W2=(((2.*mu)./n.^2).*(lambda.^n))+(((2.*mu)./n.^2).*(lambdaz.^n))+(((2.*mu)./n.^2).*((lambda.^-n).*(lambdaz.^-n)))-(3.*((2.*mu)./n.^2))
dW2_dlambda=diff(W2,lambda)

x=((((lambda.^2).*(lambdaz))-1).^-1).*(dW_dlambda);

x2=((((lambda.^2).*(lambdaz))-1).^-1).*(dW2_dlambda)

P2 = int(x2,lambda)

P=int(x,lambda);
P=(0:1000:26700)

plot(lambda,P)

Коли я намагаюся побудувати лямбда на P, я отримую повідомлення про помилку "перетворення в подвійне з sym не можливе". Я не особливо фантастичний в Matlab, тому будь-яка допомога буде вдячно отримана!

Відповіді:

1 для відповіді № 1

The plot функція працює лише для числових входів. І те й інше lambda і P є символічними виразами (принаймні перед виписанням P встановивши його рівним вектору після інтеграції), який не можна безпосередньо перетворити на плаваючу точку. Ви отримуєте таку ж помилку, якщо спробуєте щось подібне double(sym("exp(x)")). У вас є два варіанти. Перший - це ezplot функція в панелі символів:

...
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.