| 查看: 1161 | 回复: 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 ] |
» 猜你喜欢
科研求助
已经有4人回复
博士去二本高校当辅导员,如何调整心态?
已经有11人回复
面上有专家说实验设备不是我们单位的
已经有6人回复
江苏省自然基金 什么时候出结果
已经有6人回复
广西大学-广州大学招聘博士后 欢迎广大优秀人才!!!
已经有11人回复
闲聊
已经有3人回复
两块石头
已经有10人回复
初秋的晨风
已经有6人回复
» 抢金币啦!回帖就可以得到:
项目结题验收,希望一切顺利
+1/992
韩国延世大学材料理论课题组(Materials Theory Group)招聘启事
+5/325
CMC 岗位内部推荐(上海)
+1/196
招聘机械设计,工作地点济南
+1/99
有偿求乳酸菌敲除载体pNZ5319和pCJK47
+1/87
海南大学邓意达教授团队招收博士后和2027年入学博士生
+1/86
澳门大学智慧城市物联网全国重点实验室—智慧能源团队招2027年全奖电气工程博士生
+1/84
山东征女友,坐标济南
+1/49
深圳大学2027级光电信息工程/物理学研究生推免
+1/20
教学科研岗和博士后招聘
+1/16
中山大学柔性电子方向2027级博士招生(材料、材料加工、化学、化工、机械等背景)
+1/16
求论文录用
+1/9
上海交大材料学院拟招生27年有机高分子/电化学/组织工程等生物材料方向博士生1-2名
+1/4
上海交大材料学院拟招生27年有机高分子/电学、组织工程等生物材料方向博士生1-2名
+1/4
抗体分型相关生物标志物蛋白因子定量检测技术解析
+1/2
天津大学浙江研究院2026年第二批招聘公告:高分子等方向特聘青年研究员/博士后
+1/2
Paris Saclay university, Dallerac教授团队招收2027CSC–Saclay合作奖学金博士生
+1/2
招聘材料计算,分子动力学模拟合作讲师
+1/1
哈工大马樱招收2027级计算机类博士生
+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,
回复此楼