Matlab之代数方程求解:微分方程组和相平面图
目录
微分方程组和相平面图
1、求微分方程组的解
把每个方程传递给dsolve即可
s = dsolve('DX = Y','DY = -X','X(0)= -1','Y(0)=2');
s.X; s.Y %求根,方程组的解以向量的形式返回,下边可以提取它们
ezplot(s.X),set(findobj('Type','line'),'Color','r') %调用findobj查找图象中的线条,set为线条设置颜色:
hold on
ezplot(s.Y)
h=get(gca,'children'); %调用get 命令将返回当前图形对象的句柄
set(h(1),'linestyle','--') %使用set命令改变它
hold off
2、求微分方程组
考虑一个质量弹簧系统并且看看如何得到它的位置解、动量并绘制相图,用x(t)表示质量弹簧系统的质量所在位置,p(t)表示它的动量。并假设这种情况遵循阻尼振荡方程,求解x(t)和p(t),并绘制系统的相图
s = dsolve('2*D2x+Dx+8*x = 0','Dp = -p - 17*x','x(0)=4',' Dx(0)=0','p(0)=0')
%输入s.x 和s.p即可访问方程的解
s.x %系统中位置与时间的关系函数
s.p %得到动量
subplot(3,1,1)
ezplot(s.x,[0 10]) %绘制位置随时间变化的函数图象,图中可知,质量的位置按指数衰减的规律描述出来,这正是阻尼系统所期望的
title('质量的位置')
subplot(3,1,2)
ezplot(s.p,[0 10]) %
title('动量') %动量也是一个衰减振荡,不过振幅大了很多
subplot(3,1,3)
tvalues = (0:0.1:10); %定义一个产生时间间隔的数值
xval = subs(s.x,'t',tvalues); %subs 在这个时间间隔内产生表示位置与动量函数的数值
pval = subs(s.p,'t',tvalues);
plot(xval,pval) %相图是一个p-x图象,调用ezplot同时传递两个函数给它:
xlabel('x'),ylabel('p'),title('质量弹簧的相图')