
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) 展开
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) 展开
展开全部
知道了。改成这样就可以了。
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)
%========================
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)
%========================
展开全部
你仔细观察一下,你积分以后的常数没有赋值,所以总是有 syms 格式的 C1 C2
现在前面 给他们赋值 在 subs()
现在前面 给他们赋值 在 subs()
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用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.
%
比如
>>
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.
%
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询