一个二阶非线性方程可以转化成状态空间表达,对于如下这类特定的表达:
matlab提供了直接的方程方便我们计算,本文研究如何用Matlab对这类表达的二阶非线性方程进行相平面分析。
首先把非线性方程转化成我们想要的表达方式:
考虑如下线性二阶常微分方程:
得到:
代码
clear;
%定义我们的非线性方程
f = @(t,X) [X(2); -X(1)]
%不同初值条件下进行求解并画图
for x0=1:1:10
%计算t从0,递增至10,x1初值为x0,x2初值为0 情况下上述非线性方程的解
[t,xs] = ode45(f,[0:0.01:10],[x0;0]);
plot(xs(:,1),xs(:,2))
hold on
end
hold off
%使x y轴等长,提升圆的显示效果
axis equal
title('相图')
xlabel('x1')
ylabel('x2')
运行得到输出结果如下:
未解决的问题:
对于某些存在二次平方项的二阶非线性方程,似乎Matlab解不出来