24小时热门版块排行榜    

查看: 1376  |  回复: 10
当前主题已经存档。

monitor2885

至尊木虫 (知名作家)

队长

[交流] 【求助】简单的ode45程序修改

function abc
clear all;clc
global y u
u=[1;2;3;4;5];
t=0:4;
[t,y]=ode45(@fun,t,[0 2]);
plot(y)

function dydt=fun(t,y)
global u
v=u*2;
dydt=zeros(2,1);
dydt(1)=y(2);
dydt(2)=v*y(1)-2*v*y(2);

哪里错了呢?怎么改?谢谢
回复此楼
Retirement
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师


monitor2885(金币+5):帮忙看下面一个 2010-03-17 21:33
kuhailangyu(金币+1):欢迎积极参与 2010-03-18 16:24
function abc
clear all
clc
u=[1;2;3;4;5];
tspan=0:1:4;
tt=[];yy=[];
y0=[0 2];
for i=1:length(tspan)-1
    [t,y]=ode45(@fun,[tspan(i),tspan(i+1)],y0,[],u(i));
    tt=[tt;t];yy=[yy;y];
    y0=y(end,: );
end
figure(1)
plot(tt,yy)

function dydt=fun(t,y,u)
v=u*2;
dydt=[y(2);
      v*y(1)-2*v*y(2)];
2楼2010-03-17 19:45:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

monitor2885

至尊木虫 (知名作家)

队长

引用回帖:
Originally posted by change0618 at 2010-03-17 19:45:45:
function abc
clear all
clc
u=[1;2;3;4;5];
tspan=0:1:4;
tt=[];yy=[];
y0=[0 2];
for i=1:length(tspan)-1
    [t,y]=ode45(@fun,[tspan(i),tspan(i+1)],y0,[],u(i));
    tt=[tt;t];yy=[yy;y];
     ...

