1 、 直 接 写 方 程 diff(y, 2) == k*(1 - y^2)*diff(y) - y , 借 助 odeToVectorField 和
matlabFunction 和 ode45 函数求解。优点是,构造的方程非常直接;
syms y(t);
[V] = odeToVectorField(diff(y, 2) == k*(1 - y^2)*diff(y) - y);%把高阶变成一阶;
M = matlabFunction(V,'vars', {'t','Y'});
[t, y] = ode45(M,[0 30],[xxx yyy]);
n1=length(y);
xxx=y(n1,1);
yyy=y(n1,2); %
2、把一个高阶微分方程,拆成多个一阶的微分方程组;并形成一个独立的文件。不好
的地方是,怎么拆解,需要你有数学功底;
% 范德波振子的方程组;
% 有周期性外力 8*sin(4*t) ;
% y(1) 代表的就是 y,振子的幅度;
% y(2) 代表的是 y',振子幅度的一阶导数;
function dydt = vdp1(t,y,params)
k = params(1); %外力的幅度和频率也可以是参数;
dydt = [y(2); k*(1-y(1)^2)*y(2)-y(1)+8*sin(4*t)];
end
[T1,Y1]=ode45(@(t,X) vdp1(t,X,params),[0 5],[xxx;yyy]);
xxx,yyy 是初值;
评论0
最新资源