学习笔记----matlab 中的 钟摆问题(ode45)

Matlab 中的钟摆问题

如图
学习笔记----matlab 中的 钟摆问题(ode45)_第1张图片

编辑器

function[dx]=pendulum(t,x)
% 公式变形
%假设 Tc=0
%x(1)=theta x(2)=d(theta)=dx(1)
dx(1)=x(2);
dx(2)=-g/l*sin(x(1))-b/(m*l*l)*x(2);

dx=dx';% 让数据变成纵列

%利用ode45公式计算 在 [10]角速度是1;初速度为0;在030秒里面[0 30]
%ode45 公式:[t,y] = ode45(odefun,tspan,y0)
%[ts,xs]=ode45(@pendulum,[0 30],[1;0]); **在命令窗口来运行**
%plot(ts,xs(:,1))----x1  **在命令窗口来运行**
%plot(ts,xs(:,2))----x2 **在命令窗口来运行**
%相平面(phase plane):以状态变量为横坐标,以其一阶导数为纵坐标组成的直角坐标平面称为相平面。
%plot(xs(:,1),xs(:,2))---phase plane(相平面)  **在命令窗口来运行**

%代入数据
g=9.81;
l=3;
b=0.8;
m=1;
plot(ts,xs(:,1))-----x1/theta

学习笔记----matlab 中的 钟摆问题(ode45)_第2张图片

plot(ts,xs(: ,2)) ----- x2/速度

学习笔记----matlab 中的 钟摆问题(ode45)_第3张图片

相平面(phase plane )以状态变量为横坐标,以其一阶导数为纵坐标组成的直角坐标平面称为相平面。 plot(xs(:,1),xs(:,2))

学习笔记----matlab 中的 钟摆问题(ode45)_第4张图片

simulink

函数公式
学习笔记----matlab 中的 钟摆问题(ode45)_第5张图片

重点: 第二个integrator(积分) 把里面的数值改为1

因为 0的导数为 0;所以想看output值的话,要改为1才能看见output值
学习笔记----matlab 中的 钟摆问题(ode45)_第6张图片

simulink 结果

为什么会出现斜梯,而不是顺滑的曲线呢?
因为auto 设置的 stepsize 比较大,所以我们在model setting 里面改写 max step 从 auto 到 0.001


当不显示其他数据的时候

  1. 不要打勾(确定) limit data points to last


2.结果图里面的logging 里面不要选limit data point to last

学习笔记----matlab 中的 钟摆问题(ode45)_第7张图片

结果图

设置

记得不要选择 single simulation output 不然数据被单一化不能使用plot函数来画图 。
不然就会提醒位
错误使用 Simulink/SimulationOutput/plot
输入参数太多。

学习笔记----matlab 中的 钟摆问题(ode45)_第8张图片
callback

Model setting – Model properties
学习笔记----matlab 中的 钟摆问题(ode45)_第9张图片
Preloadfcn
在开始运行simulation的时候提前加载预先设定的函数

StopFcn
当sumulation结束的时候运行什么
学习笔记----matlab 中的 钟摆问题(ode45)_第10张图片

结果图

学习笔记----matlab 中的 钟摆问题(ode45)_第11张图片

简单的记录下笔记,欢迎指出错误

你可能感兴趣的:(matlab,mac)