各位前辈好,在使用matlab解方程式作图时遇到了一些麻烦
我会先附上我的程式码,然后简述我要做的,并指出现在遇到的问题,请知道怎么办的人
能够帮忙一下,谢谢。
tic
clc;clear all;close all;
%设质量=1 自然频率=1 阻尼比=0.25
m=1;
wn=2*pi;
zeta=0.25;
c=2*m*wn*zeta;
t=0:1:10;
syms y x
u1=dsolve('D2y+2*0.25*2*pi*Dy+2*pi*2*pi*y=(-x)*(exp(-0.5*x))*sin(0.2*x)','Dy(0)=0','y(0)=0','x');
v1=diff(u1,x,1);
EDt_1=int(c*v1.^2);
EDt11=subs(EDt_1,x,t);
EDt1=eval(EDt11);
figure(1);
plot(t,EDt1);
xlabel('t');
ylabel('ED(t)');
legend('a=0.5,b=0.2');
grid on;
title('ED(t),b=0.2');
toc
我想要解一个微分方程
D2y+2*0.25*2*pi*Dy+2*pi*2*pi*y=(-x)*(exp(-0.5*x))*sin(0.2*x),并给定初始条件
y(0)=0,Dy(0)=0
这个微分方程的解u1是代表一个有阻尼的强迫振动的位移历时,所以将u1进行一次微分
以后可以得到这个系统的速度历时v1。
接着我要求这个系统在阻尼的作用下所耗散的能量,公式是EDt_1=sigma(c*v1^2)
接着将这个EDt_1转化成数值EDt1=eval(EDt11),并随时间t作图
问题现在我一直碰到一个问题
Error using plot
Data must be numeric, datetime, duration or an array convertible to double.
Error in Untitled9 (line 28)
plot(t,EDt1);
将我的EDt1结果打开来看发现都还是1X1 sym的数据没有变成数值(如图)
http://imgur.com/a/F2zFo
发现问题应该是出在我把v1平方了,请问我该怎么解决呢?