Help: BVP4C warning error !!

조회 수: 2 (최근 30일)
Syaza Latif
Syaza Latif 2013년 8월 22일
Hi there, I'm solving a bvp using bvp4c. There is a warning error which I do not understand at all. Can someone please explain what is about and how to solve this problem?
**Warning: Unable to meet the tolerance without using more than 1666 mesh points. The last mesh of 2000 points and the solution are available in the output argument. The maximum residual is 240.083, while requested accuracy is 0.001. **
Many thanks.
Syaza

답변 (1개)

Walter Roberson
Walter Roberson 2013년 8월 22일
  댓글 수: 1
Syaza Latif
Syaza Latif 2013년 9월 3일
편집: Syaza Latif 2013년 9월 3일
Hi Walter,
I have tried increasing NMax and RelTol but I get the same error. Here is my code:
function mat4bvp_Model
clc
clear all
global beta gamma theta s0 Ri Di Rf Df
% %%~~R=y(1); D=y(2); E=y(3); lambda_R=y(4);lambda_D=y(5);lambda_E=y(6);
%%% the parameter values
beta= 0.7379; Ri=0.6118; Di=0.0164; gamma=0.2801; theta=0.05; s0=0.1;
%%% the pre-defined (fixed) end points for D
Df=0.3483;
options = bvpset('RelTol', 1e-4, 'AbsTol', 1e-4, 'NMax', 10000)
solinit = bvpinit(linspace(0,100),[Ri Di 1.0 0.1 1 0.1]);
sol = bvp4c(@mat4ode_Model,@mat4bc_Model,solinit,options)
t = linspace(0,100,1000);
y = deval(sol,t);
%% plotting the figures
figure(1)
plot(t,y(1,:))
figure(2)
plot(t,y(2,:))
figure(3)
plot(t,y(3,:))
figure(4)
plot(t,y(4,:))
figure(5)
plot(t,y(5,:))
figure(6)
plot(t,y(6,:))
end
%%-the boundary conditions---------------------------------------------------
function res=mat4bc_Model(ya,yb)
global Ri Di Df
res=[ya(1)-Ri
ya(2)-Di
yb(2)-Df
ya(3)
yb(4)
yb(6)];
end
%%---the ODEs--------------------------------------------------
function dydx=mat4ode_Model(t,y)
global beta gamma theta s0
% %%~~R=y(1); D=y(2); E=y(3); lambda_R=y(4);lambda_D=y(5);lambda_E=y(6);
dydx=[(y(3)-gamma*y(1))*(1-y(1)-y(2)) %% dR/dt
beta*y(2)*(1-y(1)-y(2)) %%dD/dt
-theta*y(3)+ s0*c(s0,y(6)) %%dE/dt
y(4)*(y(3)+gamma* (1-2*y(1)-y(2))) + beta*y(5)*y(2) %%dlambda_R/dt
y(4)*(y(3)-gamma*y(1))- y(5)*beta*(1-y(1)-2*y(2)) %%dlambda_D/dt
y(6)*theta - y(4)*(1-y(1)-y(2))]; %%dlambda_E/dt
end
function C=c(s0,y6)
C=-s0/2 * y6;
end

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Boundary Value Problems에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by