| 查看: 1473 | 回复: 8 | ||||
glgjw银虫 (小有名气)
|
[求助]
matlab求带事件的微分方程总出错 已有1人参与
|
|
>> opts=odeset('events',@lift) >> [t,y,timeend]=ode45('mass1',[0 10],[0;0],opts) 上面的函数lift和mass1编写如下: 函数lift: >> function[value,isterminal,direction]=lift(t,y) value=160.5*y(1)+448*t-75 isterminal=1 direction=[] 函数mass1: function dy=mass1(t,y) dy=[y(2);(4.48*10^6*8*t/15/(6-y(1))-(7.35*10^6+4.48*10^6/(6-y(1)))*y(1)-17.785*10^3*y(2))/4080] 运行后的出错信息: dy = 0 0 ??? Function 'lower' is not defined for values of class 'function_handle'. Error in ==> lower at 26 [varargout{1:nargout}] = builtin('lower', varargin{:}); Error in ==> funfun\private\odeevents at 32 switch lower(eventFcn) Error in ==> ode45 at 209 [haveEventFcn,eventFcn,eventArgs,valt,teout,yeout,ieout] = ... 函数mass1肯定没有错误,大家检查其他的部分即可。谢谢! |
» 猜你喜欢
求调剂
已经有12人回复
通信工程求调剂!!!
已经有4人回复
材料工程085601,270求调剂
已经有46人回复
药学305求调剂
已经有5人回复
一志愿211,化学310分,本科重点双非,求调剂
已经有24人回复
272分材料子求调剂
已经有54人回复
085500求调剂材料
已经有11人回复
291分调剂
已经有7人回复
291 求调剂
已经有37人回复
一志愿中国科学院上海有机所,有机化学356分找调剂
已经有13人回复
2楼2016-02-17 22:39:49
wurongjun
专家顾问 (职业作家)
-

专家经验: +831 - 数学EPI: 9
- 应助: 791 (博后)
- 贵宾: 0.308
- 金币: 24609
- 散金: 310
- 红花: 75
- 帖子: 3004
- 在线: 881.4小时
- 虫号: 1368482
- 注册: 2011-08-14
- 性别: GG
- 专业: 计算数学与科学工程计算
- 管辖: 数学
【答案】应助回帖
感谢参与,应助指数 +1
|
一点点问题! 简单修改如下! opts=odeset('events',@lift); [t,y,timeend]=ode45(@mass1,[0 10],[0;0],opts) function[value,isterminal,direction]=lift(t,y) value=160.5*y(1)+448*t-75; isterminal=1; direction=[]; function dy=mass1(t,y) dy=[y(2);(4.48*10^6*8*t/15/(6-y(1))-(7.35*10^6+4.48*10^6/(6-y(1)))*y(1)-17.785*10^3*y(2))/4080]; 运行结果如下: >> t = 0 0.0040 0.0080 0.0120 0.0160 0.0200 0.0240 0.0280 0.0320 0.0367 0.0415 0.0463 0.0510 0.0562 0.0614 0.0666 0.0718 0.0773 0.0828 0.0884 0.0939 0.1005 0.1070 0.1136 0.1202 0.1246 0.1291 0.1336 0.1380 0.1425 0.1470 0.1514 0.1559 0.1581 0.1603 0.1625 0.1648 y = 0 0 0.0000 0.0008 0.0000 0.0030 0.0000 0.0067 0.0001 0.0117 0.0001 0.0177 0.0002 0.0247 0.0003 0.0322 0.0005 0.0402 0.0007 0.0499 0.0009 0.0593 0.0012 0.0681 0.0016 0.0759 0.0020 0.0828 0.0024 0.0879 0.0029 0.0907 0.0034 0.0913 0.0039 0.0896 0.0044 0.0854 0.0048 0.0792 0.0052 0.0713 0.0057 0.0606 0.0060 0.0492 0.0063 0.0382 0.0065 0.0283 0.0067 0.0228 0.0067 0.0184 0.0068 0.0152 0.0069 0.0135 0.0069 0.0132 0.0070 0.0143 0.0071 0.0168 0.0072 0.0205 0.0072 0.0227 0.0073 0.0252 0.0073 0.0278 0.0074 0.0307 timeend = 0.1648 >> |

