| 查看: 1382 | 回复: 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换来换去,实在是解不出来。所以来拜托各位大神了 🙏🙏 谢谢! |
» 猜你喜欢
博士读完未来一定会好吗
已经有15人回复
心脉受损
已经有4人回复
Springer期刊投稿求助
已经有4人回复
读博
已经有3人回复
小论文投稿
已经有3人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有9人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有8人回复
申请2026年博士
已经有6人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有5人回复
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.5小时
- 虫号: 994474
- 注册: 2010-04-11
- 专业: 结构工程

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













回复此楼