| 查看: 1020 | 回复: 3 | |||
[交流]
【求助】ode45数值求解常微分方程总是错,找不出原因
|
|
程序如下:S1=0.4; S2=0.8; y=zeros(42,3); y(1,1)=6e10; y(2,1)=4e10; y(3,1)=0; for i=0:5; for j=1:7 if(j==6)|(j==7) [t,y]=ode45('tumor',[i*7+j i*7+j+1],[y(i*7+j,1) y(i*7+j,2) y(i*7+j,3)]); else a=y(i*7+j,1); y(i*7+j,1)=S1*a; b=y(i*7+j,2); y(i*7+j,2)=S2*b; y(i*7+j,3)=(1-S1)*a+(1-S2)*b; [t,y]=ode45('tumor',[i*7+j i*7+j+1],[y(i*7+j,1) y(i*7+j,2) y(i*7+j,3)]); end end end plot(t,y(1, ,'*',t,y(2, ,'.',t,y(3, ,'+');错误为:Index exceeds matrix dimensions. Error in ==> number1 at 12 [t,y]=ode45('tumor',[i*7+j i*7+j+1],[y(i*7+j,1) y(i*7+j,2) y(i*7+j,3)]); 我估计是向量传递出错了 发现ode45返回的是t和y(:,1) y(:,2) y(:,3)的列向量, 如果想得到向量的最后一个值应该怎么办? [ Last edited by liangbao on 2010-11-25 at 09:51 ] |
» 猜你喜欢
博士招生
已经有5人回复
夜,静悄悄的
已经有8人回复
国自科送审了吗
已经有8人回复
收到国自然专家邀请后几年才会有本子送过来评
已经有5人回复
研究生做的很差,你们会让毕业吗?
已经有6人回复
26年博士申请自荐-电催化
已经有5人回复
2026博士或科研助理转27年博士
已经有5人回复
26年申博自荐-计算机视觉
已经有4人回复
» 抢金币啦!回帖就可以得到:
东南大学废弃碳资源利用团队(杰青/海优团队)博士后、科研助理及27级博士生招募
+1/128
2026年江西师范大学人文地理与低碳经济方向拟招收1名“申请入学制”学术博士研究生
+2/110
山东大学深地储能系统工程课题组常年招聘优秀博士后研究人员
+1/90
河南师范大学水产学院博士研究生招生
+1/86
温州医科大学吴平课题组招聘博士后,年薪≥50W/年
+1/79
双一流高校-南京林业大学-化学工程学院-国家海外优青团队招2026级博士(5月15号截止)
+1/49
松山湖材料实验室-大连理工大学联合招收2027年博士研究生调剂考生若干名
+1/36
google ai pro 会员/gemini分享
+1/33
双一流高校-南京林业大学-化学工程学院-国家海外优青团队招2026级博士(5月15号截止)
+1/33
希望论文顺利接受
+1/31
坐标北京,83年男征女友
+1/26
诚征女友,坐标西安
+1/23
2026年西安交通大学博士招生!
+1/16
申请账号解封
+1/10
深圳理工大学-湖南大学项目招收钙钛矿方向博士生
+1/9
【限时补录】澳科大2026年秋季入学药剂学硕士研究生1-2名
+1/5
上海交通大学复合材料研究所招聘博士后
+1/4
招收2026年秋季入学博士生1名(河北工业大学/北京科技大学联合 增材制造/生物材料)
+1/3
双一流高校南林化学工程学院-国家级青年人才团队招2026级博士(最后一波)
+1/1
南京大学医学院附属鼓楼医院院士团队招聘博士后、科研助理
+1/1
2楼2010-11-25 20:01:10
|
恩,谢谢 我这样改,运行通过了 您看看,没有什么对不? S1=0.4; S2=0.8; y=zeros(100,42); y(1,1)=6e10; y(1,2)=4e10; y(1,3)=0; for i=0:5; for j=1:7 if(j==6)|(j==7) tspan=i*7+j:0.05:i*7+j+1; [t,p]=ode45('tumor',tspan,[y(i*7+j,1) y(i*7+j,2) y(i*7+j,3)]); else y(i*7+j,1)=S1*y(i*7+j,1); y(i*7+j,2)=S2*y(i*7+j,2); y(i*7+j,3)=((1-S1)/S1)*y(i*7+j,1)+((1-S2)/S2)*y(i*7+j,2); tspan=i*7+j:0.05:i*7+j+1; [t,p]=ode45('tumor',tspan,[y(i*7+j,1) y(i*7+j,2) y(i*7+j,3)]); end plot(t,p(:,1),'*',t,p(:,2),'.',t,p(:,3)); hold on; y(i*7+j+1,1)=p(21,1); y(i*7+j+1,2)=p(21,2); y(i*7+j+1,3)=p(21,3); end end |
3楼2010-11-25 20:38:04
4楼2010-11-26 08:34:13












,'*',t,y(2,
回复此楼