matlab求救!无法将sym类型转换为double类型

源程序如下,求信号的各种响应yzi=dsolve('D2y+3*Dy+2*y=0','y(0)=1,Dy(0)=1')yzs=dsolve('D2y+3*Dy+2*y=2... 源程序如下,求信号的各种响应
yzi=dsolve('D2y+3*Dy+2*y=0','y(0)=1,Dy(0)=1')
yzs=dsolve('D2y+3*Dy+2*y=2','y(0)=0,Dy(0)=1')
y=yzi+yzs
yht=dsolve('D2y+3*Dy+2*y=0')
yt=dsolve('D2y+3*Dy+2*y=2')
yp=yt-yht
yh=y-yp
t=linspace(0,7,300);
figure(1)
y_n=subs(y);yh_n=subs(yh);yp_n=subs(yp)
plot(t,y_n,t,yh_n,'m:',t,yp_n,'r-.','linewidth',2)
xlabel('T(s)'),title('全响应,自由响应,强迫响应')
legend('全响应','自由响应','强迫响应',0)
figure(2)
yzi_n=subs(yzi);yzs_n=subs(yzs)
plot(t,y_n,t,yzi_n,'m:',t,yzs_n,'r-.','linewidth',2)
legend('全响应','自由响应','强迫响应',0)
xlabel('T(s)'),title('全响应,零输入响应,零状态响应')

运行出错??? Error using ==> plot
Conversion to double from sym is not possible.

Error in ==> shiy4_2 at 12
plot(t,y_n,t,yh_n,'m:',t,yp_n,'r-.','linewidth',2)

我知道是yh_n=subs(yh);yp_n=subs(yp)没有执行成功
网上搜索很久,试过double() vpa()均不成功

希望大侠援手!
常数是可以自己求出来的,我有疑问就是运行后yht =

C8/exp(t) + C9/exp(2*t)

yt =

C11/exp(t) + C12/exp(2*t) + 1
本来应该C8,C11;C9,C12应该是一样的
我用的是2008b

二楼回答有点小问题,算出来的自由响应与强迫响应不对
正确的是
yp=1 yh=2*exp(-t)-2*exp(-2*t)
展开
 我来答
化学工程
推荐于2017-09-15 · TA获得超过8901个赞
知道大有可为答主
回答量:2212
采纳率:80%
帮助的人:3400万
展开全部
知道了。改成这样就可以了。
yht=dsolve('D2y+3*Dy+2*y=0','y(0)=1,Dy(0)=1')
yt=dsolve('D2y+3*Dy+2*y=2','y(0)=0,Dy(0)=1')

%========================
yzi=dsolve('D2y+3*Dy+2*y=0','y(0)=1,Dy(0)=1')
yzs=dsolve('D2y+3*Dy+2*y=2','y(0)=0,Dy(0)=1')
y=yzi+yzs
yht=dsolve('D2y+3*Dy+2*y=0','y(0)=1,Dy(0)=1')
yt=dsolve('D2y+3*Dy+2*y=2','y(0)=0,Dy(0)=1')
yp=yt-yht
yh=y-yp
t=linspace(0,7,300);
figure(1)
y_n=subs(y);yh_n=subs(yh);yp_n=subs(yp)
plot(t,y_n,t,yh_n,'m:',t,yp_n,'r-.','linewidth',2)
xlabel('T(s)'),title('全响应,自由响应,强迫响应')
legend('全响应','自由响应','强迫响应',0)
figure(2)
yzi_n=subs(yzi);yzs_n=subs(yzs)
plot(t,y_n,t,yzi_n,'m:',t,yzs_n,'r-.','linewidth',2)
legend('全响应','自由响应','强迫响应',0)
xlabel('T(s)'),title('全响应,零输入响应,零状态响应')

结果:
yzi =

-2*exp(-2*t)+3*exp(-t)

yzs =

1-exp(-t)

y =

-2*exp(-2*t)+2*exp(-t)+1

yht =

-2*exp(-2*t)+3*exp(-t)

yt =

1-exp(-t)

yp =

1-4*exp(-t)+2*exp(-2*t)

yh =

-4*exp(-2*t)+6*exp(-t)
%========================
anthony87
2009-05-14 · TA获得超过1036个赞
知道小有建树答主
回答量:459
采纳率:0%
帮助的人:250万
展开全部
你仔细观察一下,你积分以后的常数没有赋值,所以总是有 syms 格式的 C1 C2
现在前面 给他们赋值 在 subs()
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
创作者B7Vel9XD1e
2019-02-20 · TA获得超过3782个赞
知道大有可为答主
回答量:3051
采纳率:33%
帮助的人:174万
展开全部
使用double函数
比如
>>
root=solve('x^2+5*x-10')
root
=
-5/2+1/2*65^(1/2)
-5/2-1/2*65^(1/2)
>>
class(root)
ans
=
sym
>>
root=double(root)
root
=
1.5311
-6.5311
>>
class(root)
ans
=
double
%by
dynamic
%see
also
http://www.matlabsky.com
%contact
me
matlabsky@gmail.com
%2009.2.
%
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式