用matlab画周期驱动的单摆非线性系统角度与时间的曲线图,将初始角度分别为45°和45.001°,初始角速度均为45度每秒的两种情况画在一起
时间: 2024-03-10 19:50:56 浏览: 176
用MATLAB画线性图
好的,下面是用Matlab画周期驱动的单摆非线性系统角度与时间的曲线图,将初始角度分别为45°和45.001°,初始角速度均为45度每秒的两种情况画在一起的程序:
```matlab
% 定义常数
g = 9.81; % 重力加速度
L = 1; % 摆长
A = 0.2; % 驱动力的振幅
omega = 2/3; % 驱动力的角频率
% 定义初值
theta1 = 45; % 初始摆角,单位为度
theta_dot1 = 45*pi/180; % 初始角速度,单位为弧度/秒
theta2 = 45.001; % 初始摆角,单位为度
theta_dot2 = 45*pi/180; % 初始角速度,单位为弧度/秒
% 将初值转化为弧度制
theta1 = theta1*pi/180;
theta2 = theta2*pi/180;
% 定义时间间隔和时间步长
T = 10; % 总时间
dt = 0.01; % 时间步长
t = 0:dt:T; % 时间间隔
% 初始化摆角和角速度
theta1_array = zeros(size(t));
theta_dot1_array = zeros(size(t));
theta2_array = zeros(size(t));
theta_dot2_array = zeros(size(t));
theta1_array(1) = theta1;
theta_dot1_array(1) = theta_dot1;
theta2_array(1) = theta2;
theta_dot2_array(1) = theta_dot2;
% 数值求解微分方程
for i = 2:length(t)
theta_dot_dot1 = -g/L*sin(theta1_array(i-1)) + A*cos(omega*t(i-1)); % 求解加速度
theta_dot_dot2 = -g/L*sin(theta2_array(i-1)) + A*cos(omega*t(i-1)); % 求解加速度
theta_dot1_array(i) = theta_dot1_array(i-1) + dt*theta_dot_dot1; % 求解角速度
theta_dot2_array(i) = theta_dot2_array(i-1) + dt*theta_dot_dot2; % 求解角速度
theta1_array(i) = theta1_array(i-1) + dt*theta_dot1_array(i); % 求解摆角
theta2_array(i) = theta2_array(i-1) + dt*theta_dot2_array(i); % 求解摆角
end
% 将摆角转化为角度制
theta1_array = theta1_array*180/pi;
theta2_array = theta2_array*180/pi;
% 画图
plot(t,theta1_array,'b',t,theta2_array,'r')
xlabel('时间 (秒)')
ylabel('摆角 (度)')
title('周期驱动的单摆非线性系统角度与时间的曲线图')
legend('初始角度为45°','初始角度为45.001°')
```
这个程序可以画出周期驱动的单摆非线性系统角度与时间的曲线图,将初始角度分别为45°和45.001°,初始角速度均为45度每秒的两种情况画在一起。蓝色曲线代表初始角度为45°的情况,红色曲线代表初始角度为45.001°的情况。你可以观察两条曲线之间的差异。请注意,由于这是一个非线性系统,两个初始条件的运动轨迹可能会有很大的不同。
阅读全文