| 查看: 955 | 回复: 5 | ||||
[求助]
matlab出错 求助高手解答
|
|
function fun=weifen11 global r x ; A ,B, C ,D, F (r) ,G(r) ,H(r) 赋值 x=zeros(2,1); x0=[1 100]; tspan=[0 1]; fun=@(t,x)[I*(x(2)+M)*jifen1-J*x(2)*jifen2-0.1*x(2) -K*x(1)*jifen3-0.01*x(1)]; function a=jifen1 a=Roberg(f1,0,1.25*10^-6) function y1= f1 y1=F.*2.*pi.*r.*A.*(D.*H.*x(1,1)+C.*G.*x(2,1))/(1+C.*G.*x(2,1)+B.*F.*x(2,1)+D.*H.*x(1,1)); %n2 end end function b=jifen2 b=Roberg(f2,0,1.25*10^-6) function y2=f2 y2=G.*2.*pi.*r.*A.*(1+B.*F.*x(2))/(1+C.*G.*x(2)+B.*F.*x(2)+D.*H.*x(1)); end end function c=jifen3 c=Roberg(f3,0,1.25*10^-6) function y3=f3 y3=H*2*pi.*r.*A.*(1+B.*F.*x(2))/(1+C.*G.*x(2)+B.*F.*x(2)+D.*H.*x(1)); %n1 end end options=odeset('reltol',1e-6,'abstol',1e-8); [t,x]=ode45(fun,tspan,x0,options); plot(t,x) end 运行出错: ??? Subscripted assignment dimension mismatch. Error in ==> Roberg at 12 T(1,1)=(h/2)*(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b)); Error in ==> weifen11>jifen1 at 22 a=Roberg(f1,0,1.25*10^-6) Error in ==> weifen11>@(t,x)[I*(x(2)+M)*jifen1-J*x(2)*jifen2-0.1*x(2);-K*x(1)*jifen3-0.01*x(1)] at 18 fun=@(t,x)[I*(x(2)+M)*jifen1-J*x(2)*jifen2-0.1*x(2) Error in ==> funfun\private\odearguments at 110 f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0. Error in ==> ode45 at 173 [neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ... Error in ==> weifen11 at 40 [t,x]=ode45(fun,tspan,x0,options); |
» 猜你喜欢
反铁磁体中的磁性切换:两种不同的机制已成功可视化
已经有0人回复
求标准粉末衍射卡号 ICDD 01-076-1802
已经有0人回复
物理学I论文润色/翻译怎么收费?
已经有247人回复
新西兰Robinson研究所招收全奖PhD
已经有0人回复
石墨烯转移--二氧化硅衬底石墨烯
已经有0人回复
笼目材料中量子自旋液体基态的证据
已经有0人回复
数学教学论硕士可以读数学物理博士吗?
已经有0人回复
德国亥姆霍兹Hereon中心汉堡分部招镁合金腐蚀裂变SCC课题方向2026公派博士生
已经有4人回复
澳门大学 应用物理及材料工程研究院 潘晖教授课题组诚招博士后
已经有11人回复
» 本主题相关价值贴推荐,对您同样有帮助:
【求助】拜求高手解释下matlab的报错-----“out of memory”
已经有13人回复
【求助】请各位高手告诉我:这种想法能不能用matlab实现?200金币求助
已经有16人回复
【整理】今天整理硬盘上的资料,偶然发现的好玩的小东西就直接发上来吧
已经有105人回复
【求助】CASTEP计算出错,运行失败,请高手帮忙。
已经有11人回复
【求助】用matlab编程,需要将数据自检分类(高手进来指点下)
已经有5人回复
【求助】硅化反应,求高手解答
已经有16人回复
【求助】大家看看,matlab安装过程的截图,找出错
已经有14人回复
【求助】MS4.4在REDHAT5.0集群上安装出错,附步骤,望高手指正
已经有16人回复
2楼2011-11-23 16:27:10
dbb627
荣誉版主 (著名写手)
-

专家经验: +4 - 计算强帖: 12
- 应助: 289 (大学生)
- 贵宾: 0.589
- 金币: 24640.4
- 散金: 551
- 红花: 61
- 沙发: 1
- 帖子: 1246
- 在线: 1794.8小时
- 虫号: 149791
- 注册: 2005-12-29
- 性别: GG
- 专业: 污染控制化学
- 管辖: 计算模拟

3楼2011-11-23 18:06:04
|
谢谢你~~上个问题解决了。我又重新调试了一下 如下: function fun=weifen11 global r x ; A B C D F(r) G(r) H(r) 赋值 fun=@(t,x)[-K.*x(1).*jifen3-0.01.*x(1) I.*(x(2)+M).*jifen1-J.*x(2).*jifen2-0.1.*x(2)]; function a=jifen1 a=Roberg(f1,0,1.25*10^-6) function y1= f1 y1=F.*2.*pi.*r.*A.*(D.*H.*x(1)+C.*G.*x(2))./(1+C.*G.*x(2)+B.*F.*x(2)+D.*H.*x(1)); %isen2 end end function b=jifen2 b=Roberg(f2,0,1.25*10^-6) function y2=f2 y2=G.*2.*pi.*r.*A.*(1+B.*F.*x(2))./(1+C.*G.*x(2)+B.*F.*x(2)+D.*H.*x(1)); %isan1 end end function c=jifen3 c=Roberg(f3,0,1.25*10^-6) function y3=f3 y3=H.*2.*pi.*r.*A.*(1+B.*F.*x(2))./(1+C.*G.*x(2)+B.*F.*x(2)+D.*H.*x(1)); %ipn1 end end x0=[10 10]; tspan=[0 1]; options=odeset('reltol',1e-6,'abstol',1e-8); [t,x]=ode45(weifen11,tspan,x0,options) plot(t,x) end 运行出错 ??? Maximum recursion limit of 500 reached. Use set(0,'RecursionLimit',N) to change the limit. Be aware that exceeding your available stack space can crash MATLAB and/or your computer. Error in ==> besschk at 50 end 我实在弄不懂了,谢谢帮忙啊~~ |
4楼2011-11-23 21:17:27
dbb627
荣誉版主 (著名写手)
-

专家经验: +4 - 计算强帖: 12
- 应助: 289 (大学生)
- 贵宾: 0.589
- 金币: 24640.4
- 散金: 551
- 红花: 61
- 沙发: 1
- 帖子: 1246
- 在线: 1794.8小时
- 虫号: 149791
- 注册: 2005-12-29
- 性别: GG
- 专业: 污染控制化学
- 管辖: 计算模拟
【答案】应助回帖
zhangleiii(金币+2): 谢谢你的意见啦,问题解决了~~ 2011-11-25 09:12:55
|
你的程序一定使用了递归调用,MATLAB限制了递归调用的次数,默认是500次 所谓递归就是自己调用自己,因为这样比较占用资源,MATLAB为了防止死循环,所以限制了递归次数 你可以使用 set(0,'RecursionLimit',1000)将递归次数修改为1000次 我觉得你的函数修改下比较好 function fun=weifen11(t,x) global r x ; A B C D F(r) G(r) H(r) 赋值 a=Roberg(f1,0,1.25*10^-6) b=Roberg(f2,0,1.25*10^-6) c=Roberg(f3,0,1.25*10^-6) fun=[-K.*x(1).*c-0.01.*x(1) I.*(x(2)+M).*a-J.*x(2).*b-0.1.*x(2)]; function y1= f1(x) y1=F.*2.*pi.*r.*A.*(D.*H.*x(1)+C.*G.*x(2))./(1+C.*G.*x(2)+B.*F.*x(2)+D.*H.*x(1)); %isen2 function y2=f2(x) y2=G.*2.*pi.*r.*A.*(1+B.*F.*x(2))./(1+C.*G.*x(2)+B.*F.*x(2)+D.*H.*x(1)); %isan1 function y3=f3(x) y3=H.*2.*pi.*r.*A.*(1+B.*F.*x(2))./(1+C.*G.*x(2)+B.*F.*x(2)+D.*H.*x(1)); %ipn1 |

5楼2011-11-24 19:40:24
6楼2016-01-20 10:54:21












回复此楼