| 查看: 544 | 回复: 11 | |||
| 当前主题已经存档。 | |||
monitor2885至尊木虫 (职业作家)
队长
|
[交流]
【求助】u顺次取值
|
||
|
function test global u t=0:1:10; [t,y]=ode45(@ivpodefun,t,[0 2]); plot(t,y(:,1),'ro-',t,y(:,2),'b^-') function dydt=ivpodefun(t,y,u) global u u=xlsread('data.xls');% u在excel里面是一列数,1;2;3;4;5;6;5;4;3;2;1; dydt=zeros(2,1); dydt(1)=y(2); dydt(2)=u*(1-y(1)^2)*y(2)-y(1); 目的:让时间运行一个值,参数u就取一个值,顺次取值。u的这11个数是从excel写入的。上面这些程序似乎要加几句,谢谢帮忙。 |
» 猜你喜欢
全日制(定向)博士
已经有5人回复
假如你的研究生提出不合理要求
已经有10人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
参与限项
已经有3人回复
实验室接单子
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
求助:我三月中下旬出站,青基依托单位怎么办?
已经有12人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复

change0618
铁杆木虫 (著名写手)
方丈大师
- 应助: 44 (小学生)
- 金币: 17724.5
- 红花: 17
- 帖子: 2413
- 在线: 546.7小时
- 虫号: 496517
- 注册: 2008-01-19
- 专业: 化学反应工程
2楼2009-10-14 12:32:25
change0618
铁杆木虫 (著名写手)
方丈大师
- 应助: 44 (小学生)
- 金币: 17724.5
- 红花: 17
- 帖子: 2413
- 在线: 546.7小时
- 虫号: 496517
- 注册: 2008-01-19
- 专业: 化学反应工程
3楼2009-10-14 12:36:53
change0618
铁杆木虫 (著名写手)
方丈大师
- 应助: 44 (小学生)
- 金币: 17724.5
- 红花: 17
- 帖子: 2413
- 在线: 546.7小时
- 虫号: 496517
- 注册: 2008-01-19
- 专业: 化学反应工程
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
nono2009(金币+3,VIP+0):谢谢热心帮助。欢迎常来交流。 10-14 13:12
monitor2885(金币+10,VIP+0):的确牛B,还得继续请教。 10-14 14:13
nono2009(金币+3,VIP+0):谢谢热心帮助。欢迎常来交流。 10-14 13:12
monitor2885(金币+10,VIP+0):的确牛B,还得继续请教。 10-14 14:13
|
function test clear clc global u u0=xlsread('data.xls');% u在excel里面是一列数,1;2;3;4;5;6;5;4;3;2;1; t0=0:1:10; y0=[0 2]; tt=[];yy=[]; for i=1:length(t0)-1 t=[t0(i), t0(i+1)]; u=u0(i); [t,y]=ode45(@ivpodefun,t,y0); y0=y(end,: ); tt=[tt;t]; yy=[yy;y]; end figure plot(tt,yy(:,1),'ro-',tt,yy(:,2),'b^-') function dydt=ivpodefun(t,y) global u dydt=[y(2); u*(1-y(1)^2)*y(2)-y(1)]; [ Last edited by change0618 on 2009-10-14 at 13:01 ] |
4楼2009-10-14 12:49:47
monitor2885
至尊木虫 (职业作家)
队长
- 应助: 6 (幼儿园)
- 贵宾: 0.339
- 金币: 38700.5
- 散金: 147
- 红花: 22
- 帖子: 4943
- 在线: 2166.8小时
- 虫号: 701577
- 注册: 2009-02-15
- 性别: GG
- 专业: 生态系统生态学

5楼2009-10-14 14:14:58
change0618
铁杆木虫 (著名写手)
方丈大师
- 应助: 44 (小学生)
- 金币: 17724.5
- 红花: 17
- 帖子: 2413
- 在线: 546.7小时
- 虫号: 496517
- 注册: 2008-01-19
- 专业: 化学反应工程
6楼2009-10-14 16:40:20
monitor2885
至尊木虫 (职业作家)
队长
- 应助: 6 (幼儿园)
- 贵宾: 0.339
- 金币: 38700.5
- 散金: 147
- 红花: 22
- 帖子: 4943
- 在线: 2166.8小时
- 虫号: 701577
- 注册: 2009-02-15
- 性别: GG
- 专业: 生态系统生态学

