Plot ??? 使用==>;时出错;绘图-无法从sym转换为双精度

Plot ??? 使用==>;时出错;绘图-无法从sym转换为双精度,plot,matlab,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 = 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绘制lambda时,我得到“无法从sym转换为double”错误消息。我对Matlab不是特别在行,所以我们将非常感激您的帮助

绘图功能仅适用于数字输入。
lambda
P
都是符号表达式(至少在重写
P
之前,通过将其设置为积分后的向量),不能直接转换为浮点。如果尝试类似于
double(sym('exp(x)')
的操作,则会出现相同的错误。你有两个选择。第一个是符号工具箱中的函数:

...
P = int(x,lambda);
ezplot(P,[-5 5]); % Plot's P from lambda = -5 to lambda = 5
或者您可以使用以下功能:

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

负值的警告
plot
函数仅适用于数值输入。
lambda
P
都是符号表达式(至少在重写
P
之前,通过将其设置为积分后的向量),不能直接转换为浮点。如果尝试类似于
double(sym('exp(x)')
的操作,则会出现相同的错误。你有两个选择。第一个是符号工具箱中的函数:

...
P = int(x,lambda);
ezplot(P,[-5 5]); % Plot's P from lambda = -5 to lambda = 5
或者您可以使用以下功能:

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

负值的警告,这是R吗?如果是的话,你应该给它贴上标签。这是R吗?如果是这样,你应该给它贴上标签。