声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1580|回复: 6

[编程技巧] 【请教】ODE中如何设置条件语句?

[复制链接]
发表于 2008-11-11 08:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
我用ODE解运动方程:Mx''+Cx'+Kx=f
下面是引用的程序

function tangxioder
clear;clc
x0=zeros(6,1);
[t,x]=ode45(@tangxi,[0,100],x0);
plot(t,x(:,1))

function dx=tangxi(t,x)
f=[sin(t);0;0];
M=eye(3);
C=eye(3)*0.1;
K=eye(3)-0.5*diag(ones(2,1),1)-0.5*diag(ones(2,1),-1);
dx=[x(4:6);inv(M)*(f-C*x(4:6)-K*x(1:3))];

我的问题是:我把f改成这样行不行?
if t<=3,
     f1=t*100;
elseif t>3&t<=6,
     f1=(6-t)*100;
else
     f1=0;
end
f=[f1;0;0];
如果行的话,该如何安插?我试过放在原来的位置取代原来的 f 好像行不通

想了一整天了,烦请各位高手指教,先谢过了!

[ 本帖最后由 tangxi 于 2008-11-11 09:54 编辑 ]
回复
分享到:

使用道具 举报

发表于 2008-11-11 09:26 | 显示全部楼层

回复 楼主 tangxi 的帖子

原来的f是3*1的
 楼主| 发表于 2008-11-11 09:52 | 显示全部楼层

回复 沙发 sigma665 的帖子

不好意思,我改了一下
发表于 2008-11-11 19:31 | 显示全部楼层

回复 楼主 tangxi 的帖子

将t分为三段求三次,不知可否?
 楼主| 发表于 2008-11-12 02:27 | 显示全部楼层

回复 地板 ch_j1985 的帖子

我尝试了您说的,语言编排上老出错
而且分三段理论上行的通吗?
发表于 2008-11-12 21:49 | 显示全部楼层

回复 楼主 tangxi 的帖子

这里面是对时间进行分段,上面的做法是不合理的
需要调用event这个函数,你查一下ode45
就知道了

评分

1

查看全部评分

 楼主| 发表于 2008-11-12 23:36 | 显示全部楼层

回复 6楼 无水1324 的帖子

感谢院长,我按您说的试试
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-26 12:01 , Processed in 0.171811 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表