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

Matlab 中的钟摆问题

如图
在这里插入图片描述

编辑器

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

simulink

函数公式
在这里插入图片描述

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

因为 0的导数为 0;所以想看output值的话,要改为1才能看见output值
在这里插入图片描述

simulink 结果

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

在这里插入图片描述
当不显示其他数据的时候

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

在这里插入图片描述
2.结果图里面的logging 里面不要选limit data point to last

在这里插入图片描述

结果图

在这里插入图片描述

设置

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

在这里插入图片描述
callback

Model setting – Model properties
在这里插入图片描述
Preloadfcn
在开始运行simulation的时候提前加载预先设定的函数

StopFcn
当sumulation结束的时候运行什么
在这里插入图片描述

结果图

在这里插入图片描述

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

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Lotka-Volterra模型是一种描述猎食者与猎物相互作用动态的数学模型,常用于生态学领域。在MATLAB实现这个模型,可以通过编写一段代码来模拟和计算。 首先,我们需要定义一些参数,例如猎食者的增长率alpha、猎物的自然死亡率beta、猎食者捕食率gamma和猎食者的自然死亡率delta。这些参数可以根据具体情况设定。 然后,我们可以使用欧拉方法或Runge-Kutta方法来进行数值计算。这些方法可以用于迭代计算猎食者和猎物的数量随时间的变化。 下面是一个简单的MATLAB代码实现Lotka-Volterra模型的示例: ```matlab % 定义参数 alpha = 0.2; beta = 0.1; gamma = 0.3; delta = 0.15; % 初始化种群数量 prey = 100; % 猎物数量 predator = 10; % 猎食者数量 % 定义时间范围和步长 tspan = 0:0.1:100; % 使用ode45函数进行数值计算 [t, y] = ode45(@(t, y) [alpha*y(1)-beta*y(1)*y(2); -gamma*y(2)+delta*y(1)*y(2)], tspan, [prey; predator]); % 绘制结果 plot(t, y(:, 1), 'r', 'LineWidth', 2); % 猎物数量随时间的变化曲线 hold on; plot(t, y(:, 2), 'b', 'LineWidth', 2); % 猎食者数量随时间的变化曲线 % 添加标题和标签 title('Lotka-Volterra模型'); xlabel('时间'); ylabel('数量'); legend('猎物', '猎食者'); ``` 这段代码使用ode45函数进行数值计算,其第一个参数是一个函数句柄,用于定义猎食者和猎物数量随时间变化的微分方程。通过调用ode45函数,可以得到在给定时间范围内猎食者和猎物数量的数值解。最后,使用plot函数将结果绘制出来。 通过以上的MATLAB代码,我们可以模拟和计算Lotka-Volterra模型猎食者和猎物数量随时间的变化,并可以可视化结果。这样可以帮助我们更好地理解猎食者和猎物之间的相互作用关系以及动态演化过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值