[問題] ode求助 跑不動?

看板MATLAB作者 (新的開始)時間13年前 (2012/08/13 12:03), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
初始值超過10e6就會出現錯誤 Warning: Failure at t=1.875546e+000. Unable to meet integration tolerances withoutreducing the step size below the smallest value allowed (3.552714e-015) at time t. 請問是在設定上有問題嗎? 或是需要調整那些地方呢? 感謝 ========code========================================================== function odeM0i a0in=1.9908; b0in=-0.3497; c0in=-0.0148; d0in=0.0253; e0in=0.0191; f0in=-0.0289; %=================================== a0if=7.9594; b0if=-0.9274; c0if=0.6189; d0if=0.0175; e0if=0.0258; f0if=-0.0362; %============================ T=298; % K %N=; % aDp=-5.4926; bDp=-163.7729; cDp=0.0488; thop=1.2e-3; % kg.m^-3 KB=1.38e-23; % J.K^-1 na=1.83e-5; % kg.s-1.m-1 (293K) %sigma=2.463e19; % (298K) %landaa=((2^(0.5))*pi*N*(sigma^2))^-1; % m landaa=8e-8; % m %M0i=1.35e5; % total # M0j=3.12337e11; % total # M2i=1.32e-5; % nm^3.cm^-3 M2j=3.92e-3; % %m2i=M2i/M0i; % # of i m2j=M2j/M0j; % # of j ri=5.73e-9; % m rj=5.94e-8; % m %=================================================================== y0=[1.35e7 1.35e7 1.35e7]; tspan = [0:0.05:5]; [t,M] = ode45(@co,tspan,y0); save coa_M_20.mat t M function dMdt = co(t,M) dMdt = zeros(3,1); dMdt(1) = 4*pi*KB*T/6/pi/na*exp(aDp+(bDp/log(landaa)))*M(1)*M0j*ri*rj*... exp(a0in+b0in*log(M2i/M(1))+c0in*log(m2j)+... d0in*((log(M2i/M(1)))^2)+e0in*((log(m2j))^2)+f0in*log(M2i/M(1))*log(m2j)); dMdt(2) = ((6*KB*T/thop)^(1/2))*exp(aDp+(bDp/log(landaa)))*M(2)*M0j*ri*rj*... exp(a0if+(b0if*log(M2i/M(2)))+c0if*(log(m2j))+d0if*(log(M2i/M(2)))^2+... e0if*(log(m2j))^2+f0if*log(M2i/M(2))*log(m2j)); dMdt(3) = -(dMdt(1).*dMdt(2))./(dMdt(1)+dMdt(2)); end end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.66.253
文章代碼(AID): #1GA7oJq0 (MATLAB)