24小时热门版块排行榜    

Znn3bq.jpeg
查看: 603  |  回复: 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写入的。上面这些程序似乎要加几句,谢谢帮忙。
回复此楼

» 猜你喜欢

Retirement
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师


kuhailangyu(金币+1,VIP+0):欢迎积极参与 10-14 13:58
t是一个积分区间,程序运行的时候并非只取你所给定的0:1:10值,只是绘图显示的时候是t=0:1:10对应的y值。你可以逐步显示看一下,t在0:1之间变步长就取了几十个值.
2楼2009-10-14 12:32:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

不知道是不是你所要的

[ Last edited by change0618 on 2009-10-14 at 12:51 ]
3楼2009-10-14 12:36:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

monitor2885

至尊木虫 (知名作家)

队长

引用回帖:
Originally posted by change0618 at 2009-10-14 12:32:
t是一个积分区间,程序运行的时候并非只取你所给定的0:1:10值,只是绘图显示的时候是t=0:1:10对应的y值。你可以逐步显示看一下,t在0:1之间变步长就取了几十个值.

通过odeset,把 initialstep设定为1,可以吗?能不能实现程序运行的步长就是1

options=odeset('initialstep',1);
Retirement
5楼2009-10-14 14:14:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

★ ★ ★ ★ ★
monitor2885(金币+3,VIP+0):解释一下上面的程序吧 10-14 18:40
sunxiao(金币+2,VIP+0):谢谢参与,欢迎常来 10-15 05:00
好像不行,ode45本身就是变步长算法,设置initialstep只是提供一个初始的步长,随着精度的要求,步长必然不断减小。你可以采用定步长法程序,像龙格库塔法,自己可以编写一个。但是会面临u的变化问题。

[ Last edited by change0618 on 2009-10-14 at 17:58 ]
6楼2009-10-14 16:40:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

monitor2885

至尊木虫 (知名作家)

队长

引用回帖:
Originally posted by change0618 at 2009-10-14 12:49:
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+ ...

y0=y(end,: );
    tt=[tt;t];
    yy=[yy;y];

这三句,每一句的意思和目的是什么呢?解释一下呗,没看懂。谢谢
Retirement
7楼2009-10-14 18:39:44
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

★ ★ ★ ★ ★ ★ ★
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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

monitor2885

至尊木虫 (知名作家)

队长

y0=y(end,: );      % 设置下一积分区间的初值,因为y0=[0 2]只是t=0时的初值。在积分区间t=[t0(i+1), t0(i+2)]时,初值应该变为t0(i+1)对应的y(end,: )值。

end和冒号分别指代谁?
Retirement
9楼2009-10-15 00:11:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

★ ★ ★ ★ ★ ★ ★ ★ ★
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
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 monitor2885 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[论文投稿] Sci. Bull. 悲剧经验 +4 jyang1999 2026-05-16 5/250 2026-05-20 13:49 by jyang1999
[基金申请] 国自然评分 +3 无名者登山 2026-05-20 4/200 2026-05-20 13:29 by vito刘
[基金申请] 今年审到国自然15份,谈谈感受 +18 国自然国社科中 2026-05-17 19/950 2026-05-20 13:18 by wjswsl
[基金申请] 提交了我也来说说感想 +4 fummck 2026-05-20 4/200 2026-05-20 12:56 by Equinoxhua
[有机交流] 反应很差,大量原料没有反应 5+3 Mr.Zot 2026-05-19 6/300 2026-05-20 10:36 by xtlilibin
[考博] 如果工作了想读博,可以边工作边读全日制嘛? 30+3 铁达火车 2026-05-18 5/250 2026-05-20 09:33 by tfang
[有机交流] 如何实现卤原子转化 +3 BT20230424 2026-05-15 8/400 2026-05-20 09:32 by xtlilibin
[教师之家] 上海大学实验技术岗位非升即走 +12 嘻嘻哈哈乐呵呵 2026-05-15 13/650 2026-05-20 08:34 by xli1984
[基金申请] 2026山东省优青 +3 luckinging 2026-05-14 4/200 2026-05-19 16:15 by 52wls
[考博] 26/27申博自荐-锂/钠电池方向 5+3 狗头军师. 2026-05-15 4/200 2026-05-19 09:10 by moonboat
[基金申请] 同样的基金本子,换个专家直接从C变A! (金币-10) +3 国自然国社科中 2026-05-19 3/150 2026-05-19 08:50 by Equinoxhua
[基金申请] 别被青基扩招骗了!26年科研内卷才刚刚开始 +3 国自然国社科中 2026-05-14 4/200 2026-05-19 08:48 by archvillain
[考博] 博士申请 +5 星…… 2026-05-18 6/300 2026-05-18 23:49 by 糊糊涂涂好
[基金申请] 国自然上会要求 +5 无名者登山 2026-05-18 9/450 2026-05-18 17:50 by BlakeReary
[文学芳草园] 半夜喝咖啡 +3 myrtle 2026-05-15 5/250 2026-05-18 01:03 by 小沈2018
[考博] 光量子物理方向 博士招生 1人(2026.09) +3 sandyworld 2026-05-15 4/200 2026-05-17 14:38 by sandyworld
[有机交流] 求助2,4-二氯-5-嘧啶甲醛的合成方法 20+3 光吃不拉 2026-05-14 6/300 2026-05-16 19:46 by Equinoxhua
[硕博家园] 申请博士 +3 呃?呃 2026-05-15 3/150 2026-05-16 11:01 by a4742549
[考博] 26应届毕业生考博求助 +3 wo一定上岸 2026-05-13 3/150 2026-05-14 21:47 by 明海天涯
[考博] 材料类只有一篇综述能申博么 +4 乐逍遥谷 2026-05-13 4/200 2026-05-14 12:05 by zhyzzh
信息提示
请填处理意见