7楼2009-10-14 18:39:44
change0618
铁杆木虫 (著名写手)
方丈大师
- 应助: 44 (小学生)
- 金币: 17724.5
- 红花: 17
- 帖子: 2413
- 在线: 546.7小时
- 虫号: 496517
- 注册: 2008-01-19
- 专业: 化学反应工程
★ ★ ★ ★ ★ ★ ★
monitor2885(金币+5,VIP+0):y(end,:)中的end和冒号分别指代谁呢? 10-15 00:10
sunxiao(金币+2,VIP+0):很好,很有耐心 10-15 05:00
monitor2885(金币+5,VIP+0):y(end,:)中的end和冒号分别指代谁呢? 10-15 00:10
sunxiao(金币+2,VIP+0):很好,很有耐心 10-15 05:00
|
for i=1:length(t0)-1 t=[t0(i), t0(i+1)]; %u取值的不同,将积分区间依次分成了10段 u=u0(i); [t,y]=ode45(@ivpodefun,t,y0); y0=y(end,: ); % 设置下一积分区间的初值,因为y0=[0 2]只是t=0时的初值。在积分区间t=[t0(i+1), t0(i+2)]时,初值应该变为t0(i+1)对应的y(end,: )值。 tt=[tt;t]; % 将本次积分区间点与前面的积分区间点合并 yy=[yy;y]; % 将本次积分区间点对应的函数值与前面的函数值合并 end 有一个缺点就是由于分段区间是闭区间,所以在分段点(1 2 3 4 5 6 7 8 9)上, tt,yy在有二次重复 可以 改成 for i=1:length(t0)-1 t=[t0(i), t0(i+1)]; u=u0(i); [t,y]=ode45(@ivpodefun,t,y0); y0=y(end,: ); tt=[tt;t(1:end-1)]; yy=[yy;y(1:end-1,: )]; end tt=[tt;t(end)]; yy=[yy;y(end,: )]; 具体的区别你可以显示一下看看 |
8楼2009-10-14 18:57:13
monitor2885
至尊木虫 (职业作家)
队长
- 应助: 6 (幼儿园)
- 贵宾: 0.339
- 金币: 38700.5
- 散金: 147
- 红花: 22
- 帖子: 4943
- 在线: 2166.8小时
- 虫号: 701577
- 注册: 2009-02-15
- 性别: GG
- 专业: 生态系统生态学

9楼2009-10-15 00:11:46
change0618
铁杆木虫 (著名写手)
方丈大师
- 应助: 44 (小学生)
- 金币: 17724.5
- 红花: 17
- 帖子: 2413
- 在线: 546.7小时
- 虫号: 496517
- 注册: 2008-01-19
- 专业: 化学反应工程
★ ★ ★ ★ ★ ★ ★ ★ ★
nono2009(金币+2,VIP+0):谢谢热心帮助。欢迎常来交流。 10-15 10:39
monitor2885(金币+5,VIP+0):你不但牛B,还有责任心! 10-15 19:48
wuguocheng(金币+2,VIP+0): 再奖励一下 10-15 20:05
nono2009(金币+2,VIP+0):谢谢热心帮助。欢迎常来交流。 10-15 10:39
monitor2885(金币+5,VIP+0):你不但牛B,还有责任心! 10-15 19:48
wuguocheng(金币+2,VIP+0): 再奖励一下 10-15 20:05
|
y0=y(end,: ); % 在这里end表示最后一行, : 表示所有列,所以y(end,: )表示y矩阵(n×2矩阵)的最后一行行向量(两个元素y1,y2,就是微分方程中的y1,y2).积分区间是[t(i),t(i+1)],所以也就是t(i+1)所对应的y1, y2值,也是下一个积分区间[t(i+1),t(i+2)]对应的初值。 [ Last edited by change0618 on 2009-10-15 at 09:50 ] |
10楼2009-10-15 09:43:59












回复此楼