| 查看: 1851 | 回复: 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人回复
申请科研项目纯靠实力能成功吗?
已经有8人回复
中科院海洋所招收海洋材料相关领域博士研究生及研究助理
已经有4人回复
40+中年人失业后,还能找到好工作吗?
已经有3人回复
二审4个多月了还是Awaiting Reviewer Scores
已经有4人回复
OpenAI又攻克数学难题了,离AI做有机合成还有多远?
已经有13人回复
课题组会帮你通过考核么?
已经有7人回复
入职后第一次管课题组的专利缴费,对账才发现官费比别人多掏了一倍
已经有6人回复
售一区SCI文章T0P,我:8O.551.O54,科目全,可十急
已经有9人回复
售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急
已经有10人回复
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
- 在线: 209小时
- 虫号: 994474
- 注册: 2010-04-11
- 专业: 结构工程

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










回复此楼
200