3楼2016-02-18 09:54:32
glgjw
银虫 (小有名气)
- 应助: 2 (幼儿园)
- 金币: 252.4
- 帖子: 232
- 在线: 93.2小时
- 虫号: 2115194
- 注册: 2012-11-08
- 性别: GG
- 专业: 信息处理方法与技术
4楼2016-02-18 11:04:42
wurongjun
专家顾问 (职业作家)
-

专家经验: +831 - 数学EPI: 9
- 应助: 791 (博后)
- 贵宾: 0.308
- 金币: 24609
- 散金: 310
- 红花: 75
- 帖子: 3004
- 在线: 881.4小时
- 虫号: 1368482
- 注册: 2011-08-14
- 性别: GG
- 专业: 计算数学与科学工程计算
- 管辖: 数学

5楼2016-02-18 11:16:38
glgjw
银虫 (小有名气)
- 应助: 2 (幼儿园)
- 金币: 252.4
- 帖子: 232
- 在线: 93.2小时
- 虫号: 2115194
- 注册: 2012-11-08
- 性别: GG
- 专业: 信息处理方法与技术
6楼2016-02-18 11:40:08
wurongjun
专家顾问 (职业作家)
-

专家经验: +831 - 数学EPI: 9
- 应助: 791 (博后)
- 贵宾: 0.308
- 金币: 24609
- 散金: 310
- 红花: 75
- 帖子: 3004
- 在线: 881.4小时
- 虫号: 1368482
- 注册: 2011-08-14
- 性别: GG
- 专业: 计算数学与科学工程计算
- 管辖: 数学

7楼2016-02-18 11:48:11
glgjw
银虫 (小有名气)
- 应助: 2 (幼儿园)
- 金币: 252.4
- 帖子: 232
- 在线: 93.2小时
- 虫号: 2115194
- 注册: 2012-11-08
- 性别: GG
- 专业: 信息处理方法与技术
|
您看看: >> [t,y]=ode45(@mass1,[0 10],[0;0],options) dy = 0 0 ??? Error: File: d:\MATLAB7\work\lift.m Line: 1 Column: 1 Missing variable or function. Error in ==> funfun\private\odeevents at 29 eventValue = feval(eventFcn,t0,y0,eventArgs{:}); Error in ==> ode45 at 209 [haveEventFcn,eventFcn,eventArgs,valt,teout,yeout,ieout] = ... 好像说lift.m第一行第一列缺变量,也不缺啊。 |
8楼2016-02-18 11:55:10
wurongjun
专家顾问 (职业作家)
-

专家经验: +831 - 数学EPI: 9
- 应助: 791 (博后)
- 贵宾: 0.308
- 金币: 24609
- 散金: 310
- 红花: 75
- 帖子: 3004
- 在线: 881.4小时
- 虫号: 1368482
- 注册: 2011-08-14
- 性别: GG
- 专业: 计算数学与科学工程计算
- 管辖: 数学
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
glgjw: 金币+20, ★★★★★最佳答案, 感谢热情帮助!! 2016-02-18 20:58:16
glgjw: 金币+20, ★★★★★最佳答案, 感谢热情帮助!! 2016-02-18 20:58:16
|
你把下面代码做一个新的m文件,运行下 function cs opts=odeset('events',@lift); [t,y,timeend]=ode45(@mass1,[0 10],[0;0],opts) function[value,isterminal,direction]=lift(t,y) value=160.5*y(1)+448*t-75; isterminal=1; direction=[]; function dy=mass1(t,y) dy=[y(2);(4.48*10^6*8*t/15/(6-y(1))-(7.35*10^6+4.48*10^6/(6-y(1)))*y(1)-17.785*10^3*y(2))/4080]; |

9楼2016-02-18 15:25:36














回复此楼