Bonjour Sacabouffe,
je pense que ca marche cette fois ci, mais ce n'est que le début de mon travail, la suite et bien plus complique !!!!!!!!!!!!!!!!
je t'envoie le programme :
""""""""""""""""""""""""""""""""" jghk.m""""""""""""""""""""""""""""""""""""""""""""""""""""
function jghki = jghk(pi,zi,cout,cin,psii)
%JGHK Summary of this function goes here
% Detailed explanation goes here
% FRT in 1/mV
% psi in mV (reference in outside bath)
% pi (permeability) in cm/s
% jghk then in micromoles/s/cm2
FRT = 0.037442;
if (abs(psii) < 0.001)
jghki = pi*(cout-cin);
else
jghki = -pi*zi*FRT*psii.*(cout - cin.*exp(zi*FRT*psii))./(1-exp(zi*FRT*psii));
end
end
""""""""""""""""""""""""""""jnapump.m"""""""""""""""""""""""""""""
function Jnapump = jnapump(vmax,cout,km)
Jnapump = (vmax*cout)./(km+cout);
end
"""""""""""""""""""""""""""""dnaclpsi.m"""""""""""""""""""""
function dydt = dnaclpsi(t,y)
%This calculates the RHS of the ODEs for
% NaCl diffusion across a GHK membrane.
% Psi is treated as a variable, so this system is stiff.
% method ode15s works with this, but ode45 does not.
%
%cna1 = y(1)/vol1 ; % mmol/l = umol/ml (i.e., qna1 is in umol)
%cna2 = y(2)/vol2 ; % mmol/l = umol/ml (i.e., qna2 is in umol)
%cna3 = y(3)/vol3 ; % mmol/l = umol/ml (i.e., qna3 is in umol)
%ccl1 = y(4)/vol1 ; % mmol/l = umol/ml (i.e., qcl1 is in umol)
%ccl2 = y(5)/vol2 ; % mmol/l = umol/ml (i.e., qcl2 is in umol)
%ccl3 = y(6)/vol3 ; % mmol/l = umol/ml (i.e., qcl3 is in umol)
%psi1 = y(7);
%psi2 = y(8);
global vol1 vol2 vol3 pna pcl zna zcl areaMem gammaMem faraday vmax km;
jna1 = areaMem*jghk(pna,zna,y(1)/vol1,y(2)/vol2,y(7))+ areaMem*jnapump(vmax,y(1)/vol1,km);
jna2 = areaMem*jghk(pna,zna,y(2)/vol2,y(3)/vol3,y(8));
jcl1 = areaMem*jghk(pcl,zcl,y(4)/vol1,y(5)/vol2,y(7));
jcl2 = areaMem*jghk(pcl,zcl,y(5)/vol2,y(6)/vol3,y(8));
Itot1 = faraday*(zna*jna1 + zcl*jcl1);
Itot2 = faraday*(zna*jna2 + zcl*jcl2);
dydt = [ -jna1
jna1-jna2
jna2
-jcl1
jcl1-jcl2
jcl2
Itot1/gammaMem
Itot2/gammaMem];
end %dnaclpsi
""""""""""""""""""""""""""""""""""""""""""""""main.m""""""""""""""""""""""""""""""""""""""
global vol1 vol2 vol3 pna pcl zna zcl areaMem gammaMem faraday vmax km;
cnacl1init = 50.0 ; %mmol/l, initial NaCl concentration in bath 1
cnacl2init = 20.0 ; %mmol/l, initial NaCl concentration in bath 2
cnacl3init = 0.0 ; %mmol/l, initial NaCl concentration in bath 3
vol1 = 20 ; %ml
vol2 = 10 ; %ml
vol3 = 10 ; %ml
qna1init = cnacl1init * vol1;
qna2init = cnacl2init * vol2;
qna3init = cnacl3init * vol3;
qcl1init = cnacl1init * vol1;
qcl2init = cnacl2init * vol2;
qcl3init = cnacl3init * vol3;
psi1Init = 18; %mv
psi2Init = 0; %mv
FRT = 0.037442 ; %1/mV
faraday = 96.5 ; %coul/mmol = mcoul/umol1.0
pna=0.1 ; %cm/sec = cm3/(cm2 sec)
pcl = pna/2 ; %cm/sec = cm3/(cm2 sec)
zcl=-1;
zna=1;
gammaMem = 1e-6; %; memCapacitance = 1e-6 farads/cm2
areaMem = 1.0 ; %cm2
vmax = 7;
km = 10;
tspan = [0 2000];
y0 = [qna1init; qna2init; qna3init; qcl1init; qcl2init; qcl3init;
psi1Init; psi2Init];
[T,Y] = ode15s(@dnaclpsi,tspan,y0);
cna1 = Y(:,1)/vol1;
cna2 = Y(:,2)/vol2;
cna3 = Y(:,3)/vol3;
ccl1 = Y(:,4)/vol1;
ccl2 = Y(:,5)/vol2;
ccl3 = Y(:,6)/vol3;
psi1 = Y(:,7);
psi2 = Y(:,8);
jnap = areaMem*jnapump(vmax,cna1,km);
jnaghk1 = areaMem*jghk(pna,zna,cna1,cna2,psi1);
jnaghk2 = areaMem*jghk(pna,zna,cna2,cna3,psi2);
jclghk1 = areaMem*jghk(pcl,zcl,ccl1,ccl2,psi1);
jclghk2 = areaMem*jghk(pcl,zcl,ccl2,ccl3,psi2);
subplot(3,2,1);plot(T,cna1,'r',T,cna2,'-.g',T,cna3,'--b', 'DisplayName','Na in baths 1 & 2 & 3');grid; figure(gcf)
legend('cna1','cna2','cna3')
xlabel('temps en s')
ylabel('[Na+] en mmol/l')
title('variation de la concentration du sodium en fonction du temps')
subplot(3,2,2);plot(T,psi1,'r',T,psi2,'-.b', 'DisplayName', 'psi in baths 1 & 2 & 3');grid; figure(gcf)
legend('psi1','psi2')
xlabel('temps en s')
ylabel('psi en mV')
title('variation de psi en fonction du temps')
subplot(3,2,3);plot(T,ccl1,'r',T,ccl2,'-.g',T,ccl3,'--b', 'DisplayName','Cl in baths 1 & 2 & 3');grid; figure(gcf)
legend('ccl1','ccl2','ccl3')
xlabel('temps en s')
ylabel('[cl-] en mmol/l')
title('variation de la concentration du chlore en fonction du temps')
subplot(3,2,4);plot(T,jnap,'r',T,jnaghk1,'-.g',T,jnaghk2,'--b','DisplayName','jnaghk in baths 1 & 2 & 3');grid; figure(gcf)
legend('jnap','jnaghk1','jnaghk2')
xlabel('temps en s')
ylabel('jna en micromoles/s/cm2')
title('variation jna en fonction du temps')
subplot(3,2,5);plot(T,jclghk1,'-.g',T,jclghk2,'--b','DisplayName','jclghk in baths 1 & 2 & 3');grid; figure(gcf)
legend('jclghk1','jclghk2')
xlabel('temps en s')
ylabel('jcl en micromoles/s/cm2')
title('variation jcl en fonction du temps')
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
si tu peut ,si besoin de savoir comment je peut utiliser "varargout" et "varargin" dans un programme matlab???????????????
je te remercie vraiment de ton aide
A plus