当前位置: 首页 > 程序语言 >Matlab解微分方程 求助

Matlab解微分方程 求助

作者 天才超人
来源: 小木虫 350 7 举报帖子
+关注

各位大神走过路过 拜托帮帮忙 🙏

我需要用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换来换去,实在是解不出来。所以来拜托各位大神了 🙏🙏  谢谢! 返回小木虫查看更多

今日热帖
  • 精华评论
  • 陈时通

    不会  我的问题和你一样

  • 天才超人

    拜托各位高手帮忙看一下。。

  • 天才超人

    拜托拜托!!感谢感谢!!

  • 天才超人

    我把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);

    可以帮忙解释一下这是怎么回事吗?谢谢,

  • chendequan

    引用回帖:
    6楼: Originally posted by 天才超人 at 2017-12-18 16:08:21
    我把bvp4c换成了ode45,并简化了最后一个方程,如下:

    y0=;
    xspan=;
    sol=ode45(@odefun,xspan,y0);

    function = odefun(x,y)     
    global F R T Z1 Z2 Z3 C1A C2A i U_A FixedCharge D3 e
    C1=C1A.*exp(-Z ...

    提供公式资料方便阅读,QQ516477448

猜你喜欢
下载小木虫APP
与700万科研达人随时交流
  • 二维码
  • IOS
  • 安卓