24小时热门版块排行榜    

查看: 683  |  回复: 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 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 综述论文作为代表作会不会影响评审专家的印象分? +7 yufeiwaner 2026-08-09 7/350 2026-08-10 09:08 by zju2000
[基金申请] 应该是93bebmhtak前后十一个字符比较关键 +8 Lanmanbaby 2026-08-09 15/750 2026-08-10 08:54 by 医学老男孩
[基金申请] 2026国自然放榜时间 +5 布布和一二 2026-08-08 5/250 2026-08-10 08:38 by 694211007
[基金申请] 面上项目filecode邪修 +5 西山十月 2026-08-09 7/350 2026-08-10 07:32 by 仁砚薪传
[基金申请] 关于代码变化问题,想知道的进来 +15 且听虎啸 2026-08-07 22/1100 2026-08-09 22:13 by 布布和一二
[基金申请] 这样的filecode谁见过 +10 布布和一二 2026-08-08 21/1050 2026-08-09 17:21 by 天神眷顾
[基金申请] fileCode有新解读? +10 Tide man 2026-08-08 18/900 2026-08-09 12:55 by 仁砚薪传
[考博] 【2027博士申请】纳米药物递送方向 20+3 13586093586 2026-08-03 5/250 2026-08-08 21:54 by 13586093586
[基金申请] 关于豆爷回答的JTJC与%2F数量 +5 yang182083 2026-08-06 7/350 2026-08-08 18:29 by zhanghaozhu
[基金申请] 国基金的申报应该改成非等额制,评价高的钱多评价低的钱少,但是增加资助率 +7 a089 2026-08-07 7/350 2026-08-08 18:05 by gltch
[基金申请] 关于filecode +4 布布和一二 2026-08-07 7/350 2026-08-07 22:55 by zhanghaozhu
[基金申请] 化学口download_prp&fileCode的固定段好像这几天一直没变,有变的大神么? +3 Tide man 2026-08-07 4/200 2026-08-07 22:39 by Tide man
[基金申请] filecode变化情况 +6 布布和一二 2026-08-07 22/1100 2026-08-07 14:45 by 且听虎啸
[基金申请] filecode +14 等待解的谜 2026-08-06 19/950 2026-08-07 12:20 by wlwhappy
[基金申请] 求各位大神看下 100+6 hpkpkpkp 2026-08-05 33/1650 2026-08-06 14:49 by zhiyanjiang
[基金申请] 影响面上的因素 +8 布布和一二 2026-08-05 11/550 2026-08-06 10:41 by 宝贝虫子
[基金申请] 8月时间戳变的,举个手。玩一下,释放压力 +9 archvillain 2026-08-04 11/550 2026-08-05 20:06 by wlwhappy
[基金申请] 好消息?这个有何含义??? +8 Tide man 2026-08-05 10/500 2026-08-05 16:14 by xmuxiaoyu
[基金申请] 有没有H口的?有收到消息的吗? +3 超级海虾 2026-08-04 3/150 2026-08-04 17:26 by 学教育滴
[基金申请] 什么时候能放榜呀? +3 Jacob678 2026-08-03 3/150 2026-08-03 16:14 by gltch
信息提示
请填处理意见