Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
 
 
主题工具 显示模式
旧 2019-11-29, 21:00   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
默认 MatLab ODE45中的重复方程式求解

我正在尝试编写MatLab代码,该代码可以扩展要解决的ODE数量。这是我目前拥有的代码,为简单起见,我从弹簧质量阻尼器系统开始。

clear;clc;close all; tspan=[0:0.01:1]; x0=[1;0;-1;0;7;0;-7;0;5;0;-5;0;10;0;-10;0]; [t,x] = ode45(@Spring_Mass_Damper,tspan,x0); figure(1) plot(t,x(:,1)); hold on plot(t,x(:,3)); hold on plot(t,x(:,5)); hold on plot(t,x(:,7)); hold on plot(t,x(:,9)); hold on plot(t,x(:,11)); hold on plot(t,x(:,13)); hold on plot(t,x(:,15)); grid on xlabel('Time') ylabel('Displacement(x)') title('Displacement Vs Time') function xp = Spring_Mass_Damper(t,x) c1=10; G=9.81; m1=1; k1=2000; xp=[[x(2)];(-(c1/m1).*[x(2)]-(k1/m1).*[x(1)])-(G.*m1); [x(4)];(-(c1/m1).*[x(4)]-(k1/m1).*[x(3)])-(G.*m1); [x(6)];(-(c1/m1).*[x(6)]-(k1/m1).*[x(5)])-(G.*m1); [x(8)];(-(c1/m1).*[x(8)]-(k1/m1).*[x(7)])-(G.*m1); [x(10)];(-(c1/m1).*[x(10)]-(k1/m1).*[x(9)])-(G.*m1); [x(12)];(-(c1/m1).*[x(12)]-(k1/m1).*[x(11)])-(G.*m1); [x(14)];(-(c1/m1).*[x(14)]-(k1/m1).*[x(13)])-(G.*m1); [x(16)];(-(c1/m1).*[x(16)]-(k1/m1).*[x(15)])-(G.*m1)]; end 我所关心的主要问题是以下代码区域:

xp=[[x(2)];(-(c1/m1).*[x(2)]-(k1/m1).*[x(1)])-(G.*m1); [x(4)];(-(c1/m1).*[x(4)]-(k1/m1).*[x(3)])-(G.*m1); [x(6)];(-(c1/m1).*[x(6)]-(k1/m1).*[x(5)])-(G.*m1); [x(8)];(-(c1/m1).*[x(8)]-(k1/m1).*[x(7)])-(G.*m1); [x(10)];(-(c1/m1).*[x(10)]-(k1/m1).*[x(9)])-(G.*m1); [x(12)];(-(c1/m1).*[x(12)]-(k1/m1).*[x(11)])-(G.*m1); [x(14)];(-(c1/m1).*[x(14)]-(k1/m1).*[x(13)])-(G.*m1); [x(16)];(-(c1/m1).*[x(16)]-(k1/m1).*[x(15)])-(G.*m1)]; 有没有一种简单的方法可以实现相同数量的系统(ODE),而无需在模块中复制和粘贴第一个方程式并手动更改x索引?



更多&回答...
poster 当前离线   回复时引用此帖
 

主题工具
显示模式

发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 03:20


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.