比如,现在2个参数,即u和v,下面哪里不对呢?
clear all;clc
global yy
u=[1;5;15;20;25];
v=[6;12;18;24;30];
tspan=0:1:4;
tt=[];yy=[];
y0=[0 2];
for i=1:length(tspan)-1
    [t,y]=ode45(@fun,[tspan(i),tspan(i+1)],y0,[],(u(i),v(i)));
    tt=[tt;t];
    yy=[yy;y];
    y0=y(end,;
end
figure;plot(tt,yy)

function dydt=fun(t,y,u,v)
dydt=zeros(2,1);
dydt(1)=u+y(2);
dydt(2)=v*y(1)-2*v*y(2);

[ Last edited by monitor2885 on 2010-3-17 at 21:34 ]
Retirement
3楼2010-03-17 21:33:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师

★ ★
monitor2885(金币+5):继续发金币,谢谢哥们帮忙解决问题 2010-03-18 14:29
kuhailangyu(金币+2):欢迎积极参与 2010-03-18 16:24
[t,y]=ode45(@fun,[tspan(i),tspan(i+1)],y0,[],      (u(i),v(i))      );
改成
[t,y]=ode45(@fun,[tspan(i),tspan(i+1)],y0,[],      u(i),v(i)        );


global yy  可以去掉
4楼2010-03-17 23:04:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

monitor2885

至尊木虫 (知名作家)

队长

引用回帖:
Originally posted by change0618 at 2010-03-17 23:04:14:
[t,y]=ode45(@fun,[tspan(i),tspan(i+1)],y0,[],      (u(i),v(i))      );
改成
[t,y]=ode45(@fun,[tspan(i),tspan(i+1)],y0,[],      u(i),v(i)        );


global yy  可以去掉

global yy u v
u=[1;5;15;20;25];
v=[6;12;18;24;30];
tspan=0:1:4;
tt=[];yy=[];
y0=[0 2];
for i=1:length(tspan)-1
    [t,y]=ode45(@fun,[tspan(i),tspan(i+1)],y0,[],u(i),v(i));
    tt=[tt;t];
    yy=[yy;y];
    y0=y(end,;
end
figure;plot(tt,yy)

function dydt=fun(t,y)
global u v
r=u+2;
s=v-2;
dydt=zeros(2,1);
dydt(1)=r+y(2);
dydt(2)=s*y(1)-2*s*y(2);

还是不对,再改改谢谢
Retirement
5楼2010-03-18 14:28:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师


kuhailangyu(金币+1):欢迎积极参与 2010-03-18 16:24
monitor2885(金币+5):global yy之后,我发现yy有208个,为何不是5个呢? 2010-03-18 19:43
function abc
clear all
clc
u=[1;5;15;20;25];
v=[6;12;18;24;30];

tspan=0:1:4;
tt=[];yy=[];
y0=[0 2];
for i=1:length(tspan)-1
    [t,y]=ode45(@fun,[tspan(i),tspan(i+1)],y0,[],u(i),v(i));
    tt=[tt;t];
    yy=[yy;y];
    y0=y(end,: );
end

plot(tt,yy)


function dydt=fun(t,y,u,v)
r=u+2;
s=v-2;
dydt=[r+y(2);
      s*y(1)-2*s*y(2)];
6楼2010-03-18 15:38:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

张轩中

铜虫 (小有名气)

??? function abc
    |
Error: Function definitions are not permitted at the prompt or in scripts.
7楼2010-03-18 16:14:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

monitor2885

至尊木虫 (知名作家)

队长

引用回帖:
Originally posted by change0618 at 2010-03-18 15:38:18:
function abc
clear all
clc
u=[1;5;15;20;25];
v=[6;12;18;24;30];

tspan=0:1:4;
tt=[];yy=[];
y0=[0 2];
for i=1:length(tspan)-1
    [t,y]=ode45(@fun,[tspan(i),tspan(i+1)],y0,[],u(i),v(i));
...

global yy之后,我发现yy有208个,为何不是5个呢?我知道ode45是变步长,但是如果写成ode45(@fun,tspan,y0),就会有5个yy,而不是208个。为什么
比如说,下面的简单程序:y就是5个
global y
tspan=0:1:4;
y0=[0 2];
[t,y]=ode45(@fun,tspan,y0);

function dydt=fun(t,y)
dydt=zeros(2,1);
dydt(1)=y(2);
dydt(2)=y(1)-2*y(2);

[ Last edited by monitor2885 on 2010-3-18 at 19:48 ]
Retirement
8楼2010-03-18 19:45:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

change0618

铁杆木虫 (著名写手)

方丈大师


adu886886(金币+1):谢谢提供意见 2010-03-19 08:29
monitor2885(金币+5):[t,y]=ode45(@fun,[tspan(i):1:tspan(i+1)],y0,[],u(i),v(i)); 还是208个点呀 2010-03-19 13:09
tspan=0:1:4;
[t,y]=ode45(@fun,tspan,y0);
这两句会令t=[0 1 2 3 4],并将其对应的值赋给y,所以y只有5个;

而[t,y]=ode45(@fun,[tspan(i),tspan(i+1)],y0,[],u(i),v(i));
此句中的[tspan(i),tspan(i+1)],只给定了一个区间,
t的元素个数一般取其计算过程中的个数
如果你只想取五个值,那就用tspan(i):tspan(i+1),
你画图的话会看到五个点,但实际上是8个点,中间三个有重复
如果想彻底只有5个,你可以自己抠掉。
当然还有其他方法抽取那五个点的y值。
程序肯定是计算了很多很多个点,但是具体你要取几个,那在于你的意图了。
9楼2010-03-18 21:46:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

monitor2885

至尊木虫 (知名作家)

队长

引用回帖:
Originally posted by change0618 at 2010-03-18 21:46:37:
tspan=0:1:4;
[t,y]=ode45(@fun,tspan,y0);
这两句会令t=[0 1 2 3 4],并将其对应的值赋给y,所以y只有5个;

而[t,y]=ode45(@fun,[tspan(i),tspan(i+1)],y0,[],u(i),v(i));
此句中的[tspan(i),tspan(i+1)],只 ...

[t,y]=ode45(@fun,[tspan(i):1:tspan(i+1)],y0,[],u(i),v(i));
还是 208 个点呀
Retirement
10楼2010-03-19 13:09:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 monitor2885 的主题更新
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +5 ASdOkHsho7FD 2026-08-28 8/400 2026-08-29 17:22 by 4FFAWE8HcgUD
[基金申请] 面上意见出来了 +6 黄鸟于飞Chao 2026-08-29 12/600 2026-08-29 17:20 by 黄鸟于飞Chao
[基金申请] 为什么到现在没收到通知? +4 tannykie 2026-08-29 4/200 2026-08-29 17:14 by lmz0216
[找工作] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 ASdOkHsho7FD 2026-08-28 6/300 2026-08-29 11:51 by jCd0dEvKHShX
[考研] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +6 ASdOkHsho7FD 2026-08-28 9/450 2026-08-29 11:18 by jCd0dEvKHShX
[基金申请] 中青基了要发朋友圈吗? +3 349506619 2026-08-28 3/150 2026-08-29 10:49 by 木风9012
[基金申请] 投票:  有多少人是今天查系统知道结果的? +16 爱看书的可乐 2026-08-26 18/900 2026-08-29 10:18 by winsaint
[基金申请] 我就是申请一个面上项目而已,这评审意见是按照杰青的条件评的吧? +6 gouxfjh 2026-08-28 9/450 2026-08-29 09:59 by jklily
[教师之家] 售SCI-T0P文章,我:8O.5.5.1.O.54,科目齐全,可+急 +4 ASdOkHsho7FD 2026-08-28 7/350 2026-08-29 09:26 by G6APbkg8SA6w
[基金申请] 基金系统什么内容也没有 30+4 winsaint 2026-08-27 9/450 2026-08-28 11:06 by maolC
[基金申请] 哪位高人中了,把查询到的截图贴出来让我看看,让我长长见识 +5 yuleib84 2026-08-26 6/300 2026-08-28 00:02 by yudaoqian88
[基金申请] 申请删除本帖 +6 lyz123lyz 2026-08-27 7/350 2026-08-27 17:31 by 宁静致远sy
[文学芳草园] 梦想 +3 myrtle 2026-08-26 3/150 2026-08-27 10:01 by angelyueyi
[基金申请] 我不理解! +15 Edward_pc 2026-08-26 23/1150 2026-08-26 20:34 by zzuzxg
[基金申请] 2026年8月25日国自然放榜前突然收到列入评审专家邮件,有关系吗? +25 木水思豆 2026-08-25 28/1400 2026-08-26 14:53 by draco1987
[基金申请] 为什么国自然不能直接公布 +4 bjdxyxy 2026-08-26 4/200 2026-08-26 13:12 by qingmu1201
[基金申请] 国合里面能看到了 +7 一怀馨秋 2026-08-26 7/350 2026-08-26 11:23 by zhaosm1982
[基金申请] 系统进不去 +4 yanglien 2026-08-26 5/250 2026-08-26 11:10 by wenfengw83
[基金申请] 牛来!米来!面来! +8 beefly 2026-08-26 8/400 2026-08-26 08:37 by xuzhipiao
[基金申请] 明天应该可查了!? +6 chengyan1220 2026-08-23 6/300 2026-08-25 19:45 by zfd97
信息提示
请填处理意见