24小时热门版块排行榜    

查看: 651  |  回复: 0

天才超人

新虫 (初入文坛)

[求助] Matlab解ODE方程组 出现singular

Hi, 我需要求解一个ode方程组,目前用的matlab的ode23s。但是求解不出来,算出第一个数值后,解不了第二步,显示错误信息
"Unable to meet integration tolerances without reducing the step size below the smallest value allowed (3.552643e-19) at time t."
或者
"Matrix is close to singular or badly scaled. Results may be inaccurate. Unable to meet integration tolerances without reducing the step size below the smallest value allowed (3.552643e-19) at time t."

能否麻烦大家帮我看一下问题在哪里?非常极其感谢!

Matlab程序如下:

global F R T e0 Z_Na Z_Cl Z_OH Z_H C_Na_A C_Cl_A C_OH_A C_H_A Cond_A i U_A E_A FixedCharge LA D_H D_OH e_r epsilon C_Na_A2 C_Cl_A2 C_H_A2 C_OH_A2

F=96485;                    
R=8.3144621;           
T=25+273.15;           
e0=8.85419/10^12;      
Z_Na=1;   
Z_Cl=-1;
Z_OH=-1;
Z_H=1;

%%% solution = 1 M NaCl + 0.1 M NaOH in the BULK
C_Na_A=1000+100;                        
C_Cl_A=1000+1e-10;            
C_OH_A=100;                    
C_H_A=1e-10;
Cond_A=10.1;                             

i=1000;                             
U0=0;                           
E_A=i/Cond_A;                    

FixedCharge=2*1000;   
LA=1E-4;                       
D_H=5.94/10^10;               
D_OH=3.47/10^10;           
e_r=20;                                 
epsilon=e_r*e0;                           

U_A=-R*T/F*asinh(-FixedCharge/2/(C_Na_A+C_H_A))+U0;

C_Na_A2=C_Na_A*exp(-Z_Na*F/R/T*U_A);
C_Cl_A2=C_Cl_A*exp(-Z_Cl*F/R/T*U_A);
C_OH_A2=C_OH_A*exp(-Z_OH*F/R/T*U_A);
C_H_A2=C_H_A*exp(-Z_H*F/R/T*U_A);

%%%%%%%%%%%%%%%%%%%%
y0=[E_A;U_A;C_OH_A2];
[p Y]=ode23s(@odefun,linspace(-LA,0,10000),y0);
%%%%%%%%%%%%%%%%%%%%

方程组function如下:

function [dydx]= odefun(x,y)
global F R T Z_Na Z_Cl Z_OH Z_H C_Na_A2 C_Cl_A2 i U_A FixedCharge D_OH epsilon D_H C_Na C_Cl
% y(1)=Electric field, y(2)=Electric potential, y(3)=OH- concentration
dydx=zeros(3,1);
C_Na=C_Na_A2*exp(-Z_Na*F/R/T.*(y(2)-U_A));
C_Cl=C_Cl_A2*exp(-Z_Cl*F/R/T.*(y(2)-U_A));
dydx(1)=(F/epsilon)*(C_Na-C_Cl+10^(-8)./y(3)-y(3)+FixedCharge);   
dydx(2)=-y(1);                                            
J_H=-D_H*(-10^(-8)./(y(3)^2)*dydx(3)+Z_H*F/R/T*10^(-8)./y(3).*dydx(2));
dydx(3)=-((i/F-Z_H*J_H)/Z_OH/D_OH)-Z_OH*F/R/T.*y(3).*dydx(2);
end
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 天才超人 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 2026年的国家社科基金项目通讯评审的新规则与新动向、新挑战 +3 process2012 2026-08-23 4/200 2026-08-23 12:54 by huixian257
[教师之家] 跳槽后在研项目怎么办? +5 简单化xn 2026-08-22 10/500 2026-08-23 12:38 by 简单化xn
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-21 9/450 2026-08-23 10:44 by IXZuIJ2Q7OVy
[基金申请] 今天放榜吗? +15 布布和一二 2026-08-19 16/800 2026-08-23 09:55 by 张春生
[考博] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 2JOx3r2CYEgw 2026-08-21 10/500 2026-08-23 07:17 by OEbVnUOu01ol
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 DpSrDtM079iu 2026-08-22 5/250 2026-08-23 04:07 by OEbVnUOu01ol
[硕博家园] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 2JOx3r2CYEgw 2026-08-22 7/350 2026-08-23 03:43 by OEbVnUOu01ol
[硕博家园] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 QTy3jDtz1uLt 2026-08-21 11/550 2026-08-23 02:55 by OEbVnUOu01ol
[基金申请] 93BebMhtakh前后11位开头都是大写 +7 且听虎啸 2026-08-17 8/400 2026-08-22 21:55 by 医学老男孩
[基金申请] 人气不行了 +8 fansofjerry 2026-08-21 8/400 2026-08-22 16:30 by zyqchem
[基金申请] 时间戳今天,20号变了 +5 archvillain 2026-08-20 5/250 2026-08-22 06:12 by hui_daxiao
[基金申请] 科研孤儿太难了 +17 我4大白菜 2026-08-20 18/900 2026-08-21 20:57 by zhangev
[基金申请] 看来今天不会放榜了? +8 chengyan1220 2026-08-21 11/550 2026-08-21 17:52 by dcqxinyang
[基金申请] 时间戳又变了 +13 wuchongjun 2026-08-20 19/950 2026-08-21 17:21 by 紫杉醇
[基金申请] 我面上完蛋了 +7 且听虎啸 2026-08-20 8/400 2026-08-21 12:31 by 酷酷墨镜
[基金申请] 基金啊基金 +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
[基金申请] 估计是周四 +3 archvillain 2026-08-18 3/150 2026-08-21 01:48 by jnhyjjm
[基金申请] 时间戳变了,能看出什么问题? +18 基诺咪客 2026-08-17 23/1150 2026-08-20 17:19 by Godzela
[基金申请] 朋友圈看到的 +6 wangzilk 2026-08-18 8/400 2026-08-19 10:55 by Haru815
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
信息提示
请填处理意见