1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117
| % Ce programme permete de lire les valeurs des parametres dans un fichier:
% Cb_ln_b<4.xls ou Ca_ln.xls etc etc. Pour chaque jeux de parametre il
% effectue la simulation de ODE dy/dt=fonctionSum(x,t,s,integral phi(s)ds,
% parametres) avec x\in\R3
% On discretise la variable s, s_i. Ce qui nous donne alors x\in\R3^nbre de s_i
%% Definition des parametres
clear all;
close all;
global nbs;
global ds s1 smax smin;
% parametre lies a l'integration
%Ca: cout des gamette, Cb: cout du chgt de sexe, Ceps: cout des combat
%entre male
paramEtude=2; % 1:Ca, 2:Cb et 3:Ceps
% type du parametre a etudie
axe=['a','b','c'];
xaxis=axe(paramEtude);
%% ouveture du fichier qui contiens les parametres
paramSet=xlsread('Cb_ln_b<4.xls');
%paramSet=xlsread(['C' xaxis '_ln.xls']); %
% Fichier contenant les parametres fixe pour notre edo: smin, smax etc etc
paramProg=xlsread('paramProg.xls');
nbreExp=size(paramSet,1); %Nbre de simultaion
%% Definition des parametre fixe
%Discretisation de s
smin=paramProg(1);
smax=paramProg(2); %le chifre 11 correspond au plus petit telque max g(s)~1 avec g: ln
ds=paramProg(3);
s1=sort(smin+(smax-smin)*rand(101,1));%(smin:ds:smax)'; %smin+(smax-smin)*rand(1,101)
nbs=size(s1,1);
% parametre du temps d'integration
tmin=paramProg(4);
% tmax=paramProg(5);
%dt=paramProg(6);
%T=[0 tmax];
t0=tmin;
%% Definition de l'etat initiale
[Fnc0,Fc0,Mc0,Mnc0]=condinit(nbs);
y0=[Fnc0';Fc0';Mc0'];
%% Calcul des resultats
%gamma(s1,s1)
%fonction(1,etatinitiale)
%%%%%%
options = CVodeSetOptions('RelTol',1.e-5,...
'AbsTol',1.e-5,...
'LinearSolver','Dense',...
'LMM','BDF',...
'NonlinearSolver','Newton',...
'MaxOrder',2);
% 'JacobianFn',@cvdx_J,...
% 'RootsFn',@cvdx_g, ...
% 'NumRoots',2,...
%mondata.sol = true;
%mondata.mode = 'text';
%mondata.skip = 10;
%mondata.update = 100;
%options = CVodeSetOptions(options,'MonitorFn',@CVodeMonitor,'MonitorData',mondata);
t1=0.4;
tmult = 10.0;
nout = 5;
for k=1:nbreExp
%Definition des parametre a etudie de mon edo
param.Ca=paramSet(k,1);
param.Cb=paramSet(k,2);
param.Ceps=paramSet(k,3);
CVodeMalloc(@fonctionSum,t0,y0,options,param);
tout = t1;
iout = 0;
while iout < nout
[status,t,y] = CVode(tout,'Normal');
% Extract statistics
% si = CVodeGetStats;
%Update output time
if(status == 0)
iout = iout+1;
%tout = tout+dt;%
tout =tout*tmult;
end
end
si = CVodeGetStats;
CVodeFree;
% POur chaque jeux de parametre je stoke les solution
dim_t=size(res,1);
Fnc(k,1:nbs)=transpose(y(1:nbs));
Fc(k,1:nbs)=transpose(y(nbs+1:2*nbs));
Mc(k,1:nbs)=transpose(y(2*nbs+1:3*nbs));
end
%% Partie traitement des resultats
Je ne l'ai pas mis |