| 查看: 1670 | 回复: 7 | ||
[求助]
Matlab解微分方程 求助 已有1人参与
|
|
各位大神走过路过 拜托帮帮忙 🙏 我需要用Matlab解3个ODE方程,用的是bvp4c solinit=bvpinit(linspace(0,LA,1000),[E_A U_A C_OH_A]); options=bvpset('RelTol',1e-3,'AbsTol',[1e-12 1e-12 1e-12]); sol=bvp4c(@odefun,@odebc,solinit,options); 方程的file如下: function [dydx]=odefun(y) global F R T Z_Na Z_Cl Z_OH Z_H C_Na_A C_Cl_A i U_A FixedCharge D_OH e D_H C_Na=C_Na_A*exp(-Z_Na*F/R/T*(y(2)-U_A)); % conc of Na+ C_Cl=C_Cl_A*exp(-Z_Cl*F/R/T*(y(2)-U_A)); % conc of Cl- dydx(1)=F/e*(C_Na-C_Cl+10^(-8)/y(3)-y(3)+FixedCharge); % Electric field dydx(2)=-y(1); % Electric potential J_H=-D_H*(-10^(-8)/y(3)^2*dydx(3)+Z_H*F/R/T*10^(-8)/y(3)*dydx(2)); %Flux of H+ dydx(3)=-(i/F-Z_H*J_H)/Z_OH/D_OH-Z_OH*F/RT*y(3)*dydx(2); % Conc of OH- end 边界条件如下: function [res]=odebc(ya,~) global C_OH_A U_A E_A res(1)=ya(1) - E_A; res(2)=ya(2) - U_A; res(3)=ya(3) - C_OH_A; res=res'; end 运行后一直收到如下的错误信息: Error using BPM_ode_Dec1417>odefun Too many input arguments. Error in bvparguments (line 105) testODE = ode(x1,y1,odeExtras{:}); Error in bvp4c (line 130) bvparguments(solver_name,ode,bc,solinit,options,varargin); Error in BPM_ode_Dec1417 (line 40) sol=bvp4c(@odefun,@odebc,solinit,options); 盯着程序两天了,各种variable换来换去,实在是解不出来。所以来拜托各位大神了 🙏🙏 谢谢! |
» 猜你喜欢
生命口C13面上会评时间
已经有11人回复
内心匮乏
已经有16人回复
生命口面上会评结束了吗大家有知道结果吗?现在还没有结果正常不?
已经有9人回复
投英文期刊如何查重
已经有6人回复
不要再数国自然申请书的 filecode 的分隔符个数了
已经有21人回复
伯胺上甲基求助
已经有7人回复
跨出版社商投稿
已经有5人回复
5个%2F,非固定段22个字母
已经有7人回复
生生命学部会评
已经有4人回复
H口,面上,时间戳7月7日。
已经有3人回复
2楼2017-12-16 07:09:13

3楼2017-12-16 13:36:47
4楼2017-12-17 03:39:10
5楼2017-12-18 06:20:18
|
我把bvp4c换成了ode45,并简化了最后一个方程,如下: y0=[E_A;U_A;C3A]; xspan=[0 10^(-4)]; sol=ode45(@odefun,xspan,y0); function [dydx]= odefun(x,y) global F R T Z1 Z2 Z3 C1A C2A i U_A FixedCharge D3 e C1=C1A.*exp(-Z1.*F/R/T.*(y(2)-U_A)); C2=C2A.*exp(-Z2.*F/R/T.*(y(2)-U_A)); dydx(1)=F/e*(C1-C2+10^(-8)/y(3)-y(3)+FixedCharge); dydx(2)=-y(1); dydx(3)=-i/Z3/D3-Z3*F/R/T*y(3)*dydx(2); end 收到了错误信息: Error using bvp4c (line 251) Unable to solve the collocation equations -- a singular Jacobian encountered. Error in ODEtest (line 37) sol=bvp4c(@odefun,@odebc,solinit); 可以帮忙解释一下这是怎么回事吗?谢谢! |
6楼2017-12-18 16:08:21
chendequan
铁虫 (小有名气)
- 应助: 152 (高中生)
- 金币: 918.6
- 红花: 17
- 帖子: 262
- 在线: 208.7小时
- 虫号: 994474
- 注册: 2010-04-11
- 专业: 结构工程

7楼2017-12-18 18:22:17
8楼2017-12-19 13:31:42











回复此楼