作业帮 > 综合 > 作业

MATLAB解二阶非线性方程

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/06/23 21:59:06
MATLAB解二阶非线性方程
y‘’+0.2*y‘-y+y^3=0.3*cos(w*t),y(0)=0,y'(0)=0
给予不同的w于受迫振动
绘制一个解图像从t=0到t=100对于每一个频率w=0.8,0.9,……,1.4,1.5.
MATLAB解二阶非线性方程
在edit编辑器中输入并保存:

clc;clear;
T=0:.1:100;
w=input('输入w:');
if (0.8<=w&&w<=1.5)
   error('不在范围内')
end
f=@(t,x)[x(2);-(0.2*x(2)-x(1)+x(1)^3)-0.3*cos(w*t)];
[t,y]=ode45(f,T,[0;0]);
plot(t,y(:,1));
text(2,max(y(:,1)/1.1),strcat('\omega=',(num2str(w))));

运行后在主窗口中输入 0.9
图像:

再问: 你能不能给个loop不断赋值w最后得出所有的解?
再答: 用for就行: T=0:.5:100;W=0.8:0.1:1.5; Y=zeros(length(T),length(W)); k=1; for w=W f=@(t,x)[x(2);-(0.2*x(2)-x(1)+x(1)^3)-0.3*cos(w*t)]; [t,y]=ode45(f,T,[0;0]); Y(:,k)=y(:,1); k=k+1; end % 这样对于每一个w按顺序就有Y的相应的列与之对应.